{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/logo_wwt.png","webpack:///../engine-vuex/dist/index.umd.js","webpack:///./src/FolderView.vue?28db","webpack:///../engine/src/index.js","webpack:///./src/assets/logo_github.png","webpack:///./src/Embed.vue?b9ab","webpack:///./src/assets/logo_aas.png","webpack:///../engine-types/src/index.ts","webpack:///.-common/src/index.ts","webpack:///./src/Embed.vue?2a53","webpack:///./src/FolderView.vue?d18c","webpack:///./src/FolderView.vue?e419","webpack:///./src/FolderView.vue?f87a","webpack:///./src/FolderView.vue","webpack:///./src/Embed.vue?8635","webpack:///../astro/src/index.ts","webpack:///./src/Embed.vue?17c7","webpack:///./src/Embed.vue","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","root","factory","self","__WEBPACK_EXTERNAL_MODULE__8bbf__","__WEBPACK_EXTERNAL_MODULE__9889__","__webpack_exports__","ImagesetInfo","store_ImageSetLayerState","SpreadSheetLayerInfo","store_WWTEngineVuexModule","wwtaware_WWTAwareComponent","src_Component","createPlugin","currentScript","match","extendStatics","b","setPrototypeOf","__proto__","Array","__extends","__","this","constructor","__assign","assign","arguments","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__awaiter","thisArg","_arguments","P","generator","adopt","step","next","rejected","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","__values","__read","ar","external_commonjs_vue_commonjs2_vue_root_Vue_","external_commonjs_vue_commonjs2_vue_root_Vue_default","addPropertiesToObject","source","_loop_1","k","_i","_a","keys","getModuleName","_vmdModuleName","VuexModule","actions","mutations","state","getters","namespaced","getModule","moduleClass","store","moduleName","_statics","genStatic","_genStatic","storeModule","reservedKeys","stateFactory","forEach","indexOf","esm_awaiter","esm_generator","esm_spreadArrays","il","a","jl","staticStateGenerator","modOpt","statics","staticGetterGenerator","staticMutationGenerator","args","commit","staticActionGenerators","_b","dispatch","registerDynamicModule","registerModule","preserveState","moduleDecoratorFactory","moduleOptions","stateFactory$1","getOwnPropertyNames","funcName","descriptor","rootState","rootGetters","thisObj","context","got","dynamic","Module","modOrOpt","actionDecoratorFactory","params","_c","rawError","_d","actionFunction","action","payload","actionPayload","moduleAccessor","e_1","toString","stack","handler","Action","targetOrParams","Mutation","mutationFunction","mutation","mutationActionDecoratorFactory","mutactFunction","mutate","stateItem","MutationAction","paramsOrTarget","AltTypes","AltUnits","BandPass","Classification","CoordinatesType","DataTypes","FadeType","FolderGroup","FolderRefreshType","FolderType","ImageSetType","MarkerScales","PlotTypes","PointScaleTypes","ProjectionType","RAUnits","ReferenceFrames","ReferenceFrameTypes","ScaleTypes","SolarSystemObjects","PI","R2D","D2R","R2H","H2R","D2H","engine_root_wwtlib_","layerSettingNames","copyLayerSettings","dest","e_2","layerSettingNames_2","layerSettingNames_2_1","e_2_1","return","LayerState","get_astronomical","astronomical","set_astronomical","get_color","color","set_color","get_enabled","enabled","set_enabled","get_endTime","endTime","set_endTime","get_fadeSpan","fadeSpan","set_fadeSpan","get_fadeType","fadeType","set_fadeType","get_name","set_name","get_opacity","opacity","set_opacity","get_opened","opened","set_opened","get_referenceFrame","referenceFrame","set_referenceFrame","get_startTime","startTime","set_startTime","get_version","version","set_version","justImageSetLayerSettingNames","concat","applyImageSetLayerSetting","layer","setting","copyImageSetLayerSettings","justImageSetLayerSettingNames_2","justImageSetLayerSettingNames_2_1","imagesetlayer_ImageSetLayerState","_super","ImageSetLayerState","_this","get_colorMapperName","colorMapperName","set_colorMapperName","get_overrideDefaultLayer","overrideDefaultLayer","set_overrideDefaultLayer","justSpreadSheetLayerSettingNames","applySpreadSheetLayerSetting","copySpreadSheetLayerSettings","justSpreadSheetLayerSettingNames_2","justSpreadSheetLayerSettingNames_2_1","spreadsheetlayer_SpreadSheetLayerState","SpreadSheetLayerState","get_altColumn","altColumn","set_altColumn","get_altType","altType","set_altType","get_altUnit","altUnit","set_altUnit","get_barChartBitmask","barChartBitmask","set_barChartBitmask","get_beginRange","beginRange","set_beginRange","get_cartesianCustomScale","cartesianCustomScale","set_cartesianCustomScale","get_cartesianScale","cartesianScale","set_cartesianScale","get_colorMapColumn","colorMapColumn","set_colorMapColumn","get_coordinatesType","coordinatesType","set_coordinatesType","get_decay","decay","set_decay","get_dynamicColor","dynamicColor","set_dynamicColor","get_dynamicData","dynamicData","set_dynamicData","get_endDateColumn","endDateColumn","set_endDateColumn","get_endRange","endRange","set_endRange","get_geometryColumn","geometryColumn","set_geometryColumn","get_hyperlinkColumn","hyperlinkColumn","set_hyperlinkColumn","get_hyperlinkFormat","hyperlinkFormat","set_hyperlinkFormat","get_latColumn","latColumn","set_latColumn","get_lngColumn","lngColumn","set_lngColumn","get_markerColumn","markerColumn","set_markerColumn","get_markerIndex","markerIndex","set_markerIndex","get_markerScale","markerScale","set_markerScale","get_nameColumn","nameColumn","set_nameColumn","get_normalizeColorMap","normalizeColorMap","set_normalizeColorMap","get_normalizeColorMapMax","normalizeColorMapMax","set_normalizeColorMapMax","get_normalizeColorMapMin","normalizeColorMapMin","set_normalizeColorMapMin","get_normalizeSize","normalizeSize","set_normalizeSize","get_normalizeSizeClip","normalizeSizeClip","set_normalizeSizeClip","get_normalizeSizeMax","normalizeSizeMax","set_normalizeSizeMax","get_normalizeSizeMin","normalizeSizeMin","set_normalizeSizeMin","get_plotType","plotType","set_plotType","get_pointScaleType","pointScaleType","set_pointScaleType","get_raUnits","raUnits","set_raUnits","get_scaleFactor","scaleFactor","set_scaleFactor","get_showFarSide","showFarSide","set_showFarSide","get_sizeColumn","sizeColumn","set_sizeColumn","get_startDateColumn","startDateColumn","set_startDateColumn","get_timeSeries","timeSeries","set_timeSeries","get_xAxisColumn","xAxisColumn","set_xAxisColumn","get_xAxisReverse","xAxisReverse","set_xAxisReverse","get_yAxisColumn","yAxisColumn","set_yAxisColumn","get_yAxisReverse","yAxisReverse","set_yAxisReverse","get_zAxisColumn","zAxisColumn","set_zAxisColumn","get_zAxisReverse","zAxisReverse","set_zAxisReverse","annotationSettingNames","copyAnnotationSettings","annotationSettingNames_2","annotationSettingNames_2_1","AnnotationState","get_id","id","set_id","get_label","set_label","get_showHoverLabel","showHoverLabel","set_showHoverLabel","get_tag","tag","set_tag","justCircleAnnotationSettingNames","copyCircleAnnotationSettings","justCircleAnnotationSettingNames_2","justCircleAnnotationSettingNames_2_1","CircleAnnotationState","get_fill","fill","set_fill","get_fillColor","fillColor","set_fillColor","get_lineColor","lineColor","set_lineColor","get_lineWidth","lineWidth","set_lineWidth","get_radius","radius","set_radius","get_skyRelative","skyRelative","set_skyRelative","engineSettingNames","copyEngineSettings","engineSettingNames_2","engineSettingNames_2_1","EngineState","get_actualPlanetScale","actualPlanetScale","set_actualPlanetScale","get_constellationArtFilter","constellationArtFilter","set_constellationArtFilter","get_constellationBoundariesFilter","constellationBoundariesFilter","set_constellationBoundariesFilter","get_constellationFigureColor","constellationFigureColor","set_constellationFigureColor","get_constellationFiguresFilter","constellationFiguresFilter","set_constellationFiguresFilter","get_constellationBoundryColor","constellationBoundryColor","set_constellationBoundryColor","get_constellationNamesFilter","constellationNamesFilter","set_constellationNamesFilter","get_constellations","constellations","set_constellations","get_constellationSelectionColor","constellationSelectionColor","set_constellationSelectionColor","get_constellationsEnabled","constellationsEnabled","set_constellationsEnabled","get_crosshairsColor","crosshairsColor","set_crosshairsColor","get_earthCutawayView","earthCutawayView","set_earthCutawayView","get_galacticMode","galacticMode","set_galacticMode","get_localHorizonMode","localHorizonMode","set_localHorizonMode","get_locationAltitude","locationAltitude","set_locationAltitude","get_locationLat","locationLat","set_locationLat","get_locationLng","locationLng","set_locationLng","get_milkyWayModel","milkyWayModel","set_milkyWayModel","get_minorPlanetsFilter","minorPlanetsFilter","set_minorPlanetsFilter","get_planetOrbitsFilter","planetOrbitsFilter","set_planetOrbitsFilter","get_showAltAzGrid","showAltAzGrid","set_showAltAzGrid","get_showAltAzGridText","showAltAzGridText","set_showAltAzGridText","get_showConstellationBoundries","showConstellationBoundries","set_showConstellationBoundries","get_showConstellationFigures","showConstellationFigures","set_showConstellationFigures","get_showConstellationLabels","showConstellationLabels","set_showConstellationLabels","get_showConstellationPictures","showConstellationPictures","set_showConstellationPictures","get_showConstellations","showConstellations","set_showConstellations","get_showConstellationSelection","showConstellationSelection","set_showConstellationSelection","get_showCrosshairs","showCrosshairs","set_showCrosshairs","get_showEarthSky","showEarthSky","set_showEarthSky","get_showEcliptic","showEcliptic","set_showEcliptic","get_showEclipticGrid","showEclipticGrid","set_showEclipticGrid","get_showEclipticGridText","showEclipticGridText","set_showEclipticGridText","get_showEclipticOverviewText","showEclipticOverviewText","set_showEclipticOverviewText","get_showElevationModel","showElevationModel","set_showElevationModel","get_showEquatorialGridText","showEquatorialGridText","set_showEquatorialGridText","get_showGalacticGrid","showGalacticGrid","set_showGalacticGrid","get_showGalacticGridText","showGalacticGridText","set_showGalacticGridText","get_showGrid","showGrid","set_showGrid","get_showHorizon","showHorizon","set_showHorizon","get_showISSModel","showISSModel","set_showISSModel","get_showPrecessionChart","showPrecessionChart","set_showPrecessionChart","get_showSkyGrids","showSkyGrids","set_showSkyGrids","get_showSkyOverlays","showSkyOverlays","set_showSkyOverlays","get_showSkyOverlaysIn3d","showSkyOverlaysIn3d","set_showSkyOverlaysIn3d","get_showSkyNode","showSkyNode","set_showSkyNode","get_showSolarSystem","showSolarSystem","set_showSolarSystem","get_smoothPan","smoothPan","set_smoothPan","get_solarSystemCMB","solarSystemCMB","set_solarSystemCMB","get_solarSystemCosmos","solarSystemCosmos","set_solarSystemCosmos","get_solarSystemLighting","solarSystemLighting","set_solarSystemLighting","get_solarSystemMilkyWay","solarSystemMilkyWay","set_solarSystemMilkyWay","get_solarSystemMinorPlanets","solarSystemMinorPlanets","set_solarSystemMinorPlanets","get_solarSystemMultiRes","solarSystemMultiRes","set_solarSystemMultiRes","get_solarSystemOrbits","solarSystemOrbits","set_solarSystemOrbits","get_solarSystemOverlays","solarSystemOverlays","set_solarSystemOverlays","get_solarSystemPlanets","solarSystemPlanets","set_solarSystemPlanets","get_solarSystemScale","solarSystemScale","set_solarSystemScale","get_solarSystemStars","solarSystemStars","set_solarSystemStars","get_solarSystemMinorOrbits","solarSystemMinorOrbits","set_solarSystemMinorOrbits","justPolyAnnotationSettingNames","copyPolyAnnotationSettings","justPolyAnnotationSettingNames_2","justPolyAnnotationSettingNames_2_1","PolyAnnotationState","justPolyLineAnnotationSettingNames","copyPolyLineAnnotationSettings","justPolyLineAnnotationSettingNames_2","justPolyLineAnnotationSettingNames_2_1","PolyLineAnnotationState","justVoTableLayerSettingNames","copyVoTableLayerSettings","justVoTableLayerSettingNames_2","justVoTableLayerSettingNames_2_1","VoTableLayerState","get_autoUpdate","autoUpdate","set_autoUpdate","get_dataSourceUrl","dataSourceUrl","set_dataSourceUrl","initControlDefaults","elId","startInternalRenderLoop","startLatDeg","startLngDeg","startZoomDeg","startMode","SavedPromise","src_WWTInstance","WWTInstance","options","readyPromises","readyFired","arrivePromises","arriveSeqnum","collectionLoadedPromises","collectionRequests","Map","tourReadyPromises","tourReadySeqnum","tourEndedCallback","si","initControl6","ctl","singleton","lm","stc","applySetting","add_ready","_si","e_1_1","add_arrived","_args","add_tourReady","e_3","e_3_1","add_tourEnded","_tpclass","tp","getActiveTourPlayer","waitForReady","makeArrivePromise","instantResolve","e_4","seq","e_4_1","gotoRADecZoom","raRad","decRad","zoomDeg","instant","rollRad","gotoTarget","place","noZoom","trackObject","loadImageCollection","url","loadChildFolders","curState","holder_1","set","getWtmlFile","filter","addImageSetLayer","_reject","goto","setImageSetLayerOrder","order","stretchFitsLayer","get_layerList","setImageScalePhysical","stretch","vmin","vmax","fits","getFitsImage","get_imageSet","get_fitsProperties","transparentBlack","setFitsLayerColormap","applyFitsLayerSettings","e_5","settings","e_5_1","updateTableLayer","updateData","dataCsv","applyTableLayerSettings","e_6","e_6_1","addCatalogHipsByName","imgset","getImagesetByName","renderContext","addCatalogHips","getCatalogHipsDataInView","imageset","limit","msg","setBackgroundImageByName","imagesetName","setForegroundImageByName","setForegroundOpacity","setupForImageset","bkg","imageHeightDeg","background","getDefaultImageset","foreground","get_dataSetType","get_bandPass","get_levels","get_baseTileDegrees","get_offsetY","set_type","set_backgroundImageset","set_studyImageset","sky","set_RA","get_centerX","set_dec","get_centerY","set_zoomLevel","earth","planet","set_lng","set_lat","uiController","getIsTourPlaying","_player","get_playing","loadTour","e_7","e_7_1","loadAndPlayTour","e_8","playTour","e_8_1","getEffectiveTourTimecode","player","tour","get_tour","idx","get_currentTourstopIndex","base","elapsedTimeTillTourstop","stop","get_tourStops","delta","get_tweenPosition","get_duration","runTime","get_runTime","seekToTourTimecode","stops","index","tStart","playFromTourstop","store_WWTGlobalState","WWTGlobalState","inst","onLinkedCallbacks","link","cb","unlink","description","extension","fromImageset","get_url","get_creditsText","get_extension","get_hipsProperties","get_catalogSpreadSheetLayer","setName","guidText","scaleType","lowerCut","upperCut","colormapName","colorMapName","getGuid","activeLayersList","$wwt","layers","accum","_e","entries","childMaps","_f","_g","sublm","rootlm","get_allMaps","getCurrentReferenceFrame","availableImagesets","getImageSets","map","spreadSheetLayerByKey","catalogLayerKey","catalog","WWTEngineVuexModule","backgroundImageset","clockDiscontinuities","clockRate","currentTime","Date","foregroundImageset","foregroundOpacity","isTourPlayerActive","isTourPlaying","renderType","timeAtStartup","now","tourCompletions","tourRunTime","tourStopStartTimes","tourTimecode","showWebGl2Warning","activeLayers","imagesetLayers","spreadSheetLayers","configurable","pt","coords","getCoordinatesForScreenPoint","x","ra","dec","internalLinkToInstance","wwt","internalUnlinkFromInstance","internalUpdate","getRA","getDec","viewCamera","zoom","rotation","bg","get_backgroundImageset","time","get_now","fg","get_foregroundImageset","isUsingWebGl2","internalIncrementTourCompletions","factor","move","tilt","_tilt","setTime","set_now","setClockRate","rate","get_timeRate","set_timeRate","setClockSync","isSynced","get_syncToClock","set_syncToClock","startTour","play","toggleTourPlayPauseState","pauseTour","setTourPlayerLeaveSettingsWhenStopped","set_leaveSettingsWhenStopped","waitThenResolve","setTrackedObject","obj","set_solarSystemTrack","nStops","updateAvailableImagesets","deleteLayer","stringId","guid","fromString","deleteLayerByID","delete","guidtext","states","viewAsTourXml","editor","blob","reader","tourXml","createTour","tourEdit","addSlide","saveToBlob","FileReader","readAsText","onloadend","wwtLayer","loadFitsLayer","addImageSetLayerOptions","createTableLayer","prom","createSpreadsheetLayer","meters","createFrom","hips","info","find","removeCatalogHipsByName","addAnnotation","ann","removeAnnotation","clearAnnotations","_typeof","_defineProperty","writable","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","isArray","arr2","iter","from","reflectionIsSupported","defineMetadata","getOwnMetadataKeys","copyReflectionMetadata","to","forwardMetadata","propertyKey","metaKeys","metaKey","metadata","getOwnMetadata","fakeArray","hasProto","createDecorator","Ctor","__decorators__","isPrimitive","collectDataFromConstructor","vm","Component","originalInit","_init","$options","props","plainData","$internalHooks","componentFactory","_componentTag","proto","methods","mixins","computed","fn","superProto","getPrototypeOf","Super","Extended","extend","forwardStaticMembers","shouldIgnore","callee","caller","Original","extendedDescriptor","superDescriptor","vue_class_component_esm_Component","registerHooks","vue_class_component_esm","reflectMetadataIsSupported","getMetadata","applyMetadata","Prop","componentOptions","vuex_esm","WWTAwareComponent","beforeCreate","namespace","propsData","wwtNamespace","mapActions","mapGetters","mapMutations","mapState","wwtActiveLayers","_getters","wwtAvailableImagesets","wwtBackgroundImageset","wwtCurrentTime","wwtClockDiscontinuities","wwtClockRate","wwtDecRad","wwtForegroundImageset","wwtForegroundOpacity","wwtImagesetLayers","wwtIsTourPlayerActive","wwtIsTourPlaying","wwtRARad","wwtRenderType","wwtRollRad","wwtTourCompletions","wwtTourRunTime","wwtTourStopStartTimes","wwtTourTimecode","wwtZoomDeg","wwtShowWebGl2Warning","wwtSpreadSheetLayers","default","Componentvue_type_template_id_16ec744e_render","_vm","_h","$createElement","_self","staticClass","attrs","uniqueId","staticRenderFns","idCounter","Componentvue_type_script_lang_ts_WWTComponent","WWTComponent","uid","defineProperties","mounted","render","renderLoopId","requestAnimationFrame","renderOneFrame","nextTick","_tp","destroyed","cancelAnimationFrame","Componentvue_type_script_lang_ts_","src_Componentvue_type_script_lang_ts_","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","shadowRoot","_injectStyles","originalRender","h","existing","component","install","Vue","global","applyMixin","Number","split","mixin","vuexInit","init","$store","createNamespacedHelpers","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","emit","on","targetState","replaceState","subscribe","prepend","subscribeAction","forEachValue","isObject","isPromise","val","partial","arg","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors","addChild","removeChild","getChild","hasChild","update","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","path","targetModule","newModule","reduce","getNamespace","this$1","rawChildModule","unregister","child","isRegistered","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","ref","installModule","resetStoreVM","plugin","useDevtools","devtools","config","prototypeAccessors$1","genericSubscribe","subs","unshift","resetStore","hot","oldVm","wrappedGetters","silent","$$state","enableStrictMode","_withCommit","_data","$destroy","isRoot","parentState","getNestedState","local","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","entry","res","catch","rawGetter","$watch","deep","sync","_Vue","sub","before","after","watch","unregisterModule","hasModule","hotUpdate","newOptions","committing","normalizeNamespace","normalizeMap","getModuleByNamespace","vuex","len","isValidMap","charAt","helper","Function","_ss","_nop","isValue","_value","items","parseBoolean","toLowerCase","parseRegExp","endSlashIndex","lastIndexOf","expression","substring","flags","substr","RegExp","parseNumber","endsWith","parseFloat","parseInt","parseDate","parse","isNaN","truncate","Math","floor","ceil","today","getFullYear","getMonth","getDate","compareDates","d1","d2","getTime","_popStackFrame","fileName","lineNumber","stackFrames","currentFrame","pattern","nextFrame","nextFrameParts","join","errorInfo","innerException","fail","assert","navigator","eval","toArray","JSON","removeItem","item","clearKeys","keyExists","keyCount","Enumerator","lookup","current","moveNext","reset","_nopEnumerator","enumerate","getEnumerator","Stack","count","_items","Stack$","clear","contains","reverse","peek","Queue","_offset","_cleanQueue","q","Queue$","dequeue","enqueue","string","arg1","arg2","emptyString","whitespace","replace","compareStrings","s1","s2","ignoreCase","toUpperCase","_formatPlaceHolderRE","_formatters","format","cultureOrFormat","culture","neutralCulture","values","String","str","formatter","typeName","formatSpec","formatIndex","toLocaleString","trim","tc","trimStart","trimEnd","startsWith","prefix","suffix","padLeft","totalWidth","ch","padRight","removeString","insertString","replaceString","oldValue","newValue","_bindList","fnList","_fnList","cache","$$b","binding","bindAdd","bindSub","bindExport","multiUse","valueOf","exp","detach","dispose","EventArgs","CancelEventArgs","cancel","IDisposable","IEnumerable","IEnumerator","IObserver","IApplication","IContainer","IObjectFactory","IEventManager","IInitializable","StringBuilder","_parts","isEmpty","Empty","StringBuilder$","append","appendLine","_observerStack","_observerRegistration","_captureObservers","observers","registeredObservers","observerCount","observer","_invalidateObservers","invalidateObserver","Observable","_v","_observers","Observable$","getValue","setValue","ObservableCollection","registerObserver","ObservableCollection$","get_item","set_item","_updated","get_length","insert","remove","removeAt","Task","_continuations","status","Task$","get_completed","changeWith","continuation","task","continueWith","_updateTask","callback","doneCallback","failCallback","continuations","_joinTasks","tasks","any","interval","joinTask","seen","deferred","delay","timerTask","nf","nan","neg","pos","negInf","posInf","gw","dd","ds","gs","per","perGW","perDD","perDS","perGS","perPP","perNP","cur","curGW","curDD","curDS","curGS","curNP","curPP","dtf","am","pm","ts","gmt","uni","sort","dt","ld","sd","lt","st","day0","day","sday","mday","mon","smon","currentCulture","_commaFormatNumber","number","groups","decimal","comma","decimalPart","decimalIndex","negative","groupIndex","groupSize","startIndex","part","precision","fs","abs","toExponential","toFixed","_dateFormatRE","toISOString","fnName","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","sb","lastIndex","exec","getDay","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","_classMarker","_interfaceMarker","createType","typeInfo","typeRegistry","baseType","anonymous","$base","$interfaces","$type","$name","isClass","isInterface","typeOf","instance","ctor","ex","nsIndex","_typeNames","Boolean","canAssign","otherType","interfaces","instanceOf","instanceType","canCast","safeCast","ss_module","implementation","registry","api","array","boolean","regexp","date","neutral","ss","_exports_object","define","deps","Enums","_wwtlib","DAY_OF_WEEK","SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","EO","SUN","MERCURY","VENUS","MARS","JUPITER","SATURN","URANUS","NEPTUNE","PLUTO","linear","log","power","squareRoot","histogramEqualization","URLRewriteMode","asIfAbsolute","originRelative","sun","mercury","venus","mars","jupiter","saturn","uranus","neptune","pluto","moon","io","europa","ganymede","callisto","ioShadow","europaShadow","ganymedeShadow","callistoShadow","sunEclipsed","custom","InterpolationType","easeIn","easeOut","easeInOut","exponential","defaultV","PointType","line","dash","start","LocationHint","slash","backslash","top","explorer","search","constellation","view","goTo","community","voTable","imageStack","conditionalGet","viewChange","panorama","ThumbnailSize","small","big","CullMode","none","counterClockwise","clockwise","constant","stellarMagnitude","mercator","equirectangular","tangent","tan","toast","spherical","skyImage","plotted","healpix","solarSystem","sandbox","gamma","xRay","ultraviolet","visible","hydrogenAlpha","IR","microwave","radio","visibleNight","star","supernova","blackHole","neutronStar","doubleStar","multipleStars","asterism","openCluster","globularCluster","nebulousCluster","nebula","emissionNebula","planetaryNebula","reflectionNebula","darkNebula","giantMolecularCloud","supernovaRemnant","interstellarDust","quasar","galaxy","spiralGalaxy","irregularGalaxy","ellipticalGalaxy","knot","plateDefect","clusterOfGalaxies","otherNGC","unidentified","unfiltered","stellar","stellarGroupings","nebulae","galactic","other","byteT","int16T","int32T","floatT","doubleT","feet","inches","miles","kilometers","astronomicalUnits","lightYears","parsecs","megaParsecs","fadeIn","fadeOut","both","ecliptic","identity","fixedSherical","orbital","trajectory","synodic","CoordinatesTypes","rectangular","depth","altitude","distance","seaLevel","terrain","MarkerMixes","same_For_All","ColorMaps","group_by_Values","per_Column_Literal","gaussian","point","circle","square","pushPin","screen","world","hours","degrees","Primitives","voBoolean","voBit","voUnsignedByte","voShort","voInt","voLong","voChar","voUnicodeChar","voFloat","voDouble","voFloatComplex","voDoubleComplex","voUndefined","Alignment","center","left","StockSkyOverlayTypes","empty","equatorialGrid","equatorialGridText","galacticGrid","galacticGridText","eclipticGrid","eclipticGridText","eclipticOverview","eclipticOverviewText","precessionChart","altAzGrid","altAzGridText","constellationFigures","constellationBoundaries","constellationFocusedOnly","constellationNames","constellationPictures","fadeToBlack","fadeToLogo","fadeToGradient","screenBroadcast","fadeRemoteOnly","skyGrids","solarSystemAsteroids","showEarthCloudLayer","showAtmosphere","multiResSolarSystemBodies","auroraBorialis","earthCutAway","clouds8k","filedOfView","mpcZone1","mpcZone2","mpcZone3","mpcZone4","mpcZone5","mpcZone6","mpcZone7","orbitFilters","OverlayAnchor","AudioType","music","voice","ShapeType","rectagle","donut","arrow","openRectagle","LoopTypes","loop","upDown","down","upDownOnce","once","begin","end","SelectionAnchor","topLeft","topRight","right","bottomRight","bottom","bottomLeft","rotate","TextBorderStyle","tight","medium","large","UserLevel","beginner","intermediate","advanced","educator","professional","TransitionType","slew","crossFade","crossCut","fadeOutIn","Keys","modifiers","lButton","rButton","mButton","xButton1","xButton2","back","tab","lineFeed","clearKey","returnKey","enter","shiftKey","controlKey","menu","pause","capital","capsLock","kanaMode","hanguelMode","hangulMode","junjaMode","finalMode","hanjaMode","kanjiMode","escape","imeConvert","imeNonconvert","imeAccept","imeAceept","imeModeChange","space","prior","pageUp","pageDown","home","up","select","print","execute","snapshot","printScreen","insertKey","deleteKey","help","d0","d3","d4","d5","d6","d7","d8","d9","u","w","z","lWin","rWin","apps","sleep","numPad0","numPad1","numPad2","numPad3","numPad4","numPad5","numPad6","numPad7","numPad8","numPad9","multiply","separator","subtract","divide","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20","f21","f22","f23","f24","numLock","scroll","lShiftKey","rShiftKey","lControlKey","rControlKey","lMenu","rMenu","browserBack","browserForward","browserRefresh","browserStop","browserSearch","browserFavorites","browserHome","volumeMute","volumeDown","volumeUp","mediaNextTrack","mediaPreviousTrack","mediaStop","mediaPlayPause","launchMail","selectMedia","launchApplication1","launchApplication2","oemSemicolon","oem1","oemplus","oemcomma","oemMinus","oemPeriod","oemQuestion","oem2","oemtilde","oem3","oemOpenBrackets","oem4","oemPipe","oem5","oemCloseBrackets","oem6","oemQuotes","oem7","oem8","oemBackslash","oem102","processKey","packet","attn","crsel","exsel","eraseEof","noName","pa1","oemClear","keyCode","control","alt","DialogResult","OK","Formatting","indented","StateType","pending","received","IFolder","IThumbnail","IPlace","IUiController","IViewMover","IUIServicesCallbacks","ISettings","IUndoStep","Imports","GFX","ABR","earthVelocity","JD","T","L2","L3","L4","L5","L6","L7","L8","Ldash","D","Mdash","F","velocity","C3D","nAberrationCoefficients","g_ACft","Argument","l2","l3","l4","l5","l6","l7","l8","ldash","mdash","xsin","xsint","sin","xcos","xcost","cos","ysin","ysint","ycos","ycost","zsin","zsint","zcos","zcost","eclipticAberration","Lambda","Beta","aberration","COR","Tsquared","pi","SunLongitude","CAASun","geometricEclipticLongitude","CT","d2R","equatorialAberration","Alpha","Delta","cosAlpha","sinAlpha","cosDelta","sinDelta","r2H","r2D","ABR$","ACFT","ACFT$","ASEP","separation","Alpha1","Delta1","Alpha2","Delta2","h2R","vvalue","atan2","sqrt","positionAngle","alpha1","delta1","alpha2","delta2","DeltaAlpha","demoninator","numerator","distanceFromGreatArc","Alpha3","Delta3","X1","X2","Y1","Y2","Z1","Z2","A","B","C","asin","ASEP$","COR$","C3D$","eq2Ec","Epsilon","Ecliptic","ec2Eq","Equatorial","eq2H","LocalHourAngle","Latitude","Horizontal","h2Eq","Azimuth","Altitude","eq2G","h2D","Galactic","g2Eq","d2H","Degrees","Radians","Hours","m360","m24","HourAngle","dmS2D","Minutes","Seconds","dmS2Dp","bPositive","CT$","CalD","year","month","CalD$","DT","m_dblJulian","m_bGregorianCalendar","Year","Month","Day","bGregorianCalendar","createHMS","Hour","Minute","Second","createJD","setJD","dateToJD","Y","M","isLeap","afterPapalReform","afterPapalReformJD","dayOfYearJD","daysInMonthForMonth","bLeap","MonthLength","INT","DT$","julian","hour","minute","second","dblDay","setInGregorianCalendar","bAfterPapalReform","tempZ","Z","alpha","E","dayOfWeek","dayOfYear","daysInMonth","daysInYear","leap","inGregorianCalendar","fractionalYear","DaysInYear","DYT","deltaT","Index","deltaTTable","nLookupSize","DYT$","CAAEarth","eclipticLongitude","rho","rhosquared","rhocubed","rho4","rho5","nL0Coefficients","g_L0EarthCoefficients","L0","nL1Coefficients","g_L1EarthCoefficients","L1","nL2Coefficients","g_L2EarthCoefficients","nL3Coefficients","g_L3EarthCoefficients","nL4Coefficients","g_L4EarthCoefficients","nL5Coefficients","g_L5EarthCoefficients","eclipticLatitude","nB0Coefficients","g_B0EarthCoefficients","B0","nB1Coefficients","g_B1EarthCoefficients","B1","nB2Coefficients","g_B2EarthCoefficients","B2","nB3Coefficients","g_B3EarthCoefficients","B3","nB4Coefficients","g_B4EarthCoefficients","B4","radiusVector","nR0Coefficients","g_R0EarthCoefficients","R0","nR1Coefficients","g_R1EarthCoefficients","R1","nR2Coefficients","g_R2EarthCoefficients","R2","nR3Coefficients","g_R3EarthCoefficients","R3","nR4Coefficients","g_R4EarthCoefficients","R4","sunMeanAnomaly","Tcubed","eccentricity","eclipticLongitudeJ2000","g_L1EarthCoefficientsJ2000","g_L2EarthCoefficientsJ2000","g_L3EarthCoefficientsJ2000","g_L4EarthCoefficientsJ2000","eclipticLatitudeJ2000","g_B1EarthCoefficientsJ2000","g_B2EarthCoefficientsJ2000","g_B3EarthCoefficientsJ2000","g_B4EarthCoefficientsJ2000","CAAEarth$","VSC","VSC$","CAAEclipticalElementDetails","omega","CAAEclipticalElementDetails$","CAAEclipticalElements","calculate","i0","w0","omega0","JD0","tsquared","tcubed","i0rad","omega0rad","eta","sini0rad","cosi0rad","sinomega0rad_pi","cosomega0rad_pi","sineta","coseta","irad","details","cosi","phi","deltaw","fK4B1950ToFK5J2000","L","J","cosJ","sinJ","W","cosW","sinW","CAAEclipticalElements$","EPO","mercuryMeanLongitude","mercurySemimajorAxis","UnnamedParameter1","mercuryEccentricity","mercuryInclination","mercuryLongitudeAscendingNode","mercuryLongitudePerihelion","venusMeanLongitude","venusSemimajorAxis","venusEccentricity","venusInclination","venusLongitudeAscendingNode","venusLongitudePerihelion","earthMeanLongitude","earthSemimajorAxis","earthEccentricity","earthInclination","earthLongitudePerihelion","marsMeanLongitude","marsSemimajorAxis","marsEccentricity","marsInclination","marsLongitudeAscendingNode","marsLongitudePerihelion","jupiterMeanLongitude","jupiterSemimajorAxis","jupiterEccentricity","jupiterInclination","jupiterLongitudeAscendingNode","jupiterLongitudePerihelion","saturnMeanLongitude","saturnSemimajorAxis","saturnEccentricity","saturnInclination","saturnLongitudeAscendingNode","saturnLongitudePerihelion","uranusMeanLongitude","uranusSemimajorAxis","uranusEccentricity","uranusInclination","uranusLongitudeAscendingNode","uranusLongitudePerihelion","neptuneMeanLongitude","neptuneSemimajorAxis","neptuneEccentricity","neptuneInclination","neptuneLongitudeAscendingNode","neptuneLongitudePerihelion","mercuryMeanLongitudeJ2000","mercuryInclinationJ2000","mercuryLongitudeAscendingNodeJ2000","mercuryLongitudePerihelionJ2000","venusMeanLongitudeJ2000","venusInclinationJ2000","venusLongitudeAscendingNodeJ2000","venusLongitudePerihelionJ2000","earthMeanLongitudeJ2000","earthInclinationJ2000","earthLongitudeAscendingNodeJ2000","earthLongitudePerihelionJ2000","marsMeanLongitudeJ2000","marsInclinationJ2000","marsLongitudeAscendingNodeJ2000","marsLongitudePerihelionJ2000","jupiterMeanLongitudeJ2000","jupiterInclinationJ2000","jupiterLongitudeAscendingNodeJ2000","jupiterLongitudePerihelionJ2000","saturnMeanLongitudeJ2000","saturnInclinationJ2000","saturnLongitudeAscendingNodeJ2000","saturnLongitudePerihelionJ2000","uranusMeanLongitudeJ2000","uranusInclinationJ2000","uranusLongitudeAscendingNodeJ2000","uranusLongitudePerihelionJ2000","neptuneMeanLongitudeJ2000","neptuneInclinationJ2000","neptuneLongitudeAscendingNodeJ2000","neptuneLongitudePerihelionJ2000","EPO$","EOE","jdEquinox","meanAnnomolyOut","_create","br","tmp","readSingle","EOE$","EPD","apparentGeocentricLongitude","apparentGeocentricLatitude","apparentGeocentricDistance","apparentLightTime","apparentGeocentricRA","apparentGeocentricDeclination","EPD$","EOD","heliocentricRectangularEquatorial","heliocentricRectangularEcliptical","heliocentricEclipticLongitude","heliocentricEclipticLatitude","trueGeocentricRA","trueGeocentricDeclination","trueGeocentricDistance","trueGeocentricLightTime","astrometricGeocenticRA","astrometricGeocentricDeclination","astrometricGeocentricDistance","astrometricGeocentricLightTime","elongation","phaseAngle","EOD$","ELL","distanceToLightTime","Distance","oobject","cosB0","Lrad","Brad","cosB","cosL","R","bRecalc","bFirstRecalc","LPrevious","BPrevious","RPrevious","geometricEclipticLatitude","CAAMercury","CAAVenus","CAAMars","CAAJupiter","CAASaturn","CAAUranus","CAANeptune","CAAPluto","x2","y2","Aberration","DeltaLong","CAAFK5","correctionInLongitude","correctionInLatitude","NutationInLongitude","CAANutation","nutationInLongitude","trueObliquityOfEcliptic","ApparentEqu","semiMajorAxisFromPerihelionDistance","meanMotionFromSemiMajorAxis","calculateRectangularJD","elements","sinEpsilon","cosEpsilon","sinOmega","cosOmega","sini","G","H","Q","CAAKepler","atan","Vector3d","calculateRectangular","meanAnomoly","calculateElements","meanObliquityOfEcliptic","SunCoord","equatorialRectangularCoordinatesAnyEquinox","cosu","sinu","psi","nu","sigma","RES","acos","instantaneousVelocity","velocityAtPerihelion","velocityAtAphelion","lengthOfEllipse","cometMagnitude","Util","log10","minorPlanetMagnitude","PhaseAngle","phi1","pow","phi2","ELL$","EOT","SunLong","apparentEclipticLongitude","SunLat","apparentEclipticLatitude","epsilon","EOT$","Longitude","convertVSOPToFK5J2000","convertVSOPToFK5B1950","convertVSOPToFK5AnyEquinox","JDEquinox","zeta","cossigma","coszeta","cosphi","sinsigma","sinzeta","sinphi","xx","xy","xz","yx","yy","yz","zx","zy","zz","CAAFK5$","GMD","meanLongitude","trueLongitude","tropicalLongitude","equatorialLatitude","eclipticRectangularCoordinates","trueRectangularCoordinates","apparentRectangularCoordinates","bInTransit","bInOccultation","bInEclipse","bInShadowTransit","apparentShadowRectangularCoordinates","GMD$","GMDS","satellite1","satellite2","satellite3","satellite4","GMDS$","GM","sunlong","sunlongrad","beta","betarad","DELTA","PreviousEarthLightTravelTime","EarthLightTravelTime","JD1","bIterate","lrad","brad","details1","calculateHelper","fillInPhenomenaDetails","SunLightTravelTime","details2","PreviousLightTravelTime","LightTravelTime","lambda0","beta0","l1","l1rad","l2rad","l3rad","l4rad","pi1","pi2","pi3","pi4","w1","w1rad","w2","w2rad","w3","w3rad","w4","w4rad","GAMMA","philambda","Gdash","Sigma1","Sigma2","Sigma3","Sigma4","T0","I","Irad","X3","X4","X5","Y3","Y4","Y5","Z3","Z4","Z5","A6","B6","C6","north","abc","rotations","X","eclipticCoord","A1","C1","A2","C2","A3","C3","A4","C4","JupiterRadiiToAU","A5","B5","C5","detail","GM$","CAAGlobe","rhoSinThetaPrime","GeographicalLatitude","Height","U","rhoCosThetaPrime","radiusOfParallelOfLatitude","sinGeo","radiusOfCurvature","distanceBetweenPoints","GeographicalLatitude1","GeographicalLongitude1","GeographicalLatitude2","GeographicalLongitude2","lambda","sinG","cosG","cosF","sinF","sinLambda","cosLambda","S","Hprime","Hprime2","CAAGlobe$","IFR","phaseAngle2","phaseAngleRectangular","illuminatedFraction","illuminatedFraction2","mercuryMagnitudeMuller","I_50","venusMagnitudeMuller","marsMagnitudeMuller","jupiterMagnitudeMuller","saturnMagnitudeMuller","DeltaU","sinB","uranusMagnitudeMuller","neptuneMagnitudeMuller","mercuryMagnitudeAA","i2","i3","venusMagnitudeAA","marsMagnitudeAA","jupiterMagnitudeAA","saturnMagnitudeAA","uranusMagnitudeAA","neptuneMagnitudeAA","plutoMagnitudeAA","IFR$","INTP","interpolate","interpolate2","K","N2","N3","N4","interpolateToHalves","lagrangeInterpolate","pX","pY","V","zero","n0prev","n0","zeroB","n0prev2","n0prev3","n0prev4","zero2","deltan0","zero2B","N","INTP$","g_L0JupiterCoefficients","g_L1JupiterCoefficients","g_L2JupiterCoefficients","g_L3JupiterCoefficients","g_L4JupiterCoefficients","g_L5JupiterCoefficients","g_B0JupiterCoefficients","g_B1JupiterCoefficients","g_B2JupiterCoefficients","g_B3JupiterCoefficients","g_B4JupiterCoefficients","nB5Coefficients","g_B5JupiterCoefficients","g_R0JupiterCoefficients","g_R1JupiterCoefficients","g_R2JupiterCoefficients","g_R3JupiterCoefficients","g_R4JupiterCoefficients","nR5Coefficients","g_R5JupiterCoefficients","R5","CAAJupiter$","calculateIter","nIterations","scale","CAAKepler$","g_L0MarsCoefficients","g_L1MarsCoefficients","g_L2MarsCoefficients","g_L3MarsCoefficients","g_L4MarsCoefficients","g_L5MarsCoefficients","g_B0MarsCoefficients","g_B1MarsCoefficients","g_B2MarsCoefficients","g_B3MarsCoefficients","g_B4MarsCoefficients","g_R0MarsCoefficients","g_R1MarsCoefficients","g_R2MarsCoefficients","g_R3MarsCoefficients","g_R4MarsCoefficients","CAAMars$","g_L0MercuryCoefficients","g_L1MercuryCoefficients","g_L2MercuryCoefficients","g_L3MercuryCoefficients","g_L4MercuryCoefficients","g_L5MercuryCoefficients","g_B0MercuryCoefficients","g_B1MercuryCoefficients","g_B2MercuryCoefficients","g_B3MercuryCoefficients","g_B4MercuryCoefficients","g_R0MercuryCoefficients","g_R1MercuryCoefficients","g_R2MercuryCoefficients","g_R3MercuryCoefficients","CAAMercury$","CAAMoon","T4","meanElongation","meanAnomaly","argumentOfLatitude","meanLongitudeAscendingNode","meanLongitudePerigee","trueLongitudeAscendingNode","TrueAscendingNode","LdashDegrees","nLCoefficients","g_MoonCoefficients1","g_MoonCoefficients2","SigmaL","ThisSigma","NutationInLong","nBCoefficients","g_MoonCoefficients3","g_MoonCoefficients4","SigmaB","nRCoefficients","SigmaR","radiusVectorToHorizontalParallax","RadiusVector","horizontalParallaxToRadiusVector","Parallax","CAAMoon$","MoonCoefficient1","MoonCoefficient1$","MoonCoefficient2","MoonCoefficient2$","MIFR","geocentricElongation","ObjectAlpha","ObjectDelta","SunAlpha","SunDelta","GeocentricElongation","EarthObjectDistance","EarthSunDistance","Alpha0","Delta0","MIFR$","CAAMoonNodes","passageThroNode","D2","D4","Mdash2","CAAMoonNodes$","CAAMoonPerigeeApogee","meanPerigee","meanApogee","truePerigee","MeanJD","nPerigeeCoefficients","g_MoonPerigeeApogeeCoefficients1","Sigma","trueApogee","nApogeeCoefficients","g_MoonPerigeeApogeeCoefficients2","perigeeParallax","g_MoonPerigeeApogeeCoefficients3","apogeeParallax","g_MoonPerigeeApogeeCoefficients4","CAAMoonPerigeeApogee$","MPAC","MPAC$","CAAMoonPhases","meanPhase","T2","T3","truePhase","E2","A7","A8","A9","A10","A11","A12","A13","A14","kint","kfrac","DeltaJD","DeltaJD2","CAAMoonPhases$","g_L0NC","g_L1NC","g_L2NC","g_L3NC","g_L4NC","g_B0NC","g_B1NC","g_B2NC","g_B3NC","g_B4NC","g_R0NC","g_R1NC","g_R2NC","g_R3NC","CAANeptune$","Mprime","nCoefficients","g_NuC","argument","mprime","radargument","sincoeff1","sincoeff2","nutationInObliquity","coscoeff1","coscoeff2","nutationInRightAscension","Obliquity","NutationInObliquity","nutationInDeclination","Usquared","Ucubed","U4","U5","U6","U7","U8","U9","U10","CAANutation$","NUC","NUC$","CAATopocentricEclipticDetails","semidiameter","CAATopocentricEclipticDetails$","CAAParallax","equatorial2TopocentricDelta","RhoSinThetaPrime","RhoCosThetaPrime","theta","CAASidereal","apparentGreenwichSiderealTime","g_AAParallax_C1","cosH","sinH","DeltaTopocentric","equatorial2Topocentric","sinpi","Topocentric","ecliptic2Topocentric","Semidiameter","sine","cose","cosBeta","sinBeta","sintheta","cosTopocentricLambda","parallaxToDistance","distanceToParallax","CAAParallax$","CAAPhysicalJupiterDetails","DE","DS","geometricw1","geometricw2","apparentw1","apparentw2","CAAPhysicalJupiterDetails$","CAAPhysicalJupiter","T1","alpha0","alpha0rad","delta0","delta0rad","W1","W2","l0","l0rad","b0","b0rad","e0","e0rad","alphas","deltas","alpharad","deltarad","xi","NutationRA","alphadash","alphadashrad","NutationDec","deltadash","deltadashrad","alpha0dash","alpha0dashrad","delta0dash","delta0dashrad","CAAPhysicalJupiter$","CAAPhysicalMarsDetails","CAAPhysicalMarsDetails$","CAAPhysicalMars","Lambda0","Lambda0rad","Beta0","Beta0rad","JD2","lambdarad","Nrad","ldashrad","bdash","bdashrad","PoleEquatorial","ApparentPoleEquatorial","ApparentMars","SunLambda","SunBeta","SunEquatorial","CAAPhysicalMars$","CAAPhysicalSunDetails","CAAPhysicalSunDetails$","CAAPhysicalSun","SunLongDash","timeOfStartOfRotation","JED","CAAPhysicalSun$","nPlutoCoefficients","g_PlutoArgumentCoefficients","g_PlutoLongitudeCoefficients","g_PlutoLatitudeCoefficients","g_PlutoRadiusCoefficients","CAAPluto$","PlutoCoefficient1","PlutoCoefficient1$","PlutoCoefficient2","PlutoCoefficient2$","CAAPrecession","precessEquatorial","precessEquatorialFK4","precessEcliptic","equatorialPMToEcliptic","PMAlpha","PMDelta","cosb","adjustPositionUsingUniformProperMotion","adjustPositionUsingMotionInSpace","DeltaR","DeltaX","DeltaY","DeltaZ","CAAPrecession$","CAARiseTransitSetDetails","bValid","rise","transit","CAARiseTransitSetDetails$","CAARiseTransitSet","h0","theta0","Delta2Rad","LatitudeRad","h0Rad","cosH0","H0","M0","M1","M2","theta1","DeltaM","CAARiseTransitSet$","g_L0SaturnCoefficients","g_L1SaturnCoefficients","g_L2SaturnCoefficients","g_L3SaturnCoefficients","g_L4SaturnCoefficients","g_L5SaturnCoefficients","g_B0SaturnCoefficients","g_B1SaturnCoefficients","g_B2SaturnCoefficients","g_B3SaturnCoefficients","g_B4SaturnCoefficients","g_B5SaturnCoefficients","g_R0SaturnCoefficients","g_R1SaturnCoefficients","g_R2SaturnCoefficients","g_R3SaturnCoefficients","g_R4SaturnCoefficients","g_R5SaturnCoefficients","CAASaturn$","CAASaturnRingDetails","deltaU","CAASaturnRingDetails$","CAASaturnRings","omegarad","U1","U2","GeocentricEclipticSaturn","GeocentricEclipticNorthPole","CAASaturnRings$","meanGreenwichSiderealTime","JDMidnight","TSquared","TCubed","Value","MeanObliquity","TrueObliquity","CAASidereal$","CAAStellarMagnitudes","combinedMagnitude","m1","m2","combinedMagnitude2","Magnitudes","pMagnitudes","brightnessRatio","magnitudeDifference","CAAStellarMagnitudes$","geometricEclipticLongitudeJ2000","geometricEclipticLatitudeJ2000","geometricFK5EclipticLongitude","geometricFK5EclipticLatitude","SunLatCorrection","eclipticRectangularCoordinatesMeanEquinox","eclipticRectangularCoordinatesJ2000","coslatitude","equatorialRectangularCoordinatesJ2000","equatorialRectangularCoordinatesB1950","CAASun$","g_L0UranusCoefficients","g_L1UranusCoefficients","g_L2UranusCoefficients","g_L3UranusCoefficients","g_L4UranusCoefficients","g_B0UranusCoefficients","g_B1UranusCoefficients","g_B2UranusCoefficients","g_B3UranusCoefficients","g_B4UranusCoefficients","g_R0UranusCoefficients","g_R1UranusCoefficients","g_R2UranusCoefficients","g_R3UranusCoefficients","g_R4UranusCoefficients","CAAUranus$","g_L0VenusCoefficients","g_L1VenusCoefficients","g_L2VenusCoefficients","g_L3VenusCoefficients","g_L4VenusCoefficients","g_L5VenusCoefficients","g_B0VenusCoefficients","g_B1VenusCoefficients","g_B2VenusCoefficients","g_B3VenusCoefficients","g_B4VenusCoefficients","g_R0VenusCoefficients","g_R1VenusCoefficients","g_R2VenusCoefficients","g_R3VenusCoefficients","g_R4VenusCoefficients","CAAVenus$","FitsProperties","bZero","bScale","containsBlanks","blankValue","MIN_VALUE","maxVal","minVal","MAX_VALUE","onMainImageLoaded","FitsProperties$","_fireMainImageLoaded","image","HipsProperties","dataset","_properties","_catalogColumnInfo","_catalogSpreadSheetLayer","CatalogSpreadSheetLayer","_downloadComplete","_datasetName","_url","_download","HipsProperties$","get_properties","set_catalogSpreadSheetLayer","get_catalogColumnInfo","set_catalogColumnInfo","get_downloadComplete","_webFile","WebFile","onStateChange","send","_onPropertiesDownloadComplete","get_state","_parseProperties","getText","VoTable","loadFromUrl","hips_data_range","hips_pixel_cut","_onDownloadComplete","_onCatalogMetadataDownloadComplete","useHeadersFromVoTable","Guid","LayerManager","addSpreadsheetLayer","setDownloadCompleteListener","listener","lines","$enum1","parts","FastMath","_mulsign","_sign","_isnan","_isinf","POSITIVE_INFINITY","_atanhelper","_atan2k","NaN","_sincoshelper","_m_1_PI","_pI4_A","_pI4_B","_pI4_C","FastMath$","HealpixTables","HealpixTables$","Xyf","ix","iy","face","temp","Xyf$","HealpixUtils","check","cond","errtxt","isqrt","cosdist_zphi","z1","z2","fmodulo","v1","v2","HealpixUtils$","Hploc","sth","have_sth","xl","Hploc$","toVec3","Pointing","Pointing$","normalizeTheta","normalize","URLHelpers","_force_https","_origin_protocol","location","protocol","_origin_domain","hostname","_domain_handling","_core_static_baseurl","_core_dynamic_baseurl","_engine_asset_baseurl","_flagship_static_lcpaths","URLHelpers$","rewrite","rwmode","lcproto","url_no_protocol","domain","rest","lc","URL","href","slash_index","lcdomain","lcpath","encodeURIComponent","is_static","activateProxy","engineAssetUrl","subpath","coreDynamicUrl","coreStaticUrl","Annotation","addedToPrimitives","annotationDirty","_opacity","_showHoverLabel","prepBatch","pointList","batchDirty","PointList","lineList","LineList","triangleFanPointList","TriangleFanList","triangleList","TriangleList","set_depthBuffered","depthBuffered","drawBatch","gl","draw","drawLines","colorToUint","col","colorToUintAlpha","Annotation$","_id","_tag","_label","hitTest","RA","get_center","set_center","AstroRaDec","dist","shadow","eclipsed","AstroRaDec$","RiseSetDetails","Rise","Transit","Set","neverRises","bNeverRises","RiseSetDetails$","AstroCalc","getPlanet","jDate","planetIn","locLat","locLong","locHeight","Details","corrected","lat","lng","dis","_jDateLast","_jupDetails","_jupPhisical","_galDetails","xTemp","yTemp","jupiterDiameter","raScale","xMoon","yMoon","zMoon","radians","getJulianDay","eclipticToJ2000","jNow","radec","galacticToJ2000","j2000ToGalactic","getRiseTrinsitSet","jd","ra1","dec1","ra2","dec2","ra3","dec3","RiseTransitSetTime","sign","AstroCalc$","BlendState","_state","_targetState","_delayTime","_switchedTime","initialState","delayTime","BlendState$","set_state","get_targetState","set_targetState","get_delayTime","set_delayTime","CameraParameters","angle","raDec","viewTarget","opactity","targetReferenceFrame","logN","num","sinh","alphaIn","fastDirectionMove","easeCurve","alphaBIn","min","alphaB","lerp","interpolateGreatCircle","Coordinates","geoTo3dDouble","mid","slerp","midV2","cartesianToLatLng","CameraParameters$","copy","get_RA","get_dec","equals","cam","Color","fromArgb","_fromArgbColor","fromName","load","pieces","fromHex","fromSimpleHex","_fromWindowsNamedColor","fromInt","Color$","toFormat","save","toHex","toSimpleHex","_clone","Colors","get_black","get_blue","get_brown","get_cyan","get_darkGray","get_gray","get_green","get_lightGray","get_magenta","get_orange","get_purple","get_red","get_transparent","get_white","get_yellow","Colors$","Constellations","_pointCount","_boundry","_noInterpollation","readOnly","_drawCount","_constellationVertexBuffers","createBasic","_name","fullNames","abbrv","Lineset","boundry","noInterpollation","resource","getFile","drawConstellationNames","drawColor","_namesBatch","initializeConstellationNames","constellationCentroids","Text3dBatch","centroid","raDecTo3dAu","Text3d","drawArtwork","artwork","_maxSeperation","max","get_fovAngle","bs","pictureBlendStates","get_constellation","Settings","get_active","isSet","raDecTo3d","dot","get_viewPoint","drawImageSet","get_studyImageset","_artFile","Folder","_onArtReady","childLoadCallback","_loadArtList","get_places","_loadNames","_webFileConstNames","alert","get_message","_centroidsReady","file","abbreviations","bitIDs","rows","row","Place","WWTControl","set_renderNeeded","ConstellationFilter","buildConstellationFilters","fullName","abbreviation","Constellations$","fileStateChange","_loadConstellationData","boundries","lineSet","abrv","abrvOld","lastRa","starName","$e2","showOnlySelected","focusConsteallation","clearExisting","lsSelected","_constToDraw","ls","_drawSingleConstellation","points","linelist","SimpleLineList","currentPoint","pointType","addLine","get_globalSettings","_drawSingleConstellationOld","ctx","device","lastPoint","linePending","beginPath","strokeStyle","globalAlpha","newPoint","WVP","transform","lineTo","stroke","moveTo","closePath","restore","findConstellationForPoint","inside","Lineset$","Linepoint","Linepoint$","formatDMS","bits","oldBits","blendState","internal","settingsOwned","get_allConstellation","families","get_zodiacal","get_ursaMajorFamily","get_perseusFamily","get_herculesFamily","get_orionFamily","get_heavenlyWaters","get_bayerFamily","get_laCaileFamily","saveCustomFilters","$dict1","$key2","kv","setAll","zodiacal","uma","Perseus","hercules","orion","waters","bayer","LaCaile","cf","$e1","ConstellationFilter$","_saveBits","_isChanged","_checkChanged","_fireChanged","isEnabled","abbrev","bitID","bit","setBits","getBits","cloneFilter","clone","newFilter","combine","PositionTexture","tu","tv","position","createPos","Tile","uvMultiple","createPosRaw","createPosSize","width","height","xvalue","yvalue","zvalue","PositionTexture$","makeCopy","PositionColoredTextured","PositionColoredTextured$","PositionColored","PositionColored$","PositionNormalTexturedTangent","normal","texCoord","nx","ny","nz","tanx","tany","tanz","PositionNormalTexturedTangent$","get_normal","set_normal","get_position","set_position","get_texCoord","Vector2d","set_texCoord","get_tangent","set_tangent","valueX","valueY","valueZ","negate","vec","midPoint","midPointByLength","get_empty","addVectors","cross","getLength","getLengthSq","interpolater","midpoint","middle","multiplyScalar","scalingFactor","subtractVectors","newVector","list","_transformCoordinate","vector3d","mat","Vector3d$","round","lengthSq","rotateX","zTemp","rotateZ","rotateY","toSpherical","ascention","declination","XZ","toRaDec","distanceToLine","x1","t1","t2","t3","t4","_transformByMatrics","lookAtAdjust","cartesianToSpherical2","vector","longitude","latitude","average3d","pntLeft","pntRight","pntOut","Vector2d$","distance3d","pointB","pnt1","pnt2","pntDiff","Matrix3d","_m11","_m12","_m13","_m14","_m21","_m22","_m23","_m24","_m31","_m32","_m33","_m34","_offsetX","_offsetY","_offsetZ","_m44","_isNotKnownToBeIdentity","m11","m12","m13","m14","m21","m22","m23","m31","m32","m33","m34","offsetX","offsetY","offsetZ","m44","get_identity","_s_identity","multiplyMatrix","matrix1","matrix2","get__isDistinguishedIdentity","lookAtLH","cameraPosition","cameraTarget","cameraUpVector","zaxis","xaxis","yaxis","_createIdentity","matrixd","set__isDistinguishedIdentity","get_isIdentity","get_m11","get_m12","get_m13","get_m14","get_m21","get_m22","get_m23","get_m24","get_m31","get_m32","get_m33","get_m34","get_offsetX","get_offsetZ","get_m44","fromMatrix2d","mat3d","set_m11","set_m12","set_m13","set_m21","set_m22","set_m23","set_m31","set_m32","set_m33","rotationYawPitchRoll","heading","pitch","roll","matX","_rotationX","matY","_rotationY","matZ","_rotationZ","matNew","_scaling","_translationXYZ","set_offsetX","set_offsetY","set_offsetZ","perspectiveFovLH","fieldOfViewY","aspectRatio","znearPlane","zfarPlane","perspectiveOffCenterLH","invertMatrix","matrix3d","invert","translation","getMapMatrix","fieldWidth","fieldHeight","get_lng","get_lat","Matrix2d","scaleX","scaleY","scaling","Matrix3d$","setIdentity","floatArray","matrix","_multiply","_setScaleMatrix","scalePrepend","scaleAt","_setScaleMatrixCenter","scaleAtPrepend","num3","num2","translate","offset","_setTranslationMatrix","translatePrepend","get_isAffine","num4","_transformTo","input","output","transformArray","_multiplyPoint","projectArrayToScreen","affine","projectToScreen","get_determinant","_getNormalizedAffineDeterminant","num6","num5","num10","num9","num8","num7","get_hasInverse","DoubleUtilities","isZero","_invertCore","transpose","that","set_m14","set_m24","set_m34","get_m41","set_m41","get_m42","set_m42","get_m43","set_m43","set_m44","multiplyVector","_normalizedAffineInvert","num11","num20","num19","num18","num17","num16","num15","num14","num13","num12","num24","num23","num22","num21","rotateAt","pnt","matT0","matR","matT1","Matrix2d$","_transformPoints","multiplyPoint","PlaneD","valuePointA","valuePointB","valuePointC","valuePointD","isOne","radiansToDegrees","degreesToRadians","clamp","PlaneD$","Vector4d","valueW","Vector4d$","PositionNormalTexturedX2","tu1","tv1","create2UV","nor","u1","createLong2UV","nxvalue","nyvalue","nzvalue","get_strideSize","PositionNormalTexturedX2$","createLong","PositionNormalTextured","createShort","createUV","uv","PositionNormalTextured$","SphereHull","Center","Radius","SphereHull$","ConvexHull","findEnclosingSphereFast","findEnclosingSphere","dx","dy","dz","rad_sq","xspan","yspan","zspan","maxspan","old_to_p","old_to_p_sq","old_to_new","xmin","xmax","ymin","ymax","zmin","zmax","dia1","dia2","ConvexHull$","isProxy","_versionDependent","_readOnly","_dirty","_thumbnail","_proxyFolder","_lastUpdate","_childList","_itemsField","_imagesets","_tours","_folders","_places","_groupField","_refreshTypeField","_refreshTypeFieldSpecified","_browseableField","_browseableFieldSpecified","_searchableField","_typeField","_communityIdField","_componentIdField","_permissionField","Folder$","_nameField","get_versionDependent","set_versionDependent","folder","get_readOnly","set_readOnly","get_dirty","set_dirty","loadFromUrlWithErrorCallback","complete","onError","_onError","_onComplete","_loadData","node","selectSingleNode","getXml","doc","_clearChildren","_parseXML","get_imagesets","attributes","getNamedItem","nodeValue","_urlField","_thumbnailUrlField","childNodes","nodeName","_fromXml","Imageset","fromXMLNode","get_tours","Tour","addChildFolder","removeChildFolder","addChildPlace","removeChildPlace","get_thumbnail","set_thumbnail","get_bounds","_bounds","set_bounds","get_isImage","get_isTour","get_isFolder","get_isCloudCommunityItem","refresh","_childReadyCallback","get_children","folderUp","FolderUp","get_folders","$enum2","imset","$enum3","$enum4","get_refreshType","_refreshIntervalField","get_msrCommunityId","set_msrCommunityId","get_msrComponentId","set_msrComponentId","get_permission","set_permission","set_folders","set_places","set_imagesets","set_tours","get_group","set_group","set_url","get_thumbnailUrl","set_thumbnailUrl","set_refreshType","set_refreshTypeSpecified","get_refreshTypeSpecified","get_refreshInterval","set_refreshInterval","get_browseable","set_browseable","get_browseableSpecified","set_browseableSpecified","get_searchable","set_searchable","get_type","get_subType","_subTypeField","set_subType","FolderBrowser","_indexTouchDown","_mouseDown","_lastX","_lastY","_ignoreClick","_thumbnailSize","_horzSpacing","_vertSpacing","_thumbHeight","_thumbWidth","_horzMultiple","_rowCount","_colCount","_dragging","_startIndex","_startOffset","_selectedItem","_hoverItem","showAddButton","_addButtonHover","imageClicked","canvas","setup","loadImages","FolderBrowser$","addEventListener","onTouchStart","ev","preventDefault","targetTouches","pageX","pageY","_getItemIndexFromCursor","onTouchMove","tiles","newHover","onTouchEnd","_handleClick","onClick","$this","get_tourUrl","onDoubleClick","RenderTriangle","renderingOn","onGestureChange","onMouseDown","Mouse","onMouseMove","onMouseUp","_imagesLoaded","_downloading","_imageLoadCount","_bmpBackground","_bmpBackgroundHover","_bmpBackgroundWide","_bmpBackgroundWideHover","_bmpDropInsertMarker","get_thumbnailSize","set_thumbnailSize","_updatePaginator","innerWidth","paint","get_rowCount","set_rowCount","get_colCount","set_colCount","get_itemsPerPage","get_currentPage","get_pageCount","getContext","fillStyle","fillRect","rectf","netHeight","netWidth","Rectangle","drawImage","textBrush","bmpThumb","rect","font","fillText","testPointIn","testPoint","xpos","xPart","ypos","yPart","_addItems","FolderUp$","ShortIndexBuffer","indexes","buffer","prepDevice","createBuffer","bindBuffer","bufferData","ShortIndexBuffer$","IndexBuffer","IndexBuffer$","deleteBuffer","VertexBufferBase","VertexBufferBase$","vertexBuffer","Dates","startDate","endDate","Dates$","_zBuffer","_linePoints","_usingLocalCenter","aaFix","pure2D","viewTransform","_lineBuffers","_lineBufferCounts","useLocalCenters","SimpleLineList$","get_depthBuffered","_emptyLineBuffer","_initLineBuffer","viewPoint","firstPoint","secondPoint","lineBuffer","SimpleLineShader2D","use","SimpleLineShader","drawArrays","linePointList","_localCenter","countLeft","counter","unlock","thisCount","PositionVertexBuffer","lock","OrbitLineList","_lineColors","OrbitLineList$","c1","c2","OrbitLineShader","PositionColoredVertexBuffer","useNonRotatingFrame","_lineDates","LineList$","addLineNoDate","LineShaderNormalDates","TimeSeriesLineVertexBuffer","div2","TimeSeriesLineVertex","_trianglePoints","_triangleColors","_triangleDates","writeZbuffer","autoTime","_dataToDraw","_triangleBuffers","_triangleBufferCounts","TriangleList$","addTriangle","v3","_emptyTriangleBuffer","addSubdividedTriangles","subdivisions","v12","v23","v31","addQuad","v4","_initTriangleBuffer","triangleBuffer","triPointList","div3","cull","triBuffer","_shapes","_colors","_dates","_buffers","_bufferCounts","TriangleFanList$","addShape","shapePoints","_initBuffer","shape","_points","_sizes","_imageReady","minSize","_pointBuffers","_pointBufferCounts","_device","PointList$","addPoint","size","_emptyPointBuffer","pointBuffer","_starProfile","_worldList","_transformedList","DataItem","tranformed","starTexture","Planets","loadPlanetTexture","TimeSeriesPointVertexBuffer","TimeSeriesPointVertex","pointSize","get_fovScale","half","arc","matInv","get_world","get_view","TimeSeriesPointSpriteShader","texture2d","drawTextured","texture","TimeSeriesLineVertex$","TimeSeriesPointVertex$","fragShaderText","vertexShaderText","_frag","createShader","shaderSource","compileShader","getShaderParameter","_vert","_prog","createProgram","attachShader","linkProgram","getProgramParameter","useProgram","vertLoc","getAttribLocation","lineColorLoc","getUniformLocation","projMatLoc","mvMatLoc","enable","blendFunc","initialized","vertex","useDepth","mvMat","uniformMatrix4fv","get_projection","uniform4f","disable","disableVertexAttribArray","enableVertexAttribArray","vertexAttribPointer","SimpleLineShader$","SimpleLineShader2D$","colorLoc","OrbitLineShader$","timeLoc","jNowLoc","decayLoc","zBuffer","uniform1f","LineShaderNormalDates$","getShaderInfoLog","pointSizeLoc","sampLoc","cameraPosLoc","scaleLoc","skyLoc","showFarSideLoc","minSizeLoc","camera","Texture","getEmpty","uniform1i","uniform3f","activeTexture","bindTexture","TimeSeriesPointSpriteShader$","KeplerPointSpriteShader","abcLoc1","abcLoc","weLoc","nTLoc","azLoc","orbitLoc","mmLoc","opacityLoc","worldView","MM","KeplerPointSpriteShader$","EllipseShader","angleLoc","matWVPLoc","matPositionLoc","positionNowLoc","semiMajorAxisLoc","eccentricityLoc","eccentricAnomalyLoc","semiMajorAxis","eccentricAnomaly","positionNow","WVPPos","EllipseShader$","ModelShader","stat","stat1","normalLoc","textureLoc","sunLoc","minBrightnessLoc","atmosphereColorLoc","demEnabled","noDepth","stride","minLightingBrightness","lighting","atmosphereColor","sunPosition","mvInv","sp","ModelShader$","ModelShaderTan","ModelShaderTan$","TileShader","centerScreenLoc","centerWorldLoc","centerWorld","wvp","centerScreen","TileShader$","FitsShader","errorF","errorV","blank","bzero","bscale","minLoc","maxLoc","transparentBlackLoc","containsBlanksLoc","scalingLocation","FitsShader$","ImageShader","ImageShader$","ImageShader2","ImageShader2$","SpriteShader","SpriteShader$","ShapeSpriteShader","ShapeSpriteShader$","TextShader","TextShader$","Sprite2d","vertCount","Sprite2d$","triangleStrips","verts","f32array","Float32Array","bufferSubData","Tessellator","tesselateSimplePoly","inputList","results","tess","process","Tessellator$","_isLeftOfHalfSpace","pntA","pntB","pntTest","_insideTriangle","pntC","_canClipEar","poly","bn","nv","imageElement","_ready","_errored","createTexture","texImage2D","Uint8Array","fromUrl","tex","isPowerOfTwo","fitPowerOfTwo","Texture$","cleanUp","deleteTexture","xdomimg","makeTexture","hasAttribute","new_url","crossOrigin","texParameteri","generateMipmap","Grids","_createGalaxyImage","_milkyWayImage","subdivs","latMin","latMax","lngMin","lngMax","_galaxyImageVertexBuffer","PositionTextureVertexBuffer","y1","latDegrees","lngDegrees","SpaceTimeController","get_jNow","textureStepX","textureStepY","_galaxyImageTriangleCount","ui16array","Uint16Array","indexArray","_galaxyImageIndexBuffer","drawGalaxyImage","distAlpha","drawElements","drawStars3D","_starSprites","initStarVertexBuffer","_starsDownloading","getStarFile","_starCount","_stars","radDec","absoluteMagnitude","initializeStarDB","text","Star","magnitude","_limitingMagnitude","par","_hipparcosIndex","_webFileStar","starFileStateChange","getGalaxyFile","_webFileGalaxy","responseType","galaxyFileStateChange","mainBlob","getBlob","chunck","BinaryReader","initializeCosmos","readAsArrayBuffer","drawCosmos3D","initCosmosVertexBuffer","_galaxyTextures","_largeSet","_cosmosReady","_cosmosSprites","_downloadCosmosFile","_createCosmosVertexBuffer","bucketCount","ij","indexList","_galaxyVertexCounts","_cosmos","bucket","eTypeBucket","Galaxy","close","_downloadingGalaxy","drawEquitorialGrid","_equLineList","drawEquitorialGridText","_makeEquitorialGridText","_equTextBatch","drawEcliptic","_eclipticOverviewLineList","_eclipticYear","obliquity","daysPerYear","_monthDays","_eclipticCount","jYear","utcToJulian","daysThisMonth","sunRaDec","getPlanetLocationJD","sunEcliptic","drawEclipticText","_makeEclipticText","_eclipOvTextBatch","_eclipticTextYear","_monthNames","drawPrecessionChart","_makePrecessionChart","_precTextBatch","_precLineList","drawAltAzGrid","zenithAltAz","zenith","horizonToEquitorial","get_location","raPart","decPart","_altAzLineList","matOldWorld","matOldWorldBase","get_worldBase","set_worldBase","set_world","makeFrustum","drawAltAzGridText","_makeAltAzGridText","_altAzTextBatch","drawEclipticGrid","_eclipticLineList","drawEclipticGridText","_makeEclipticGridText","_eclipticTextBatch","drawGalacticGrid","_galLineList","galacticTo3dDouble","drawGalacticGridText","_makeGalacticGridText","_galTextBatch","drawPlanetGrid","_planetLineList","drawPlanetGridText","_makePlanetGridText","_planetTextBatch","Grids$","_projection","_imageSetID","_baseTileDegrees","_widthFactor","demUrl","_levels","_mercator","_bottomsUp","_baseLevel","_quadTreeTileMap","_centerX","_centerY","_rotation","_meanRadius","_dataSetType","_bandPass","_altUrl","_singleImage","_fitsProperties","_matrixComputed","_sparse","_thumbnailUrl","_generic","_defaultSet","_elevationModel","getTileKey","level","ipix","get_imageSetID","getNewTile","newTile","MercatorTile","EquirectangularTile","ToastTile","SkyImageTile","PlotTile","set_hipsProperties","HealpixTile","TangentTile","projection","bandPass","wf","createGeneric","fileType","thumbnailUrl","thumbUrl","cn","textContent","stockSet","elevationModel","alturl","creditText","credits","getInnerText","creditsUrl","meanRadius","baseTileLevel","tileLevels","baseDegreesPerTile","bottomsUp","quadTreeMap","centerX","centerY","sparse","getHashCode","saveToXml","xmlWriter","alternateUrl","_writeStartElement","_writeAttributeString","get_generic","toXml","get_demUrl","get_baseLevel","get_bottomsUp","get_quadTreeTileMap","get_rotation","get_sparse","get_elevationModel","get_defaultSet","get_widthFactor","get_meanRadius","_writeElementString","_writeEndElement","dataSetType","_extension","_matrix","imageSetID","baseLevel","levels","tileSize","baseTileDegrees","defaultSet","demUrlIn","setInitialParameters","Imageset$","get_wcsImage","_wcsImage","set_wcsImage","set_projection","_referenceFrame","set_imageSetID","set_baseTileDegrees","set_widthFactor","set_demUrl","set_extension","set_levels","set_bottomsUp","get_mercator","set_mercator","set_baseLevel","set_quadTreeTileMap","set_centerX","_computeMatrix","set_centerY","set_rotation","set_meanRadius","set_bandPass","set_dataSetType","get_altUrl","set_altUrl","get_singleImage","set_singleImage","_hipsProperties","set_fitsProperties","get_stockImageSet","get_matrix","set_matrix","set_sparse","set_generic","set_elevationModel","set_defaultSet","_creditsText","set_creditsText","get_creditsUrl","_creditsUrl","set_creditsUrl","get_isMandelbrot","get_viewCenterX","get_viewCenterY","_guessZoomSetting","currentZoom","aswcs","FitsImage","get_sizeY","get_scaleY","ViewMoverKenBurnsStyle","fromDateTime","toDateTime","interpolationType","_toTargetTime","_dateTimeSpan","_complete","_midpointFired","_fromDateTime","_toDateTime","_from","_to","_fromTime","ViewMoverKenBurnsStyle$","get_complete","get_currentPosition","elapsed","elapsedSeconds","_midpoint","get_currentDateTime","retDate","get_midpoint","set_midpoint","get_moveTime","ViewMoverSlew","_upTargetTime","_downTargetTime","_upTimeFactor","_downTimeFactor","_travelTimeFactor","createUpDown","upDowFactor","ViewMoverSlew$","travelTime","zoomUpTarget","lngDist","latDist","rotateTime","logDistUp","logDistDown","_fromTop","_toTop","updateClock","KeplerVertex","ABC","abc1","orbitPos","orbits","KeplerVertex$","ee","_degrad","_cose","_sine","baseDate","ScaleMap","ScaleMap$","ColorMapContainer","colors","fromArgbList","color_list","fromStringList","fromNamedColormap","viridis","plasma","inferno","magma","cividis","greys","gray","purples","blues","greens","oranges","reds","rdYlBu","_getTextureFromName","colorTextures","colorMapContainer","_initColorTexture","bindColorMapTexture","colorTexture","colorBuffer","_extractColorArray","ColorMapContainer$","findClosestColor","Layer","newGuid","loadedFromTour","tourDocument","_startTime","_endTime","_fadeSpan","_fadeType","fromXml","layerNode","someFlag","layerClassName","overLayType","newLayer","SpreadSheetLayer","GreatCirlceRouteLayer","GridLayer","ImageSetLayer","Object3dLayer","OrbitLayer","initFromXml","Layer$","getPrimaryUI","getFileStreamUrl","filename","getFileStream","findClosest","closestPlace","hoverCheckScreenSpace","cursor","clickCheckScreenSpace","flat","preDraw","purgeOld","purgeAll","hasHeader","upadteData","canCopyToClipboard","copyToClipboard","getParams","paramList","setParams","getParamNames","getEditUI","getProps","colorChanged","get_colorValue","set_colorValue","getTypeName","xmlDate","writeLayerProperties","initializeFromXml","parseTimeSpan","loadData","addFilesToCabinet","fc","getStringFromGzipBlob","dataReady","pako","inflate","errString","fromCharCode","DomainValue","customMarker","DomainValue$","_version","get_frameWizardDialog","_frameWizardDialog","get_dataVizWizardDialog","_dataVizWizardDialog","get_referenceFramePropsDialog","_referenceFramePropsDialog","get_greatCircleDlg","_greatCircleDialog","get_tourLayers","_tourLayers","set_tourLayers","initLayers","_clearLayers","loadTree","scriptInterface","refreshLayerManagerNow","get_layerMaps","_layerMapsTours","_layerMaps","set_layerMaps","_allMapsTours","_allMaps","set_allMaps","get_currentMap","_currentMap","set_currentMap","_layerListTours","_layerList","set_layerList","iss","LayerMap","frame","epoch","_twoLineDateToJulian","referenceFrameType","inclination","longitudeOfAscendingNode","meanAnomolyAtEpoch","meanDailyMotion","argumentOfPeriapsis","semiMajorAxisUnits","oblateness","showOrbitPath","webFile","isstle","fromTLE","_addMoons","_moonfile","open","_addAllMaps","_addIss","ISSLayer","Language","getLocalizedText","maps","getMoonFile","_webFileMoons","moonFileStateChange","first","_systemGenerated","rotationalPeriod","showAsPoint","set_representativeColor","addVoTableLayer","table","title","addVoTableLayerWithPlotType","VoTableLayer","addFitsImageSetLayer","addImageSetLayerCallback","isNonhipsTiledFits","applyDisplaySettings","doneLoading","getNextFitsName","_getNextName","getNextImageSetName","currentNumber","$e3","_closeAllTourLoadedLayers","purgeTargets","purgeMapsNames","purgeLayerMapDeep","topLevel","_cleanAllTourLoadedLayers","mergeToursLayers","OverWrite","CollisionChecked","newMap","connectAllChildren","ID","removeFromParent","updateTree","_getFrameTarget","TrackingFrame","FrameTarget","targetPoint","mapList","reference","matOld","matOldNonRotating","get_worldBaseNonRotating","matOldBase","oldNominalRadius","get_nominalRadius","setupPlanetMatrix","computeFrame","useRotatingParentFrame","worldMatrix","set_worldBaseNonRotating","set_nominalRadius","lookAt","lookUp","_prepTourLayers","TourPlayer","get_currentTourStop","updateTweenPosition","get_keyFramed","_updateLayerOpacity","frameOpacity","frameParams","_draw","nested","cosmos","thisMap","pass","skipLayer","layerStart","layerEnd","fadeOpacity","tsl","get_orbit","set_orbit","Orbit","get_elements","get_representativeColor","matSaved","draw3D","_getVisibleLayerList","previous","LayerInfo","startOpacity","endOpacity","startParams","endParams","setVisibleLayerList","_preDraw","layerSelectionChanged","selected","_selectedLayer","setTimeSlider","setTimeSliderValue","showLayerMenu","_lastMenuClick","SkyOverlays","selectedLayer","_contextMenu","ContextMenuStrip","renameMenu","ToolStripMenuItem","Expand","Collapse","copyMenu","deleteMenu","saveMenu","publishMenu","colorMenu","opacityMenu","propertiesMenu","scaleMenu","lifeTimeMenu","spacer1","ToolStripSeparator","showViewer","spacer2","defaultImageset","click","_top_Click","_up_Click","_down_Click","_bottom_Click","_saveMenu_Click","_publishMenu_Click","_expand_Click","_collapse_Click","_copyMenu_Click","_colorMenu_Click","_deleteMenu_Click","_renameMenu_Click","_propertiesMenu_Click","scaleMenu_click","_defaultImageset_Click","_opacityMenu_Click","_lifeTimeMenu_Click","_showViewer_Click","get_hasTreeViewNodes","isl","checked","_show","Dome","Sky","trackFrame","showOrbit","newMenu","newLayerGroupMenu","addMenu","newLight","addGridLayer","addGreatCircle","addMpc","deleteFrameMenu","pasteMenu","popertiesMenu","spacer0","asReferenceFrame","asOrbitalLines","_trackFrame_Click","_goTo_Click","_addMpc_Click","_asOrbitalLines_Click","dropDownItems","_addMenu_Click","_newLayerGroupMenu_Click","_pasteLayer_Click","_newMenu_Click","_deleteFrameMenu_Click","_framePropertiesMenu_Click","_addGreatCircle_Click","_addGirdLayer_Click","get_solarSystemMode","sandboxMode","spacerNeeded","_showOrbit_Click","ssObj","_showOrbitPlanet_Click","sender","set_trackingFrame","targetCamera","_importTLEFile","_makeLayerGroupNow","_makeLayerGroup","ReferenceFrame","show","referenceFrameWizardFinished","pasteFromTle","line1","line2","isTLECheckSumGood","SimpleInput","picker","ColorPicker","callBack","_deleteSelectedLayer","hist","Histogram","displayVoTableLayer","loadFromString","_addGreatCircleLayer","retry","showDialog","_getMpc","Cursor","_getMpcAsTLE","startform","lastForm","formpart","_getValueByID","TLE","toTLE","_loadOrbitsFile","orbit","valStart","valEnd","set_latStart","set_latEnd","set_lngStart","set_lngEnd","set_width","currentMap","loadString","LayerManager$","LayerMap$","SkyOverlays$","GroundOverlayLayer","GroundOverlayLayer$","FrameTarget$","LayerUI","LayerUI$","getTreeNodes","getNodeContextMenu","setUICallbacks","callbacks","LayerUIMenuItem","_isChecked","_isEnabled","_subMenus","LayerUIMenuItem$","get_checked","set_checked","add_menuItemSelected","__menuItemSelected","remove_menuItemSelected","fireMenuItemSelected","get_subMenus","LayerUITreeNode","_parent","_level","_open","_bold","_color","_nodes","LayerUITreeNode$","add_nodeChecked","__nodeChecked","remove_nodeChecked","fireNodeChecked","newState","add_nodeUpdated","__nodeUpdated","remove_nodeUpdated","fireNodeUpdated","add_nodeSelected","__nodeSelected","remove_nodeSelected","fireNodeSelected","add_nodeActivated","__nodeActivated","remove_nodeActivated","fireNodeActivated","get_parent","set_parent","get_level","set_level","get_referenceTag","_referenceTag","set_referenceTag","get_bold","set_bold","get_nodes","Group","indexCount","materialIndex","Group$","Mesh","boundingSphere","vertices","indices","mesh","createTangent","tangentVertices","Mesh$","tangentVertexBuffer","indexBuffer","setObjects","objects","_objects","commitToDevice","PositionNormalTexturedVertexBuffer","PositionNormalTexturedTangentVertexBuffer","Uint32Array","beginDrawing","_setVertexBuffer","_setIndexBuffer","drawSubset","drawHierarchy","nodes","drawGroup","group","children","get_objects","set_objects","VertexPosition","VertexPosition$","Object3d","tourDoc","flipV","flipHandedness","smooth","_mesh","_meshMaterials","_meshTextures","_meshSpecularTextures","_meshNormalMaps","meshFilenames","_textureCache","_matFiles","_matFileIndex","_matLib","_textureLib","_tourDocument","issLayer","_readyToRender","useCurrentAmbient","_loadMeshFromObj","_loadMeshFrom3ds","_compareVector3","v0","_compareVector","_getMaterialID","material","materialNames","_disposeTextureList","textures","Object3d$","_reload","_calculateVertexNormalsMerged","vertexList","creaseAngleRad","triangleCount","vertexPositions","vertexIndex","vp","vertexMap","uniqueVertexCount","vertexInstanceCounts","uniqueIndex","vertexInstances","faceIndex","faceNormals","i1","edge0","edge1","newVertexCount","vertexNormals","cosCreaseAngle","faceNormal","sum","_calculateVertexTangents","partials","m00","m01","m10","determinant","invDeterminant","n00","n01","tangents","du","_calculateVertexNormals","vertexCount","_addMaterial","_loadColorChunk","chunkID","readUInt16","chunkLength","readUInt32","readBytes","readByte","_loadPercentageChunk","percentage","getFileBlob","_readObjMaterialsFromBin","_loadMatLib","matFiles","lineraw","matFile","_readObjFromBin","objectFound","currentObject","ObjectNode","vertList","normList","uvList","currentMaterialIndex","currentMaterial","Material","currentGroup","currentIndex","diffuse","ambient","specular","specularSharpness","isDefault","materialName","getCachedTexture2d","indexiesA","_getIndexies","indexiesB","indexiesC","partIndex","degtorag","newVertexList","rootDummy","_readMatLibFromBin","textureFilename","indecies","_read3dsFromBin","sectionID","sectionLength","attributeID","exit","normalMapFound","objHierarchy","objNames","objectTable","startMapIndex","startTriangleIndex","vert","triCount","aa","bb","cc","b1","applyList","applyLists","applyListsIndex","localMat","matName","b2","strength","dummyCount","pivotPoint","seekRelative","newIndexList","materialGroups","matId","$enum5","triangleIndex","nodeStack","nodeTreeRoot","currentLevel","dummy","$enum6","tangentIndexList","tangentIndex","$enum7","tvertex","_offsetObjects","offsetMat","offsetPoint","matLoc","setupLighting","objPosition","objToLight","get_reflectedLightPosition","get_sunPosition","cosPhaseAngle","reflectedLightFactor","hemiLightFactor","sunlightFactor","get_occludingPlanetRadius","objAltitude","get_occludingPlanetPosition","sunToPlanet","objToPlanet","hemiLightDirection","set_hemisphereLightUp","objToSun","sunPlanetDistance","shadowAxisPoint","solarRadius","penumbraRadius","umbraRadius","minimumShadow","occlusion","set_sunlightColor","set_reflectedLightColor","get_reflectedLightColor","set_hemisphereLightColor","get_hemisphereLightColor","oldWorld","unitScale","viewportHeight","p11","p34","p44","pixelsPerUnit","radiusInPixels","savedSunlightColor","get_sunlightColor","savedReflectedColor","savedHemiColor","get_current","set_ambientLightColor","setMaterial","set_mainTexture","ObjectNode$","segments","thickness","_elements","_orbitColor","_scale","_segmentCount","Orbit$","get_boundingRadius","centerPoint","orbitalPlaneOrientation","_orbitalToWwt","EllipseRenderer","drawEllipse","drawEllipseWithPosition","_ellipseShader","_ellipseVertexBuffer","createEllipseVertexBuffer","savedWorld","_ellipseWithoutStartPointVertexBuffer","createEllipseVertexBufferWithoutStartPoint","vb","EllipseRenderer$","orbitalYears","observingLocation","parentsRoationalBase","zeroRotationDate","representativeColor","stationKeeping","_orbit","checksum","toTLEExponential","tleNumberString","formated","computeTLECheckSum","ReferenceFrame$","getIndentifier","importTrajectory","gravity","revs","julianToTwoLineDate","set_elements","_computeOrbital","_computeFixedSherical","_computeFrameTrajectory","_computeFixedRectangular","get_altitude","localScale","rotationCurrent","pointInstantLater","direction","look","KmlCoordinate","KmlCoordinate$","KmlLineList","extrude","KmlLineList$","parseWkt","geoText","option","UiTools","coordinates","getCenterPoint","PushPin","getPushPinTexture","pinId","_pinTextureCache","_pins","PushPin$","Table","header","delimiter","locked","Table$","isUpdate","purge","headerLine","splitString","rowData","cloned_table","addColumn","removeColumn","remove_index","columns","column","loadFilename","sampId","selectedRow","errorText","xParser","DOMParser","parseFromString","loadFromXML","VoTable$","xml","VoColumn","tableData","VoRow","columnData","$e5","getColumnByUcd","ucd","toLocaleLowerCase","getRAColumn","getDecColumn","getMagColumn","getDistanceColumn","owner","VoRow$","getColumnData","dimentions","sizes","unit","getType","indexer","dim","lenString","Type","VoColumn$","WcsImage","copyright","_validWcs","keywords","referenceX","referenceY","sizeX","sizeY","cd1_1","cd1_2","cd2_1","cd2_2","hasRotation","hasSize","hasScale","hasLocation","hasPixel","_colorCombine","WcsImage$","get_copyright","set_copyright","get_validWcs","set_validWcs","get_keywords","set_keywords","get_description","set_description","get_scaleX","set_scaleX","set_scaleY","get_sizeX","get_referenceX","get_referenceY","set_referenceX","set_referenceY","set_sizeX","set_sizeY","get_cd1_1","set_cd1_1","get_cd1_2","set_cd1_2","get_cd2_1","set_cd2_1","get_cd2_2","set_cd2_2","adjustScale","calculateScaleFromCD","calculateRotationFromCD","rot2","get_filename","set_filename","get_colorCombine","set_colorCombine","getBitmap","MainView","MinorPlanets","_drawTest","getElementById","getMpcFile","_webMpcFile","_readFromBin","initMPCVertexBuffer","mpcList","drawMPC3D","_mpcVertexBuffer","matrixWV","_mpcBlendStates","_initBegun","_startInit","mpcVertexBufferTemp","_mpcCount","lists","listID","KeplerVertexBuffer","MinorPlanets$","_camParams","_location3d","htmlDescription","_constellation","_classification","_magnitude","_distnace","angularSize","annotation","_thumbNail","_studyImageset","_backgroundImageSet","_searchDistance","_elevation","classification","zoomFactor","set_classification","createCameraParams","camParams","set_target","newPlace","descriptionNode","backgroundImageSet","imageSet","study","_properCaps","ProperName","Place$","get_names","set_names","getNamesStringFromArray","get_camParams","get_classification","getPlanetLocation","set_camParams","updatePlanetLocation","getPlanet3dLocationJD","get_target","getPlanetTargetPoint","get_location3d","set_constellation","get_magnitude","set_magnitude","get_distance","set_distance","get_zoomLevel","get_annotation","set_annotation","get_searchDistance","set_searchDistance","get_elevation","set_elevation","_thumbnailField","_saveToXml","elementName","_writeCData","KeplerianElements","ea","KeplerianElements$","BodyAngles","poleRa","poleDec","primeMeridian","rotationRate","BodyAngles$","getPlanet3dLocation","_planet3dLocations","getPlanet3dSufaceAltitude","getAdjustedPlanetRadius","centerRaDec","RC","getPlanetIDFromName","_planetLocations","planetName","getImageSetNameNameFrom3dId","getNameFrom3dId","updatePlanetLocations","threeDee","_jNow","updateOrbits","_planetDiameters","planetColors","lightYellow","orangeRed","_planetTilts","_obliquity","planetRotationPeriod","_planetScales","_planetDrawOrder","planetCenter","finalDistance","planetsReady","_lastPlanetCenterID","_orbits","_eclipticTilt","planetOrbitalYears","readOrbits","_orbitalSampleRate","centerId","planetRaDec","dumpOrbitsFile","drawPlanets","_planetTextures","_loadPlanetTextures","elong","_geocentricElongation","raDif","_phaseAngle","_positionAngle","dista","distb","sunMoonDist","coronaOpacity","moonEffect","_drawPlanet","planetId","baseUrl","drawPlanets3D","initPlanetResources","distss","solarSystemToMeters","get_solarSystemCameraDistance","fade","ii","_drawSingleOrbit","_drawOrder","distVector","distVectorEarth","_drawPlanet3d","getPlanetOrientationAtEpoch","planetID","obliquityOfEcliptic","_planetAngles","matNonRotating","_setupMatrixForPlanetGeometry","mstFromUTC2","matLocal","orientationAtEpoch","earthMatrix","earthMatrixInv","getPlanetRadiusInMeters","eclipticColor","startAngle","planetNow","planetDropped","pointTest","matWV","WV","alphaD","lastColor","mu","r0","getPlanetPositionDirect","r1","_stateVectorToKeplerian","_drawSingleOrbitElements","galileanInfo","eclPos","eclipticOfDateRotation","rmag","vmag","sma","ecc","cosNu","sinNu","orientation","xstartAngle","el","currentPosition","isPlanetInFrustum","rad","frustum","get_frustum","centerV4","planetWidth","set_sunPosition","loc","sizeIndexParam","sizeIndex","oldLighting","drawSaturnsRings","_drawSphere","_drawRings","drawPointPlanet","front","_ringsTriangleLists","_ringImage","ringSize","TopLeft","TopRight","BottomLeft","BottomRight","Width","childTriangleList","Triangle","newList","tri","subDivideNoNormalize","miter","p1","p2","p3","createWithMiter","test","worldLocal","wv","td","cullInside","_initRings","_ringsVertexBuffer","_ringsTexture","_triangleCountRings","inner","outer","radStep","rads1","rads2","zOrder","ppList","screenSpacePnt","diameter","planetPosition","brush","get_showMoonsAsPointSource","_planetPoints","raRadius","_planetSprite","clip","_drawPlanetPhase","phase","dark","mapTo0To360Range","hoursToRadians","Planets$","Material$","InViewReturnMessage","aborted","InViewReturnMessage$","RenderContext","_viewPoint","_fovAngle","_fovScale","_nominalRadius","_mainTexture","viewMover","az","targetAlt","targetAz","_backgroundImageset","_foregroundImageset","_activeCatalogHipsImagesets","_targetHeight","targetAltitude","_galactic","_galacticMatrix","_firstTimeInit","_useSolarSystemTilt","customTrackingParams","_cameraOffset","_fovLocal","perspectiveFov","nearPlane","_frustumDirty","_frustum","_ambientLightColor","_hemiLightColor","_hemiLightUp","_sunlightColor","_sunPosition","_reflectedLightColor","_reflectedLightPosition","_occludingPlanetRadius","_occludingPlanetPosition","_lightingStateDirty","_twoSidedLighting","_skyColor","getTilesYForLevel","maxY","getTilesXForLevel","maxX","RenderContext$","viewport","rAtoViewLng","set_fovScale","_view","set_view","get_viewBase","_viewBase","set_viewBase","_world","_getScreenTexture","_worldBase","_worldBaseNonRotating","get_mainTexture","onTarget","setTexture","viewModeChanged","_freezeView","clampZooms","set_foregroundImageset","get_catalogHipsImagesets","onComplete","onHeaderInfoLoad","_tryGetAllDataInView","catalogSpreadSheetLayer","anyTileStillDownloading","tile","TileCache","getTile","tileAndChildrenReady","getDataInView","get__table","returnMessage","getTableDataInView","onLoad","removeCatalogHips","getCatalogHipsByName","getAltitudeForLatLongForPlanet","viewLat","viewLong","isPointInTile","getSurfacePointAltitude","getEarthAltitude","ViewLat","ViewLong","EarthMat","getMetersAltitudeForLatLong","getScaledAltitudeForLatLong","_getTileAtLatLong","_setupMatricesLand3d","WorldMatrix","geoTo3d","heightNow","rotLocal","m_nearPlane","_setMatrixes","setupMatricesSpace3d","canvasWidth","canvasHeight","gPoint","galactictoJ2000","camLocal","set_az","set_alt","currentRaDec","fromLatLng","localZoomFactor","get_solarSystemTrack","get_sandboxMode","get_trackingFrame","get_fovLocal","set_fovLocal","setupMatricesOverlays","lookFrom","setupMatricesSolarSystem","forStars","cameraDistance","trackingMatrix","viewAdjust","get_ambientLightColor","get_hemisphereLightUp","set_reflectedLightPosition","set_occludingPlanetRadius","set_occludingPlanetPosition","get_twoSidedLighting","set_twoSidedLighting","viewProjection","inverseWorld","_initGL","getExtension","freezeView","diffuseTex","specularTex","normalMap","expansionInPixels","tileLevel","_ta","_tb","_tc","_expandedS0","_expandedS1","_expandedS2","img","_texture","makeNormal","expansion","_getMiterPoint","edgeOffset","edge2","dir","sineHalfAngle","net","_miterPoint","p1x","p1y","p2x","p2y","p3x","p3y","ExpansionInPixels","e1x","e1y","e2x","e2y","deltax","deltay","_miterPointOut","RenderTriangle$","_checkBackface","ab","ac","cp","_drawTriangle","trianglesCulled","im","x0","y0","sx0","sy0","sx1","sy1","sx2","sy2","intersects","denom","h4","lineRectangleIntersect","top_intersection","bottom_intersection","toptrianglepoint","bottomtrianglepoint","topoverlap","botoverlap","ScriptInterface","_missedReady","hideTourFeedback","_smoothAnimation","_showCaptions","_containsFitsLikeExtentsion","lowerCaseUrl","_addImageSet","loaded","imagesetLayer","_addFitsLayer","wcsLoaded","wcsImage","errored","set_imageSet","useGlVersion2","FitsImageJs","ScriptInterface$","__ready","remove_ready","_fireReady","add_collectionLoaded","__collectionLoaded","remove_collectionLoaded","_fireCollectionLoaded","CollectionLoadedEventArgs","add_colorPickerDisplay","__colorPickerDisplay","remove_colorPickerDisplay","add_voTableDisplay","__voTableDisplay","remove_voTableDisplay","add_refreshLayerManager","__refreshLayerManager","remove_refreshLayerManager","__arrived","remove_arrived","add_clicked","__clicked","remove_clicked","add_annotationClicked","__annotationClicked","remove_annotationClicked","add_imageryLoaded","__imageryLoaded","remove_imageryLoaded","__tourReady","remove_tourReady","add_tourError","__tourError","remove_tourError","add_tourPaused","__tourPaused","remove_tourPaused","add_tourResumed","__tourResumed","remove_tourResumed","__tourEnded","remove_tourEnded","add_slideChanged","__slideChanged","remove_slideChanged","add_timeScrubberHook","__timeScrubberHook","remove_timeScrubberHook","setTimeScrubberPosition","posLeft","showColorPicker","pickerInstance","_fireTourReady","_fireTourError","_fireTourPaused","_fireTourResume","_fireTourEnded","_fireImageryLoaded","_fireClick","ArrivedEventArgs","_fireArrived","_fireAnnotationclicked","Dec","AnnotationClickEventArgs","_fireSlideChanged","caption","SlideChangedEventArgs","endInit","gotoRaDecZoom","getLayers","addCatalogHipsByNameWithCallback","setCutsForFits","setColorMapForFits","setScaleTypeForFits","hideUI","hide","loadFits","getImageSetByUrl","get_hideTourFeedback","set_hideTourFeedback","playCurrentTour","stopTour","stopCurrentTour","_imageUrl","Wtml","_imageFileLoaded","createFolder","createPolygon","Poly","createPolyLine","PolyLine","createCircle","Circle","_addAnnotation","_removeAnnotation","_clearAnnotations","get_smoothAnimation","set_smoothAnimation","get_showCaptions","set_showCaptions","loadVOTable","useCurrentView","get_fov","autoRepeatTour","_localHorizonMode","_galacticMode","_constellationBoundryColor","_constellationSelectionColor","_constellationFigureColor","_showConstellationFigures","_showConstellationBoundries","_showConstellationSelection","_showCrosshairs","_crosshairsColor","_showEcliptic","_locationLat","_locationLng","_locationAltitude","_showFiledOfView","_actualPlanetScale","_fovCamera","_fovEyepiece","_fovTelescope","_showClouds","_showGrid","_showHorizon","_showHorizonPanorama","_showMoonsAsPointSource","_showSolarSystem","_solarSystemStars","_solarSystemMilkyWay","_solarSystemCosmos","_solarSystemOrbits","_solarSystemOverlays","_solarSystemLighting","_solarSystemMultiRes","_solarSystemScale","_smoothPan","_showElevationModel","_showEquatorialGridText","_showGalacticGrid","_showGalacticGridText","_showEclipticGrid","_showEclipticGridText","_showEclipticOverviewText","_showAltAzGrid","_showAltAzGridText","_showPrecessionChart","_showConstellationPictures","_showConstellationLabels","_solarSystemCMB","_solarSystemMinorPlanets","_solarSystemPlanets","_showEarthSky","_solarSystemMinorOrbits","_constellationsEnabled","_constellationFiguresFilter","_constellationBoundariesFilter","_constellationNamesFilter","_constellationArtFilter","_showSkyOverlays","_showConstellations","_showSkyNode","_showSkyGrids","_showSkyOverlaysIn3d","_earthCutawayView","_showISSModel","_milkyWayModel","_minorPlanetsFilter","_planetOrbitsFilter","_constellations","_active","tourSettings","Settings$","get_fovCamera","get_fovEyepiece","get_fovTelescope","get_showClouds","get_showFieldOfView","get_showHorizonPanorama","getSetting","SettingParameter","_glyphVersion","_textObject","TextObject","_vertCount","Text3dBatch$","newItem","drawHeight","t3d","screenSpaceTop","textBaseline","tm","measureText","_glyphCache","prepareBatch","ready","_vertexBuffer","get_texture","GlyphCache","getCache","fontSize","fntAdjust","getGlyphItem","extents","charsLeft","addGlyphPoints","uvRect","vertBuf","GlyphItem","glyph","referenceCount","_fromXML","GlyphItem$","addRef","release","_cellHeight","_gridSize","_glyphItems","textObject","_textureDirty","_caches","cleanUpAll","GlyphCache$","get_height","_glyphXmlReady","_loadXmlGlyph","glyphItem","_allGlyphs","_makeTexture","_calcOrMake","_calculateGlyphDetails","addGlyph","fontsize","bank","_matInit","alignment","Text3d$","upTan","get_left","get_right","get_top","get_bottom","ul","ur","ll","lr","lookAtInv","_rtbMat","_syncToClock","justNow","_timeRate","last","ticks","_now","getTimeForFutureTime","future","getJNowForFutureTime","syncTime","_altitude","set_altitude","_location","set_location","julianToUtc","ms","pre1950","days","fraction","dateToTwoLineDate","fullYear","dayofyear","sDay","tleDayString","utc","SpaceTimeController$","BMV","sa","_makeColor","_makeDistanceAndMagnitude","Star$","get_coordinates","fromRaDec","get_asPlace","containment","stars","newish","bmv","sdssID","readInt64","getEType","_eTypeBuckets","Galaxy$","LatLngEdges","LatLngEdges$","_renderTriangleLists","_indexBuffers","tileX","tileY","isCatalogTile","readyToRender","inViewFrustum","globalCenter","localCenter","renderedAtOrBelowGeneration","_demScaleFactor","demIndex","demAverage","demReady","texReady","demTile","demDownloading","renderedGeneration","accomidation","accessCount","downloading","geometryCreated","_isHdTile","demSize","_topLeftScreen","_bottomRightScreen","_topRightScreen","_bottomLeftScreen","sphereRadius","sphereCenter","requestHits","requestPending","_key","_tileId","_vertexCount","renderChildPart","getFrustumList","frustumList","get_subDivisions","Tile$","getIndexBuffer","fitsImage","dataUnit","addVertex","geoTo3dWithAlt","useLocalCenter","rev","demData","retVal","geoTo3dWithAltitude","get__demScaleFactor","set__demScaleFactor","requestImage","FitsImageTile","get_URL","removeFromQueue","get_key","createTiledFits","getTexture","get_dataset","createDemFromParent","_loadDemData","demFile","fv","requestDem","callCount","xhr","XMLHttpRequest","response","get_demURL","currentRenderGeneration","tilesTouched","accessID","xMax","addTileToQueue","childIndex","yOffset","xOffset","anythingToRender","childRendered","isTileInFrustum","isTileBigEnough","createGeometry","tilesInView","_computeAccomidation","renderPart","accVal","useAccomidation","getCachedTile","norm","light","buf","calcSphere","corners","topLength","bottomLength","leftLength","rightLength","lengthMax","deepestLevel","get_sphereRadius","get_sphereCenter","onCreateVertexBuffer","set_dataset","rewritten_url","returnUrl","getServerID","getTileID","hash","server","netLevel","netX","netY","tileMap","mask","get_vertexCount","set_vertexCount","retTile","tileKey","_tiles","getReadyToRenderTileCount","notReadyCullList","readyCullList","processQueue","_queue","openThreads","minDistance","overlayTile","maxKey","vectTemp","distTemp","thisIsOverlay","workTile","hitValue","clearCache","purgeQueue","purgeLRU","maxReadyToRenderSize","readyToRenderCount","totalToPurge","maxTileCacheSize","decimateQueue","TileCache$","DistanceCalc","lineToPoint","getUVFromInnerPoint","dUpper","dLower","dVert","dRight","dLeft","dHoriz","DistanceCalc$","userLevel","averageRating","lengthInSecs","_tourUrl","authorEmail","author","authorURL","authorImageUrl","organizationUrl","organizationName","relatedTours","Tour$","set_tourUrl","FileEntry","FileEntry$","FileCabinet","tempDirectory","_currentOffset","_packageID","clearFileList","callMe","_callMe","FileCabinet$","get_packageID","set_packageID","addFile","_fileDirectory","fe","fileList","packageFiles","XmlTextWriter","formatting","_writeProcessingInstruction","_writeFullEndElement","_close","Blob","sizeText","blobs","cabBlob","_loadCabinet","_mainBlob","_getSize","extract","cab","files","getFileEntry","ext","get_masterFile","clearTempFiles","edgeTrigger","SettingParameter$","Overlay","isDynamic","isDesignTimeOnly","nextId","_owner","_linkID","_domeMatrix","_domeMatX","_domeMatY","_domeAngle","_animate","_tweenFactor","_endX","_endY","_endOpacity","_endColor","_endWidth","_endHeight","_endRotationAngle","_anchor","_x","_y","_width","_height","_rotationAngle","currentRotation","_interpolationType","overlay","overlayClassName","newOverlay","AudioOverlay","BitmapOverlay","FlipbookOverlay","ShapeOverlay","TextOverlay","_initOverlayFromXml","Overlay$","get_owner","set_owner","get_zOrder","get_overlays","get_linkID","set_linkID","seek","makePosition","designTime","useGl","initializeTexture","initializeGeometry","updateRotation","prepMultimedia","cleanUpGeometry","get_x","get_y","get_width","get_rotationAngle","get_animate","set_animate","get_tweenFactor","set_tweenFactor","get_anchor","set_anchor","set_x","set_y","set_height","red","green","blue","set_rotationAngle","tempPoints","get_interpolationType","set_interpolationType","saveKeys","writeOverlayProperties","Selection","_singleSelectHandles","_multiSelectHandles","_focusHandles","selectionSet","_focus","_ratio","_sprite","Selection$","clearSelection","addSelection","addSelectionRange","overlays","ov","isOverlaySelected","setSelection","get_multiSelect","setSelectionRange","get_focus","set_focus","transparancy","_drawSelectionHandles","handleTexture","handles","makeHandles","handle","pointToSelectionSpace","pntIn","pointToScreenSpace","handleSize","bold","italic","underline","borderStyle","fontName","forgroundColor","backgroundColor","foregroundColor","newTextObject","TextObject$","_writeString","TourDocument","_tourDirty","_workingDirectory","_tagId","_representativeThumbnailTourstop","_title","_runTime","_lastDirtyCheck","_description","_attributesAndCredits","_authorEmailOther","_authorEmail","_authorUrl","_authorPhone","_authorContactText","_orgName","_orgUrl","_author","_authorImageUrl","_authorImage","_organizationUrl","_filename","_taxonomy","_keywords","_editMode","explicitTourLinks","implicitTourLinks","_tourStops","_currentTourstopIndex","_textureList","_textureList2d","_fileCache","dontCleanUpTempFiles","get_baseWorkingDirectory","_cabinet","fromUrlRaw","TourDocument$","get_tourDirty","set_tourDirty","get_workingDirectory","set_workingDirectory","_loadXmlDocument","master","set_title","set_author","set_orgName","TourStops","tourStop","addTourStop","TourStop","Frames","newFrame","Layers","imageSetLayer","$e4","saveToDataUrl","createObjectURL","excludeAudio","getTourXML","_addFilesToCabinet","masterList","_createLayerMasterList","get_orgName","timeLineTour","_isTimelineTour","referencedFrames","_getReferenceFrameList","get_tagId","set_tagId","get_authorThumbnailFilename","get_tourThumbnailFilename","get_tourStopThumbnailFilename","get_title","_calculateRunTime","get_attributesAndCredits","set_attributesAndCredits","get_authorEmailOther","set_authorEmailOther","get_authorEmail","set_authorEmail","get_authorUrl","set_authorUrl","get_authorPhone","set_authorPhone","get_authorContactText","set_authorContactText","get_orgUrl","set_orgUrl","get_author","get_authorImageUrl","set_authorImageUrl","get_authorImage","set_authorImage","get_organizationUrl","set_organizationUrl","get_fileName","set_fileName","get_taxonomy","set_taxonomy","get_editMode","set_editMode","set_tourStops","set_currentTourstopIndex","insertTourStop","insertAfterTourStop","removeTourStop","totalTime","get__transition","get_endTarget","elapsedTimeSinceLastMaster","masterOut","get_masterSlide","MasterTime","getMasterSlideForIndex","getTourStopIndexByID","getCachedTexture","addCachedFile","set_currentTourStop","TourEditTab","musicTrack","SoundEditor","voiceTrack","_tour","tourStopList","TourStopList","tourEditorUI","TourEditor","nextSlideCallback","playing","_defultColor","TourEditTab$","setUiStrings","set_tour","defaultAnchor","selectedItem","setEditMode","tour_CurrentTourstopChanged","OverlayList","_updateOverlayList","selection","setFocusedChild","selectCurrent","tourEdit_Load","playNow","fromStart","setPlayPauseMode","_tourPlayer_TourEnded","_endTour_CloseTour","_endTour_LaunchTour","tourStopList_ItemClicked","_playFromHere_Click","tourStopList_ItemDoubleClicked","showSlideStartPosition","syncSettings","set_tweenPosition","tourStopList_MouseClick","multipleSelection","_dispose","selectAllMenu","cutMenu","sep1","clipboardType","sep2","insertSlide","sep3","sep4","sep5","sep6","sep7","insertDuplicate","insertSlideshow","playFromHere","captureThumbnail","setSkyPosition","setEndSkyPosition","showSkyPosition","showEndSkyPosition","masterSlide","linkString","get_nextSlide","setNextSlide","trackSpaceTime","fadeInOverlays","properties","interpolation","Linear","Ease","EaseIn","EaseOut","Exponential","get_hasTime","get_fadeInOverlays","clientX","clientY","_selectAllMenu_Click","selectAll","_interpolation_Click","_nextSlideChosen","_selectDialog","get_OK","set_nextSlide","_setNextSlide_Click","SelectLink","_insertDuplicate_Click","Undo","UndoTourSlidelistChange","set_endTarget","set_fadeInOverlays","_fadeInOverlays_Click","_insertSlideshow_Click","_trackSpaceTime_Click","UndoTourStopChange","set_hasTime","_masterSlide_Click","set_masterSlide","playFromCurrentTourstop","_showSkyPosition_Click","_showEndSkyPosition_Click","gotoTargetFull","_setEndSkyPosition_Click","TimeLine","refreshUi","_setSkyPosition_Click","captureSettings","_captureThumbnail_Click","_captureThumbnail","_properties_Click","tourStopList_AddNewSlide","ensureAddVisible","_addNewSlide_Click","_insertNewSlide_Click","set_current","Cursors","get_waitCursor","placeName","newTourStop","findItem","get_defaultV","selectedItems","_pasteMenu_Click","clipboardData","pasteStack","curIndex","writer","_cutMenu_Click","preview_Click","set__mover","playerTimer_Tick","insertShapeCircle_Click","insertShapeRectangle_Click","insertShapeLine_Click","insertDonut_Click","_addArrow_Click","insertVideo_Click","insertAudio_Click","insertHyperlink_Click","colorPicker_Click","tourEditTab_Leave","editTourProperties_Click","saveTour_Click","saveAs","addVideo_Click","addPicture_Click","addShape_Click","_addOpenRectangle_Click","_addStar_Click","addText_Click","preview_EnabledChanged","preview_MouseEnter","preview_MouseLeave","preview_MouseUp","preview_MouseDown","tourStopList_ItemHover","undoStep","peekAction","stepBack","redoStep","peekRedoAction","stepForward","tourStopList_ShowEndPosition","tourStopList_ShowStartPosition","tourStopList_KeyDown","ctrlKey","TourEdit","_undoStep","_beep","_redoStep","_ensureSelectedVisible","ensureSelectedVisible","_selectionAction","_needUndoFrame","_contextPoint","_dragCopying","_brokeThreshold","editTextCallback","_defaultColor","TourEditor$","currentEditor","_updateOverlayListSelection","pointToView","clientHeight","clientWidth","viewWidth","mouseDown","_pointDown","hit","mouseUp","button","showSelectionContextMenu","_showNoSelectionContextMenu","mouseMove","moveX","moveY","undoFrame","actionText","addOverlay","aspect","set_actionText","get_sizeAll","get_sizeNWSE","get_sizeNS","get_sizeNESW","get_sizeWE","_insertShapeCircle_Click","_insertShapeRectangle_Click","_insertShapeLine_Click","_insertDonut_Click","multiSelect","bringToFront","sendToBack","bringForward","sendBackward","editText","animateMenu","linkID","pickColor","flipbookProperties","interpolateMenu","Default","Align","AlignTop","AlignBottom","AlignLeft","AlignRight","AlignHorizon","AlignVertical","AlignCenter","_editText_Click","_editText","_alignVertical_Click","xCenter","_alignHorizon_Click","yCenter","_alignCenter_Click","_alignRight_Click","_alignLeft_Click","_alignBottom_Click","_alignTop_Click","_linkSlideChosen","selectDialog","_linkID_Click","_flipbookProperties_Click","_animateMenu_Click","animate","_url_Click","_pickColor_Click","_volume_Click","vol","PopupVolume","volume","get_volume","set_volume","removeOverlay","OverlayProperties","_bringForward_Click","_getSortedSelection","_sendBackward_Click","_sendToBack_Click","_bringToFront_Click","sorted","compare","found","mouseClick","mouseDoubleClick","_doneEditing","textObj","keyDown","increment","_selectLast","_selectNext","altKey","_selectCurrent","getNextOverlay","getPerviousOverlay","keyUp","addPicture","bmp","addFlipbook","addAudio","audio","set_musicTrack","set_voiceTrack","addVideo","addText","ol","srcShapeOverlay","get_shapeType","srcTxtOverlay","srcBmpOverlay","bitmap","srcFlipbookOverlay","shapeType","getCurrentColor","setCurrentColor","hover","currentTourStop","OverlayList$","TourEdit$","SoundEditor$","refreshCallback","hitType","TourStopList$","TimeLine$","_overlayBlend","_onTarget","_currentMasterSlide","_callStack","_leaveSettingsWhenStopped","_playing","set_playing","TourPlayer$","updateSlideStates","_slideStartTime","get_musicTrack","get_voiceTrack","aspectNow","nextSlide","get_isLinked","_stopCurrentMaster","_hideUI","get_leaveSettingsWhenStopped","_playMasterForCurrent","currentMaster","duration","noSwitchBackFullScreen","_switchedToFullScreen","noRestoreUIOnStop","slideChanging","slideElapsedTime","faderOpacity","set_crossFadeFrame","get__transitionHoldTime","get__transitionTime","nextTrans","nextTransTime","get__transitionOutTime","tween","linkItem","_openUrl","_closeTour","_playNextSlide","_playPreviousSlide","MasterTime$","_tourStopType","_keyFramed","_tweenPosition","_transition","_transitionTime","_transitionHoldTime","_transitionOutTime","_nextSlide","_fadeInOverlays","_masterSlide","_duration","_hasLocation","_hasTime","_showFieldOfView","_thumbnailString","_overlays","_musicTrack","_voiceTrack","_target","getXmlText","endTarget","_endTarget","musicNode","voiceNode","_loadLayerList","TourStop$","get_tourStopType","set_tourStopType","set__transition","set__transitionTime","set__transitionHoldTime","set__transitionOutTime","set_duration","get_hasLocation","set_hasLocation","getOverlayById","saveContent","xmlDuration","_writeLayerList","_writeValue","getNextDefaultName","baseName","suffixId","layersNode","innerHTML","LayerInfo$","_undoXml","_redoXml","_currentIndex","_actionText","_targetTour","UndoTourStopChange$","get_actionText","undo","tsRedo","parser","redo","_undoStack","_redoStack","peekActionString","peekRedoActionString","Undo$","UndoStep","UndoStep$","_undoList","UndoTourSlidelistChange$","_redoList","UndoTourPropertiesChange","_undoDomeMode","_undoLevel","_redoDomeMode","_redoLevel","_undoTitle","_undoAuthor","_undoAuthorEmail","_undoDescription","_undoAuthorImage","_undoOrganizationUrl","_undoOrgName","_undoKeywords","_undoTaxonomy","UndoTourPropertiesChange$","_redoTitle","_redoAuthor","_redoAuthorEmail","_redoDescription","_redoAuthorImage","_redoOrganizationUrl","_redoOrgName","_redoKeywords","_redoTaxonomy","Triangle$","subDivide","triList","a1","a1uv","b1uv","c1uv","aIndex","bIndex","cIndex","names","delim","SolarSystemCameraDistance","metersToSolarSystemDistance","metersToZoom","formatDistance","km","au","ly","mpc","formatDecimalHours","dayFraction","minutes","seconds","nestingLevel","delimiters","UiTools$","stringContains","chars","charCodeAt","timespan","sec","amPm","getWrappedText","Util$","Rectangle$","_between","n1","n2","_guid","random","uuid","v5","Guid$","enumType","enumString","Enums$","element","me","offsetParent","offsetLeft","offsetTop","Language$","style","Cursor$","get_arrow","get_cross","get_hand","get_help","get_hSplit","get_iBeam","get_no","get_upArrow","get_vSplit","Cursors$","_return","_next","_linkSlide","_slide","_ok","set_next","SelectLink$","get_returnCaller","set_returnCaller","get_next","get_linkToSlide","set_linkToSlide","set_OK","PopupVolume$","PopupColorPicker","PopupColorPicker$","OverlayProperties$","arraybuf","BinaryReader$","get_endOfStream","readSByte","readRemainingI16","i16Remaining","readInt16","readByteString","readUInt16LittleEndian","littleEndian","readInt32","Bitmap","_buffer","Bitmap$","setPixel","ColorPicker$","nonMenuClick","getColorFromClick","pixels","getImageData","ContextMenuStrip$","_nonMenuClick","display","removeEventListener","popup","firstChild","_menuItemClicked","currentTarget","itemTag","className","md","innerText","it","_openSubMenu","parentNode","tsmi","ToolStripMenuItem$","TagMe","TagMe$","Dialog","Dialog$","add_showDialogHook","__showDialogHook","remove_showDialogHook","dialogArgs","_dropDown","_downPosition","_lowPosition","_highPosition","_center","_ignoreNextClick","_dragType","selectedCurveStyle","updateImage","updateScale","low","hi","updateColorMapper","Histogram$","closeBtn","ignoreMe","curveStyleSelected","selectedIndex","setUpdateTimer","onPointerDown","setPointerCapture","pointerId","cancelBubble","onPointerMove","hWidth","adCenter","moved","onPointerUp","srcElement","releasePointerCapture","getScaledBitmap","drawHistogram","Curve","diff","jump","_textElement","SimpleInput$","simpleInputElement","modalElement","marginLeft","marginTop","titleDiv","labelDiv","okButton","cancelButton","_okCallback","okClicked","cancelClicked","textChanged","_elementStack","_pending","_currentName","_attributes","XmlTextWriter$","_pushNewElement","_writePending","fullClose","closed","VizLayer","_dateColumn","_latColumn","_lngColumn","_depthColumn","_magColumn","VizLayer$","gotHeader","prepare","eventTime","geoTo3dRad","DataItem$","getColor","_triedOnce","WebFile$","appVersion","_ieCrossDomain","_CORS","_message","textReceived","_loadBlob","_blobdata","_error","_timeOut","_xdr","XDomainRequest","responseText","onTimeout","_xhr","onreadystatechange","readyState","statusText","FolderDownloadAction","_numLoadingFolders","FolderDownloadAction$","_folderLoaded","startingNewFolderLoad","loadImagesets","folderDownloadAction","addImageSetToRepository","imageSetName","Wtml$","_annotations","_hoverText","_hoverTextPoint","_lastMouseMove","_frameCount","_zoomMax","_zoomMaxSolarSystem","_zoomMin","_zoomMinSolarSystem","_fadePoints","fader","_crossFadeFrame","_crossFadeTexture","_milkyWayBackground","_beginZoom","_isPinching","_pointerIds","_pinchingZoomRect","_moved","_foregroundCanvas","_fgDevice","_tracking","_trackingObject","_solarSystemTrack","_moving","_targetStudyImageset","_targetBackgroundImageset","_crossHairs","imagesetToAdd","imageSets","get_renderNeeded","_renderNeeded","initControl","DivId","initControl2","initControlParam","webgl_ignored","startRenderLoop","startLat","startLng","startZoom","_createCanvasElement","warn","div","useUserLocation","geolocation","getCurrentPosition","_getLocation","_getLocationError","setBackgroundImageName","setForegroundImageName","showLayers","showDataLayers","WWTControl$","_annotationclicked","note","_annotationHover","get_zoomMax","set_zoomMax","setSolarSystemMaxZoom","get_zoomMin","set_zoomMin","setSolarSystemMinZoom","_notifyMoveComplete","get_crossFadeFrame","_fadeFrame","sizeChange","lastDeepestLevel","get__mover","newCam","j2000toGalactic","currentAltAz","equitorialToHorizon","get_alt","get_az","_updateViewParameters","milkyWayBlend","milkyWayBlendIn","matOldMW","matLocalMW","_drawSkyOverlays","oldCamera","vt","saveDevice","clearRect","lastVersion","get_planetLike","get_space","worldSave","viewSave","projSave","_drawCrosshairs","raDecDown","_drawHoverText","trianglesRendered","solarSystemObjectsNames","constellationsFigures","constellationsBoundries","oneMinusDragCoefficient","dc","minDelta","onGestureStart","onGestureEnd","stopPropagation","WWTElementEvent","t0","touches","newRect","oldDist","getDistance","newDist","ratio","curX","curY","pe","evt","cnv","msSetPointerCapture","newDist0","ratio0","abslog0","isFinite","newDist1","ratio1","abslog1","onMouseWheel","deltaY","wheelDelta","onKeyDown","onContextMenu","PickRayDir","transformPickPointToWorldSpace","cartesianToSphericalSky","ptCursor","backBufferWidth","backBufferHeight","vPickRayDir","_setupComplete","gotoTarget3","jumpTime","camTo","vect","fromParams","toVector","solarMover","cameraParams","studyImageSet","_mover_Midpoint","fadeInImageSet","newImageSet","_getRealImagesetFromGeneric","imageSetType","generic","setupTour","pauseCurrentTour","newBackground","newForeground","catalogHips","halfLength","halfHeight","halfWidth","blobReady","imageAspect","clientAspect","cw","cx","cy","msToBlob","toBlob","toDataURL","rc","WWTElementEvent$","_ascention","_declination","RCRA","raDecTo3dMat","raDecTo3dPointRad","sterographicTo3d","standardLat","meridean","falseEasting","falseNorthing","re","rere","equitorial","hourAngle","ha","sinAlt","cosAzimith","azimuth","altAz","haLocal","_altAzToRaDec","hrAngle","julianDays","julianCenturies","mst","cartesianToSpherical","cartesianToSpherical3","formatDMSSign","signString","twoPlaces","formatDMSWide","formatHMS","parseRA","parseDec","dmsToDegrees","radiansToHours","hoursToDegrees","degreesToHours","mapTo0To24Range","J2000RA","J2000DEC","J2000pos","_rotationMatrix","Galacticpos","GalacticL2","GalacticB2","Coordinates$","Fxyf","fx","fy","_fromHploc$1","za","tt","_inv_halfpi$1","_twothird$1","temp1","temp2","jp","jm","ifp","ifm","face_num","ntt","fromVector","Fxyf$","toHploc","nr","jr","jrll","jpll","_halfpi$1","_vertexList$1","_nside$1","_tileIndex$1","_face$1","_faceX$1","_faceY$1","_step$1","_subDivided$1","_catalogRows$1","parentTile","_computeBoundingSphere$1","HealpixTile$","_url$1","_getUrl$1","_setStep$1","_calcSphere$1","_setCorners$1","_populateVertexList$1","_galacticMatrix$1","_setIndexBufferForQuadrant$1","exception","_processIndexBuffer$1","_getHipsFileExtension$1","tileTextureIndex","subDirIndex","arcPixels","_boundaries$1","nside","xyf","xc","yc","drawCatalogTile","onlyDrawChildren","partCount","anyChildInFrustum","removeCatalogTile","_addCatalogTile$1","removeTileRows","addTileRows","_extractCatalogTileRows$1","headerRemoved","_catalogData$1","allChildrenReady","_loadCatalogData$1","_isLeftOfHalfSpace$1","_getAltitudeFromLatLng$1","uud","vvd","uu","vv","va","demArray","_returnBuffers$1","_vertexOfLastRow$1","callMeBack","numAxis","histogramMaxCount","sourceBlob","bufferSize","_parseSuccessful$1","fitsProperties","_callBack$1","_readFromBlob$1","FitsImage$","_webFile$1","readFromBin","DataView","_readByteString$1","dataView","getUint8","_validateFitsSimple$1","keyword","foundEnd","_addKeyword$1","axisSize","axis","bitpix","readDataUnit","histogram","computeHistogram","computeWcs","readDataUnitFloat64","readDataUnitFloat32","readDataUnitUint8","readDataUnitInt16","readDataUnitInt32","byteLength","getFloat64","physicalValue","getFloat32","getInt16","getInt32","populateHistogram","maxCounter","buckets","naN","logMax","_fill$1","_skyRelative$1","_strokeWidth$1","_radius$1","_lineColor$1","_fillColor$1","_ra$1","_dec$1","Circle$","setCenter","onScreen","xNormal","yNormal","radiansPerSegment","_points$1","Poly$","PolyLine$","_tileDegrees$1","_topDown$1","_subDivisionLevel$1","computeBoundingSphere","EquirectangularTile$","latCenter","lngCenter","distVect","computeBoundingSphereBottomsUp","tileDegrees","_createGeometryBottomsUp$1","tileDegreesX","tileDegreesY","textureStep","quarterDivisions","_verts$1","PositionVertexBuffer$","PositionTextureVertexBuffer$","PositionNormalTexturedVertexBuffer$","PositionNormalTexturedTangentVertexBuffer$","KeplerVertexBuffer$","TimeSeriesLineVertexBuffer$","TimeSeriesPointVertexBuffer$","PositionColoredVertexBuffer$","PositionColoredTexturedVertexBuffer","PositionColoredTexturedVertexBuffer$","ScaleLinear","_min$1","_max$1","_factor$1","_logFactor$1","ScaleLinear$","ScaleLog","ScaleLog$","ScalePow","_powFactor$1","ScalePow$","ScaleSqrt","_sqrtFactor$1","ScaleSqrt$","HistogramEqualization","_maxHistogramValue$1","_histogram$1","_lookup$1","totalCounts","HistogramEqualization$","_triangleList$1","_latStart$1","_lngStart$1","_latEnd$1","_lngEnd$1","_width$1","_percentComplete$1","GreatCirlceRouteLayer$","_initializeRoute$1","steps","startNormal","lastLeft","lastRight","firstTime","cl","cr","get_latStart","get_lngStart","get_latEnd","get_lngEnd","get_percentComplete","set_percentComplete","GridLayer$","_imageSet$1","_extension$1","_overrideDefaultLayer$1","_loaded$1","ImageSetLayer$","_isFitsImageset$1","hasFitsExt","imageSetNode","setImageScale","setImageScaleRaw","newMin","newMax","setImageZ","get_colorMapper","fi","LayerCollection","LayerCollection$","_primaryUI$1","_heading$1","_flipV$1","_flipHandedness$1","_smooth$1","_twoSidedGeometry$1","_pitch$1","_roll$1","_scale$1","_translate$1","_lightID$1","_dirty$1","objType","_xHandle$1","_yHandle$1","_zHandle$1","_hprHandles$1","_uiScale$1","_showEditUi$1","_dragMode$1","_pntDown$1","_valueOnDown$1","_valueOnDown2$1","_hitDist$1","_lockPreferedAxis$1","_preferY$1","_initTranslateUI$1","_translateUILines$1","_translateUI$1","twoPi","pnt3","_initRotateUI$1","_initScaleUI$1","_scaleUI$1","_makeCube$1","tl","med","_rotateUi$1","pnt4","Object3dLayer$","Object3dLayerUI","get_flipV","set_flipV","object3d","get_flipHandedness","set_flipHandedness","get_smooth","set_smooth","get_twoSidedGeometry","set_twoSidedGeometry","get_heading","set_heading","get_pitch","set_pitch","get_roll","set_roll","get_scale","set_scale","get_translate","set_translate","get_lightID","set_lightID","add_propertiesChanged","__propertiesChanged$1","remove_propertiesChanged","fireChanged","renderEngine","preRender","distX","distY","_layer$1","_opened$1","_callbacks$1","Object3dLayerUI$","_loadTree$1","_node_NodeChecked$1","_node_NodeSelected$1","showRowData","_frames$1","_pointOpacity$1","_pointColor$1","_filename$1","_dataFile$1","OrbitLayer$","get_frames","set_frames","OrbitLayerUI","get_pointOpacity","set_pointOpacity","get_pointColor","set_pointColor","dataFile","OrbitLayerUI$","_dataDirty$1","_lastNormalizeSizeColumnIndex$1","_lastDynamicColorColumnIndex$1","_table_backcompat$1","_barChartBitmask$1","_barScaleFactor$1","_meanRadius$1","_table$1","isLongIndex","shapeVertexCount","fixedSize","_dynamicData$1","_autoUpdate$1","_dataSourceUrl$1","_beginRange$1","_endRange$1","markerDomainValues","colorDomainValues","_coordinatesType$1","_xAxisColumn$1","_yAxisColumn$1","_zAxisColumn$1","_xAxisReverse$1","_yAxisReverse$1","_zAxisReverse$1","_altType$1","_markerMix$1","_raUnits$1","colorMap","_dynamicColorColumnName$1","_markerColumn$1","_plotType$1","_markerIndex$1","_showFarSide$1","_markerScale$1","_altUnit$1","_cartesianScale$1","_cartesianCustomScale$1","_normalizeSizeColumnName$1","_hyperlinkFormat$1","_hyperlinkColumn$1","positions","bufferIsFlat","dirty","_getDatafromFeed$1","_executeQuery$1","execlToDateTime","excelDate","es","get__circleTexture$1","_circleTexture$1","SpreadSheetLayer$","get_header","dynamicUpdate","guessHeaderAssignments","computeDateDomainRange","_fileName$1","_prepareBackCompatTable$1","normalizedPointSize","normalizePointSize","pointColors","normalizeColorMapValue","headerName","_guessHeaderAssignment$1","guessHeaderAssignmentsFromVoTable","votable","decColumn","raColumn","magColumn","columnStart","columnEnd","sucsess","dateTimeStart","dateTimeEnd","checkState","getMaxValue","getDomainValues","domainValues","_isPointInFrustum$1","prepVertexBuffer","lineList2d","triangleList2d","colorLocal","mr","pointColor","pointStartTime","pointEndTime","Xcoord","Ycoord","Zcoord","distParces","getScaleFactor","xyzScale","get_colorMap","_parseColor$1","dateTime","_parseGeometry$1","polyColor","commandPart","parens","command","mods","_parsePolygon$1","_parseLineString$1","shapes","_addPolygon$1","_addPolygonFlat$1","single","_splitShapes$1","shapeList","nesting","geo","vertexListGround","colorText","defaultColor","AltUnit","set__table","purgeByTime","columnToUse","threasholdTime","colDate","cleanUpBase","get_markerMix","set_markerMix","set_colorMap","new_value","adjustedScale","TimeSeriesLayer","_colorMap$1","_colorMapColumn$1","TimeSeriesLayer$","set__colorMap","get__colorMap","VoTableLayer$","fName","defaultPlace","searchPoint","closestItem","colValue","siapSet","isSiapResultSet","stcsCol","lastItem","_addSiapStcRow$1","stcsColName","stcs","get_table","set_table","_latMin$1","_latMax$1","_lngMin$1","_lngMax$1","getCentrePointOffsetAsTileRatio","lon","metersX","absoluteLonToMetersAtZoom","relativeXIntoCell","metersY","absoluteLatToMetersAtZoom","relativeYIntoCell","relativeMetersToLatAtZoom","metersPerPixel","metersPerPixel2","_radToDeg$1","relativeMetersToLonAtZoom","sinLat","_degToRad$1","absoluteMetersToLatAtZoom","absoluteMetersToLonAtZoom","absoluteLonToMetersAtZoomTile","absoluteLatToMetersAtZoomTile","absoluteMetersToLonAtZoomByTileY","deg","MercatorTile$","_getAltitudeAtLatLng$1","indexY","indexX","_getDemSample$1","sample","_childTriangleList$1","_stars$1","PlotTile$","_initializeGrids$1","bounds","_loadData$1","firstRow","xIndex","yIndex","_midpoint$1","positionNormalTextured","positionNormalTextured_2","TangentTile$","geoTo3dTan","fac1","edges","getLatLngEdges","leftCenter","rightCenter","topCenter","bottomCenter","_cloneArray$1","indexArrayNew","ToastTile$","backSlashIndexBuffer","slashIndexBuffer","rootIndexBuffer","partArray","_processAccomindations$1","gridMap","arrayX","arrayY","sections","calculateFullSphere","tileTargetLevel","tileTargetX","tileTargetY","_backslashYIndex$1","_tempBackslashYIndex$1","_tempBackslashXIndex$1","_slashYIndex$1","_tempSlashYIndex$1","_tempSlashXIndex$1","_getMappedVertex","_backslashXIndex$1","_slashXIndex$1","vertOut","latLng","yy1","xx1","yy2","xx2","_textureReady$1","_sprite$1","BitmapOverlay$","newBmpOverlay","_ctx$1","_ce$1","_calculateTextSize$1","TextOverlay$","_drawCanvasText$1","baseline","lineSpace","maxWidth","_shapeType$1","_triangleStrip$1","ShapeOverlay$","set_shapeType","_drawCircleGeometry$1","_drawRectGeometry$1","_drawOpenRectGeometry$1","_drawStarGeometry$1","_drawDonutGeometry$1","_drawArrowGeometry$1","_drawLineGeometry$1","_createCircleGeometry$1","_createOpenRectGeometry$1","_createStarGeometry$1","_createDonutGeometry$1","_createArrowGeometry$1","_createLineGeometry$1","segmentsHigh","totalPoints","_pnts$1","rads","circumference","_audio$1","_audioReady$1","_wantPlaying$1","_volume$1","_mute$1","_position$1","_trackType$1","ao","AudioOverlay$","get_mute","set_mute","get_trackType","set_trackType","_loopType$1","_startFrame$1","_framesList$1","_framesX$1","_framesY$1","_currentFrame$1","_cellHeight$1","_cellWidth$1","_timeStart$1","_playing$1","FlipbookOverlay$","get_loopType","set_loopType","get_startFrame","set_startFrame","get_frameSequence","_frameSequence$1","set_frameSequence","get_framesX","set_framesX","get_framesY","set_framesY","newFlipbookOverlay","flipbook","frameCount","ToolStripSeparator$","FrameWizard","FrameWizard$","ReferenceFrameProps","ReferenceFrameProps$","GreatCircleDialog","GreatCircleDialog$","DataVizWizard","DataVizWizard$","FitsImageTile$","dataType","_color$2","isTiledFits","FitsImageJs$","_readDataUnitFloat64$2","_readDataUnitFloat32$2","_readDataUnitUint8$2","_readDataUnitInt16$2","_readDataUnitInt32$2","_dataBuffer$2","Float64Array","colorMapper","_getBitmapByte$2","getBitmapShort","_getBitmapInt$2","_getBitmapFloat$2","_getBitmapDouble$2","_setPixelWithColorMap$2","pixel_value","pixel_color","page","datR","datG","datB","dataValue","_populateHistogramByte$2","_populateHistogramInt16$2","_populateHistogramInt32$2","_populateHistogramFloat$2","_populateHistogramDouble$2","issGuid","loadBackground","_loading$2","_doc$2","createSpaceStation","o3d","_issmodel$2","ISSLayer$","_addedTiles$2","CatalogSpreadSheetLayer$","catalogRows","set_caption","SlideChangedEventArgs$","get_caption","_caption$2","_ra$2","_dec$2","_zoom$2","set_zoom","ArrivedEventArgs$","get_zoom","AnnotationClickEventArgs$","_id$2","_url$2","CollectionLoadedEventArgs$","pixelCenterX","pixelCenterY","SkyImageTile$","naturalHeight","naturalWidth","$exports","ctab","utab","xoffset","yoffset","selectedSegment","maX_VERTICES","maX_POLYGONS","highPercision","showActualSize","_contractionInPixels","_factor","_hw","_qw","_hh","_qh","maxLevel","meshComplexity","imageQuality","_maxTotalToPurge","clipboardFormat","capturing","kilometersPerAu","auPerParsec","auPerLightYear","ssmUnitConversion","earthRadius","exploreRoot","PlanetaryBodies","CreditMode","keysOf","enumLookup","stringEnum","enumKey","ComponentState","backgroundImagesetName","foregroundImagesetName","collectionUrl","creditMode","showCoordinateReadout","tourUrl","wtmlUrl","wtmlPlace","fromQueryParams","qp","EmbedSettings","asSettings","threeDMode","planetaryBody","toQueryItems","defaults","_l","class","lastSelectedItem","selectItem","_s","created","rootFolder","flexDirection","FolderView","wwtComponentLayout","directives","rawName","$event","startInteractive","embedSettings","coordText","collectionFolder","showFolderView","slot","selectTool","doZoom","fullscreenModeActive","toggleFullscreen","currentTool","domProps","$$selectedVal","curBackgroundImagesetName","multiple","displayName","tourPlaybackIcon","tourPlaybackButtonClicked","formatTimecode","model","$$v","twoWayTourTimecode","network","hashtagString","padding","staticStyle","_m","TWOPI","angnorm","angleRad","_formatSexagesimal","showPlus","padWhole","whole","remainder","wText","padStart","mText","sText","rText","fmtHours","fmtDegLat","fmtDegLon","skyBackgroundImagesets","BackgroundImageset","defaultWindowShape","componentState","LoadingResources","backgroundImagesets","tourPlaybackJustEnded","windowShape","hashtags","networks","ReadyToStart","screenfull","showBackgroundChooser","showCrossfader","showPlaybackControls","pl","backgroundWasInitialized","bgName","lookupImageset","isPanorama","bgWtml","_folder","jwstWtmlUrl","foundBG","bgi","Started","onFullscreenEvent","onResizeEvent","zoomIn","$el","newView","curHeight","code","onTourCompletionsChanged","_count","wwtHeight","Embed","productionTip","queryParams","URLSearchParams"],"mappings":"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G,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,IACviGlE,GAAIsL,YAAc,CAAE,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,E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,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,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,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAiB,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,GAAI,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,GAAI,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,GAAI,GAAI,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,EAAG,GAAI,GAAI,IAAIA,GAAiB,EAAG,GAAI,GAAI,GAAI,IAAIA,GAAiB,GAAI,EAAG,GAAI,GAAI,IAAIA,GAAiB,GAAI,EAAG,EAAG,IAC/kEhwB,GAAIuvB,oBAAsB,CAAE,QAAS,OAAQ,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAClYvvB,GAAI4xB,iCAAmC,CAAE,IAAIU,GAAK,EAAG,EAAG,GAAI,OAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,OAAU,IAAIA,GAAK,EAAG,EAAG,EAAG,OAAS,OAAU,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,OAAS,OAAU,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,GAAI,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,GAAI,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAQ,IACr4DtyB,GAAIgyB,iCAAmC,CAAE,IAAIM,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,OAAS,OAAU,IAAIA,GAAK,GAAI,EAAG,EAAG,OAAS,OAAU,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,GAAI,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,IAAK,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAQ,GAAI,IAAIA,GAAK,EAAG,GAAI,GAAI,KAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAQ,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAQ,IACvgCtyB,GAAIkyB,iCAAmC,CAAE,IAAII,GAAK,EAAG,EAAG,EAAG,OAAQ,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAM,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,MAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,GAAI,OAAS,IAAIA,GAAK,EAAG,EAAG,EAAG,MAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,MAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,GAAI,OAAS,IAAIA,GAAK,EAAG,EAAG,GAAI,IAAM,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,EAAG,OAAS,IAAIA,GAAK,EAAG,GAAI,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,IAAM,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,IAAK,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,IAAK,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,IAAM,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,IAAK,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,GAAI,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,IAAM,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,IAAK,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,GAAI,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,IAAM,GAAI,IAAIA,GAAK,GAAI,EAAG,GAAI,IAAM,IACr+CtyB,GAAIoyB,iCAAmC,CAAE,IAAIE,GAAK,EAAG,EAAG,GAAI,MAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,OAAS,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,GAAI,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,GAAI,KAAO,GAAI,IAAIA,GAAK,GAAI,EAAG,EAAG,KAAO,GAAI,IAAIA,GAAK,EAAG,EAAG,EAAG,IAAM,IAChiBtyB,GAAI2zB,OAAS,CAAE,IAAI/jB,GAAI,UAAW,EAAG,GAAI,IAAIA,GAAI,QAAS,UAAW,YAAa,IAAIA,GAAI,QAAS,SAAW,WAAY,IAAIA,GAAI,OAAQ,SAAU,WAAY,IAAIA,GAAI,MAAO,QAAS,SAAU,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,MAAO,KAAO,WAAY,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,MAAQ,UAAW,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,KAAM,QAAS,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,IAAM,UAAW,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,KAAO,MAAQ,IAAIA,GAAI,IAAK,MAAO,MAAQ,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,MAAQ,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,KAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,KAAO,MAAQ,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,OACzpC5P,GAAI4zB,OAAS,CAAE,IAAIhkB,GAAI,WAAY,EAAG,GAAI,IAAIA,GAAI,MAAO,QAAS,SAAU,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,KAAM,MAAO,SAAU,IAAIA,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,GAAI,KAAM,KAAO,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,GAAI,IAAK,OAAQ,IAAIA,GAAI,GAAI,KAAM,QAAS,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,GAAI,KAAM,SAC9f5P,GAAI6zB,OAAS,CAAE,IAAIjkB,GAAI,MAAO,EAAG,GAAI,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,EAAG,KAAM,OAAQ,IAAIA,GAAI,EAAG,IAAM,OAC9L5P,GAAI8zB,OAAS,CAAE,IAAIlkB,GAAI,GAAI,EAAG,GAAI,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,GAAI,KAAM,QACvG5P,GAAI+zB,OAAS,CAAE,IAAInkB,GAAI,IAAK,MAAO,IACnC5P,GAAIg0B,OAAS,CAAE,IAAIpkB,GAAI,QAAS,UAAW,YAAa,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,MAAO,EAAG,GAAI,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,IAAM,KAAM,SAAU,IAAIA,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,KAAM,UAClhB5P,GAAIi0B,OAAS,CAAE,IAAIrkB,GAAI,OAAQ,SAAU,WAAY,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,GAAI,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,KAAO,OAAQ,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,GAAI,IAAM,OAAQ,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,GAAI,KAAM,MAAO,IAAIA,GAAI,GAAI,KAAM,QACzX5P,GAAIk0B,OAAS,CAAE,IAAItkB,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,GAAI,IAAM,OAAQ,IAAIA,GAAI,GAAI,KAAM,GAAI,IAAIA,GAAI,GAAI,KAAM,OAAQ,IAAIA,GAAI,EAAG,KAAM,QACnK5P,GAAIm0B,OAAS,CAAE,IAAIvkB,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,KAAM,OAAQ,IAAIA,GAAI,EAAG,KAAM,QACxG5P,GAAIo0B,OAAS,CAAE,IAAIxkB,GAAI,EAAG,KAAM,QAChC5P,GAAIq0B,OAAS,CAAE,IAAIzkB,GAAI,WAAY,EAAG,GAAI,IAAIA,GAAI,SAAU,WAAY,aAAc,IAAIA,GAAI,QAAS,UAAW,YAAa,IAAIA,GAAI,OAAQ,SAAU,UAAW,IAAIA,GAAI,OAAQ,SAAU,UAAW,IAAIA,GAAI,OAAQ,SAAU,YAAa,IAAIA,GAAI,OAAQ,SAAU,WAAY,IAAIA,GAAI,OAAQ,SAAU,WAAY,IAAIA,GAAI,OAAQ,SAAU,WAAY,IAAIA,GAAI,OAAQ,QAAU,WAAY,IAAIA,GAAI,MAAO,QAAS,SAAU,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,MAAO,OAAS,WAAY,IAAIA,GAAI,MAAO,QAAS,UAAW,IAAIA,GAAI,MAAO,QAAS,SAAU,IAAIA,GAAI,MAAO,QAAS,YAAa,IAAIA,GAAI,KAAM,MAAQ,UAAW,IAAIA,GAAI,KAAM,OAAQ,UAAW,IAAIA,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,UAAW,IAAIA,GAAI,KAAM,MAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,UAAW,IAAIA,GAAI,KAAM,MAAQ,UAAW,IAAIA,GAAI,KAAM,MAAO,SAAU,IAAIA,GAAI,KAAM,OAAQ,UAAW,IAAIA,GAAI,KAAM,OAAQ,UAAW,IAAIA,GAAI,KAAM,OAAQ,UAAW,IAAIA,GAAI,KAAM,MAAQ,UAAW,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,MAAQ,UACvlC5P,GAAIs0B,OAAS,CAAE,IAAI1kB,GAAI,OAAQ,OAAS,WAAY,IAAIA,GAAI,MAAO,QAAS,SAAU,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,EAAG,GAAI,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,KAAM,OAAQ,SAAU,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,KAAO,SAAU,IAAIA,GAAI,IAAK,KAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,UAAW,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,UACpd5P,GAAIu0B,OAAS,CAAE,IAAI3kB,GAAI,KAAM,OAAQ,QAAS,IAAIA,GAAI,IAAK,KAAO,OAAQ,IAAIA,GAAI,IAAK,MAAO,SAAU,IAAIA,GAAI,IAAK,MAAO,QAAS,IAAIA,GAAI,IAAK,MAAO,SACzJ5P,GAAIw0B,OAAS,CAAE,IAAI5kB,GAAI,IAAK,MAAO,SACnC5P,GAAI40B,MAAQ,CAAE,IAAIuB,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,QAAS,MAAO,MAAO,KAAM,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,OAAQ,IAAK,MAAO,KAAM,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,MAAO,GAAK,KAAM,IAAM,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,IAAM,IAAK,IAAM,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,MAAO,IAAK,IAAK,IAAM,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAM,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,IAAM,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,KAAM,GAAK,IAAK,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,KAAM,IAAM,IAAIA,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,KAAM,IAAM,GAAI,IAAM,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAM,GAAI,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAM,GAAI,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,GAAK,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAK,EAAG,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAK,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAIA,GAAI,E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G,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACv7C7jK,GAAc8jK,KAAO,CAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5lD9jK,GAAc+5I,KAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxD/5I,GAAcg6I,KAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxDh6I,GAAc+jK,QAAU,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAClD/jK,GAAcgkK,QAAU,CAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAClDliK,GAAWn+E,UAAY,IAAIm+E,GAC3BgC,GAAWM,UAAY,KACvBN,GAAWS,SAAW,KACtBT,GAAWW,qBAAuB,KAClCX,GAAWa,aAAe,KAC1Bb,GAAWO,YAAa,EACxBqC,GAAUe,YAAc,IAAI3vB,GAC5B4uB,GAAUa,YAAc,IAAIz4B,GAC5B43B,GAAUc,aAAe,IAAInY,GAC7BqX,GAAUY,WAAa,EACvBwG,GAAemuE,GAAK,iBACpBnuE,GAAe2B,eAAiB,KAChC3B,GAAe03F,YAAc13F,GAAevzG,OAAO,iBAAkBunG,GAAWn+E,UAAU+/E,eAAe,uBAAuB,GAAM,GAAM,GAC5IoK,GAAe8E,aAAe,GAC9B9E,GAAem2J,gBAAkB,KACjCn2J,GAAeyC,SAAW,KAC1BzC,GAAe0B,QAAU,KACzB1B,GAAemE,UAAY,KAC3BnE,GAAe+B,mBAAqB,GACpC,WACE,IAAIjqF,EAAMk8E,GAAWn+E,UAAU+/E,eAAe,qCAC9CoK,GAAegD,mBAAqB,IAAInT,GAAQ/3E,GAChDkoF,GAAegD,mBAAmBlT,cAAgBkQ,GAAe+C,WACjE/C,GAAegD,mBAAmBjT,OAJpC,GAMA6T,GAAoBwD,SAAW,GAC/B1hC,GAAS0N,KAAO,IAAI1N,GACpBiqC,GAASkC,YAAclC,GAAS8C,kBAChCqT,GAAcmD,cAAe,EAC7BnD,GAAckD,eAAgB,EAC9BlD,GAAcoD,gBAAkB,EAChC1yB,GAAUm8B,YAAc,KACxB7E,GAAiB6G,QAAU,EAC3B7G,GAAiBqH,aAAc,EAC/BrH,GAAiBuG,MAAQ,KACzBzG,GAAmB+G,QAAU,EAC7B/G,GAAmBuH,aAAc,EACjCvH,GAAmByG,MAAQ,KAC3BxF,GAAgB8F,QAAU,EAC1B9F,GAAgBmH,SAAW,EAC3BnH,GAAgBsG,aAAc,EAC9BtG,GAAgBwF,MAAQ,KACxBlF,GAAsBwF,QAAU,EAChCxF,GAAsB6G,SAAW,EACjC7G,GAAsB+G,QAAU,EAChC/G,GAAsBgG,aAAc,EACpChG,GAAsBkF,MAAQ,KAC9Bd,GAA4BoB,QAAU,EACtCpB,GAA4ByC,SAAW,EACvCzC,GAA4BkD,aAAe,EAC3ClD,GAA4B2C,QAAU,EACtC3C,GAA4B4B,aAAc,EAC1C5B,GAA4Bc,MAAQ,KACpCmD,GAAwBE,OAAS,EACjCF,GAAwBC,QAAU,EAClCD,GAAwBf,aAAe,EACvCe,GAAwBxB,SAAW,EACnCwB,GAAwBG,MAAQ,EAChCH,GAAwBI,MAAQ,EAChCJ,GAAwBK,MAAQ,EAChCL,GAAwBM,SAAW,EACnCN,GAAwBrC,aAAc,EACtCqC,GAAwBnD,MAAQ,KAChC+D,GAAcC,SAAW,EACzBD,GAAcjD,aAAc,EAC5BiD,GAAc/D,MAAQ,KACtB4E,GAAYtE,QAAU,EACtBsE,GAAYG,UAAY,EACxBH,GAAYI,WAAa,EACzBJ,GAAY9D,aAAc,EAC1B8D,GAAY5E,MAAQ,KACpB4E,GAAYc,YAAcr0D,GAASj5E,QAAQ,GAAI,GAAI,GACnDwsI,GAAYW,sBAAwB,EACpCX,GAAYa,gBAAkB/7B,GAAMC,SAAS,EAAG,EAAG,EAAG,GACtDm8B,GAAexF,QAAU,EACzBwF,GAAef,UAAY,EAC3Be,GAAed,WAAa,EAC5Bc,GAAehF,aAAc,EAC7BgF,GAAe9F,MAAQ,KACvB8F,GAAeJ,YAAcr0D,GAASj5E,QAAQ,GAAI,GAAI,GACtD0tI,GAAeP,sBAAwB,EACvCO,GAAeL,gBAAkB/7B,GAAMC,SAAS,EAAG,EAAG,EAAG,GACzDq8B,GAAW1F,QAAU,EACrB0F,GAAWhB,WAAa,EACxBgB,GAAWlF,aAAc,EACzBkF,GAAWhG,MAAQ,KACnBgG,GAAWN,YAAcr0D,GAASj5E,QAAQ,GAAI,GAAI,GAClD4tI,GAAWT,sBAAwB,EACnCS,GAAWP,gBAAkB/7B,GAAMC,SAAS,EAAG,EAAG,EAAG,GACrD48B,GAAWjG,QAAU,EACrBiG,GAAWvB,WAAa,EACxBuB,GAAWzF,aAAc,EACzByF,GAAWvG,MAAQ,KACnBuG,GAAWzsC,WAAa,EACxBysC,GAAW3sC,OAAS,EACpB2sC,GAAW5sC,MAAQ,EACnB4sC,GAAW79B,IAAM,EACjB69B,GAAWh5B,IAAM,EACjBg5B,GAAWxhH,kBAAmB,EAC9BwhH,GAAW1sC,gBAAiB,EAC5B0sC,GAAWv7G,UAAY,EACvBm8G,GAAY7G,QAAU,EACtB6G,GAAYnC,WAAa,EACzBmC,GAAYrG,aAAc,EAC1BqG,GAAYnH,MAAQ,KACpBqH,GAAa/G,QAAU,EACvB+G,GAAarC,WAAa,EAC1BqC,GAAavG,aAAc,EAC3BuG,GAAarH,MAAQ,KACrBuH,GAAajH,QAAU,EACvBiH,GAAavC,WAAa,EAC1BuC,GAAa5F,SAAW,EACxB4F,GAAazG,aAAc,EAC3ByG,GAAavH,MAAQ,KACrByH,GAAkBnH,QAAU,EAC5BmH,GAAkBzC,WAAa,EAC/ByC,GAAkB9F,SAAW,EAC7B8F,GAAkB3G,aAAc,EAChC2G,GAAkBzH,MAAQ,KAC1B2H,GAAWrH,QAAU,EACrBqH,GAAW3C,WAAa,EACxB2C,GAAW7G,aAAc,EACzB6G,GAAW3H,MAAQ,KACnB4C,GAAQx9E,MAAQ,KAChBslF,GAAMqB,wBAA0B,KAChCrB,GAAMiB,0BAA4B,EAClCjB,GAAME,eAAiB,KACvBF,GAAM0B,aAAe,KACrB1B,GAAM8B,WAAa,EACnB9B,GAAM4B,mBAAoB,EAC1B5B,GAAM+B,OAAS,KACf/B,GAAMwC,gBAAkB,GACxBxC,GAAMsC,mBAAqB,GAC3BtC,GAAMuD,gBAAkB,KACxBvD,GAAMgE,oBAAsB,KAC5BhE,GAAMwD,WAAY,EAClBxD,GAAMyD,cAAe,EACrBzD,GAAMiE,QAAU,KAChBjE,GAAMsE,oBAAqB,EAC3BtE,GAAMkF,eAAiB,EACvBlF,GAAM8E,cAAgB,EACtB9E,GAAMiF,WAAa,CAAE,GAAI,QAAS,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACtEjF,GAAM6F,YAAc,CAAE,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACpI7F,GAAM4F,kBAAoB,EAC1BqO,GAAaS,MAAQ,EACrBT,GAAaQ,MAAQ,EACrBR,GAAaO,QAAU54G,KAAK3iC,GAAK,IACjCg7I,GAAaU,SAAW1mG,EAAGtS,SAASklG,GAAoBuE,YAAYn3F,EAAGtrB,QACvEmyH,GAAkBoB,cAAgB,GAClCpB,GAAkBM,QAAUN,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACnzFJ,GAAkBO,OAASP,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAClzFJ,GAAkBQ,QAAUR,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACnzFJ,GAAkBS,MAAQT,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACjzFJ,GAAkBU,QAAUV,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACnzFJ,GAAkBW,MAAQX,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACjzFJ,GAAkBY,KAAOZ,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAChzFJ,GAAkBa,QAAUb,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACnzFJ,GAAkBc,MAAQd,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACjzFJ,GAAkBe,OAASf,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAClzFJ,GAAkBgB,QAAUhB,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YACnzFJ,GAAkBiB,KAAOjB,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAChzFJ,GAAkBkB,OAASlB,GAAkBI,eAAe,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,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,gCACA,oCACA,mCACA,yCACA,+BACA,0CACA,sCACA,8CACA,+CACA,6BACA,6CACA,+CACA,kDACA,sCACA,wDACA,mDACA,mDACA,+BACA,gCACA,4CACA,kDACA,oDACA,6BACA,2CACA,uDACA,sCACA,8CACA,4CACA,2CACA,6BACA,iDACA,iCACA,sCACA,gCApCF,CAAYA,MAAc,KAuC1B,SAAYC,GACV,gCACA,oCACA,4BAHF,CAAYA,MAAe,KAM3B,SAAYC,GACV,wBACA,0BACA,0BACA,0BACA,4BACA,sBANF,CAAYA,MAAS,KASrB,SAAYC,GACV,0BACA,4BACA,sBACA,sBAJF,CAAYA,MAAQ,KAOpB,SAAYC,GACV,8BACA,sBACA,0BACA,wCACA,sBACA,sBACA,gCACA,4BACA,4BACA,kCAVF,CAAYA,MAAW,KAavB,SAAYC,GACV,8BACA,0CACA,kCAHF,CAAYA,MAAiB,KAM7B,SAAYC,GACV,wBACA,0BACA,oBACA,8BAJF,CAAYA,MAAU,KAOtB,SAAYC,GACV,wBACA,0BACA,oBACA,8BACA,oCACA,4BANF,CAAYA,MAAY,KASxB,SAAYC,GACV,0BACA,wBAFF,CAAYA,MAAY,KAKxB,SAAYC,GACV,8BACA,wBACA,0BACA,0BACA,4BACA,0BANF,CAAYA,MAAS,KASrB,SAAYC,GACV,0BACA,wBACA,oBACA,8BACA,8CALF,CAAYA,MAAe,KAQ3B,SAAYC,GACV,8BACA,4CACA,4BACA,oBACA,wBACA,gCACA,8BACA,4BARF,CAAYA,MAAc,KAW1B,SAAYC,GACV,wBACA,4BAFF,CAAYA,MAAO,KAKnB,SAAYC,GACV,oBACA,8BACA,8BACA,oBACA,4BACA,wBACA,wBACA,sBACA,4BACA,0BACA,2BACA,6BACA,yBACA,uBACA,mBACA,2BACA,+BACA,+BACA,2BACA,+BACA,6BArBF,CAAYA,MAAe,KAwB3B,SAAYC,GACV,wCACA,4BACA,kCACA,4BAJF,CAAYA,MAAmB,KAO/B,SAAYC,GACV,0BACA,oBACA,wBACA,kCACA,wDALF,CAAYA,MAAU,KAQtB,SAAYC,GACV,oBACA,4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","file":"js/app.0e5fc6a9.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d0cc959\":\"f9dedb30\",\"chunk-e53b5418\":\"a8e2117b\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/logo_wwt.8de238a7.png\";","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"), require(\"@wwtelescope/engine\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([, \"@wwtelescope/engine\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"index\"] = factory(require(\"vue\"), require(\"@wwtelescope/engine\"));\n\telse\n\t\troot[\"index\"] = factory(root[\"Vue\"], root[\"wwtlib\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE__9889__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"1aba\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"1aba\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"ImagesetInfo\", function() { return /* reexport */ ImagesetInfo; });\n__webpack_require__.d(__webpack_exports__, \"ImageSetLayerState\", function() { return /* reexport */ store_ImageSetLayerState; });\n__webpack_require__.d(__webpack_exports__, \"SpreadSheetLayerInfo\", function() { return /* reexport */ SpreadSheetLayerInfo; });\n__webpack_require__.d(__webpack_exports__, \"WWTEngineVuexModule\", function() { return /* reexport */ store_WWTEngineVuexModule; });\n__webpack_require__.d(__webpack_exports__, \"WWTAwareComponent\", function() { return /* reexport */ wwtaware_WWTAwareComponent; });\n__webpack_require__.d(__webpack_exports__, \"WWTComponent\", function() { return /* reexport */ src_Component; });\n__webpack_require__.d(__webpack_exports__, \"createPlugin\", function() { return /* reexport */ createPlugin; });\n\n// CONCATENATED MODULE: ../node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (false) { var getCurrentScript; }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_require__.p = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// CONCATENATED MODULE: ../node_modules/tslib/tslib.es6.js\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nfunction __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n\n// EXTERNAL MODULE: external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}\nvar external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(\"8bbf\");\nvar external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);\n\n// CONCATENATED MODULE: ../node_modules/vuex-module-decorators/dist/esm/index.js\n/**\r\n * Takes the properties on object from parameter source and adds them to the object\r\n * parameter target\r\n * @param {object} target Object to have properties copied onto from y\r\n * @param {object} source Object with properties to be copied to x\r\n */\r\nfunction addPropertiesToObject(target, source) {\r\n var _loop_1 = function (k) {\r\n Object.defineProperty(target, k, {\r\n get: function () { return source[k]; }\r\n });\r\n };\r\n for (var _i = 0, _a = Object.keys(source || {}); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n _loop_1(k);\r\n }\r\n}\r\n/**\r\n * Returns a namespaced name of the module to be used as a store getter\r\n * @param module\r\n */\r\nfunction getModuleName(module) {\r\n if (!module._vmdModuleName) {\r\n throw new Error(\"ERR_GET_MODULE_NAME : Could not get module accessor.\\n Make sure your module has name, we can't make accessors for unnamed modules\\n i.e. @Module({ name: 'something' })\");\r\n }\r\n return \"vuexModuleDecorators/\" + module._vmdModuleName;\r\n}\n\nvar VuexModule = /** @class */ (function () {\r\n function VuexModule(module) {\r\n this.actions = module.actions;\r\n this.mutations = module.mutations;\r\n this.state = module.state;\r\n this.getters = module.getters;\r\n this.namespaced = module.namespaced;\r\n this.modules = module.modules;\r\n }\r\n return VuexModule;\r\n}());\r\nfunction getModule(moduleClass, store) {\r\n var moduleName = getModuleName(moduleClass);\r\n if (store && store.getters[moduleName]) {\r\n return store.getters[moduleName];\r\n }\r\n else if (moduleClass._statics) {\r\n return moduleClass._statics;\r\n }\r\n var genStatic = moduleClass._genStatic;\r\n if (!genStatic) {\r\n throw new Error(\"ERR_GET_MODULE_NO_STATICS : Could not get module accessor.\\n Make sure your module has name, we can't make accessors for unnamed modules\\n i.e. @Module({ name: 'something' })\");\r\n }\r\n var storeModule = genStatic(store);\r\n if (store) {\r\n store.getters[moduleName] = storeModule;\r\n }\r\n else {\r\n moduleClass._statics = storeModule;\r\n }\r\n return storeModule;\r\n}\n\nvar reservedKeys = ['actions', 'getters', 'mutations', 'modules', 'state', 'namespaced', 'commit'];\r\nfunction stateFactory(module) {\r\n var state = new module.prototype.constructor({});\r\n var s = {};\r\n Object.keys(state).forEach(function (key) {\r\n if (reservedKeys.indexOf(key) !== -1) {\r\n if (typeof state[key] !== 'undefined') {\r\n throw new Error(\"ERR_RESERVED_STATE_KEY_USED: You cannot use the following\\n ['actions', 'getters', 'mutations', 'modules', 'state', 'namespaced', 'commit']\\n as fields in your module. These are reserved as they have special purpose in Vuex\");\r\n }\r\n return;\r\n }\r\n if (state.hasOwnProperty(key)) {\r\n if (typeof state[key] !== 'function') {\r\n s[key] = state[key];\r\n }\r\n }\r\n });\r\n return s;\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction esm_awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction esm_generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction esm_spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nfunction staticStateGenerator(module, modOpt, statics) {\r\n var state = modOpt.stateFactory ? module.state() : module.state;\r\n Object.keys(state).forEach(function (key) {\r\n if (state.hasOwnProperty(key)) {\r\n // If not undefined or function means it is a state value\r\n if (['undefined', 'function'].indexOf(typeof state[key]) === -1) {\r\n Object.defineProperty(statics, key, {\r\n get: function () {\r\n return statics.store.state[modOpt.name][key];\r\n }\r\n });\r\n }\r\n }\r\n });\r\n}\r\nfunction staticGetterGenerator(module, modOpt, statics) {\r\n Object.keys(module.getters).forEach(function (key) {\r\n if (module.namespaced) {\r\n Object.defineProperty(statics, key, {\r\n get: function () {\r\n return statics.store.getters[modOpt.name + \"/\" + key];\r\n }\r\n });\r\n }\r\n else {\r\n Object.defineProperty(statics, key, {\r\n get: function () {\r\n return statics.store.getters[key];\r\n }\r\n });\r\n }\r\n });\r\n}\r\nfunction staticMutationGenerator(module, modOpt, statics) {\r\n Object.keys(module.mutations).forEach(function (key) {\r\n if (module.namespaced) {\r\n statics[key] = function () {\r\n var _a;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n (_a = statics.store).commit.apply(_a, esm_spreadArrays([modOpt.name + \"/\" + key], args));\r\n };\r\n }\r\n else {\r\n statics[key] = function () {\r\n var _a;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n (_a = statics.store).commit.apply(_a, esm_spreadArrays([key], args));\r\n };\r\n }\r\n });\r\n}\r\nfunction staticActionGenerators(module, modOpt, statics) {\r\n Object.keys(module.actions).forEach(function (key) {\r\n if (module.namespaced) {\r\n statics[key] = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return esm_awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return esm_generator(this, function (_b) {\r\n return [2 /*return*/, (_a = statics.store).dispatch.apply(_a, esm_spreadArrays([modOpt.name + \"/\" + key], args))];\r\n });\r\n });\r\n };\r\n }\r\n else {\r\n statics[key] = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return esm_awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return esm_generator(this, function (_b) {\r\n return [2 /*return*/, (_a = statics.store).dispatch.apply(_a, esm_spreadArrays([key], args))];\r\n });\r\n });\r\n };\r\n }\r\n });\r\n}\n\nfunction registerDynamicModule(module, modOpt) {\r\n if (!modOpt.name) {\r\n throw new Error('Name of module not provided in decorator options');\r\n }\r\n if (!modOpt.store) {\r\n throw new Error('Store not provided in decorator options when using dynamic option');\r\n }\r\n modOpt.store.registerModule(modOpt.name, // TODO: Handle nested modules too in future\r\n module, { preserveState: modOpt.preserveState || false });\r\n}\r\nfunction moduleDecoratorFactory(moduleOptions) {\r\n return function (constructor) {\r\n var module = constructor;\r\n var stateFactory$1 = function () { return stateFactory(module); };\r\n if (!module.state) {\r\n module.state = moduleOptions && moduleOptions.stateFactory ? stateFactory$1 : stateFactory$1();\r\n }\r\n if (!module.getters) {\r\n module.getters = {};\r\n }\r\n if (!module.namespaced) {\r\n module.namespaced = moduleOptions && moduleOptions.namespaced;\r\n }\r\n Object.getOwnPropertyNames(module.prototype).forEach(function (funcName) {\r\n var descriptor = Object.getOwnPropertyDescriptor(module.prototype, funcName);\r\n if (descriptor.get && module.getters) {\r\n module.getters[funcName] = function (state, getters, rootState, rootGetters) {\r\n var thisObj = { context: { state: state, getters: getters, rootState: rootState, rootGetters: rootGetters } };\r\n addPropertiesToObject(thisObj, state);\r\n addPropertiesToObject(thisObj, getters);\r\n var got = descriptor.get.call(thisObj);\r\n return got;\r\n };\r\n }\r\n });\r\n var modOpt = moduleOptions;\r\n if (modOpt.name) {\r\n Object.defineProperty(constructor, '_genStatic', {\r\n value: function (store) {\r\n var statics = { store: store || modOpt.store };\r\n if (!statics.store) {\r\n throw new Error(\"ERR_STORE_NOT_PROVIDED: To use getModule(), either the module\\n should be decorated with store in decorator, i.e. @Module({store: store}) or\\n store should be passed when calling getModule(), i.e. getModule(MyModule, this.$store)\");\r\n }\r\n // =========== For statics ==============\r\n // ------ state -------\r\n staticStateGenerator(module, modOpt, statics);\r\n // ------- getters -------\r\n if (module.getters) {\r\n staticGetterGenerator(module, modOpt, statics);\r\n }\r\n // -------- mutations --------\r\n if (module.mutations) {\r\n staticMutationGenerator(module, modOpt, statics);\r\n }\r\n // -------- actions ---------\r\n if (module.actions) {\r\n staticActionGenerators(module, modOpt, statics);\r\n }\r\n return statics;\r\n }\r\n });\r\n Object.defineProperty(constructor, '_vmdModuleName', {\r\n value: modOpt.name\r\n });\r\n }\r\n if (modOpt.dynamic) {\r\n registerDynamicModule(module, modOpt);\r\n }\r\n return constructor;\r\n };\r\n}\r\nfunction Module(modOrOpt) {\r\n if (typeof modOrOpt === 'function') {\r\n /*\r\n * @Module decorator called without options (directly on the class definition)\r\n */\r\n moduleDecoratorFactory({})(modOrOpt);\r\n }\r\n else {\r\n /*\r\n * @Module({...}) decorator called with options\r\n */\r\n return moduleDecoratorFactory(modOrOpt);\r\n }\r\n}\n\nfunction actionDecoratorFactory(params) {\r\n var _a = params || {}, _b = _a.commit, commit = _b === void 0 ? undefined : _b, _c = _a.rawError, rawError = _c === void 0 ? false : _c, _d = _a.root, root = _d === void 0 ? false : _d;\r\n return function (target, key, descriptor) {\r\n var module = target.constructor;\r\n if (!module.hasOwnProperty('actions')) {\r\n module.actions = Object.assign({}, module.actions);\r\n }\r\n var actionFunction = descriptor.value;\r\n var action = function (context, payload) {\r\n return esm_awaiter(this, void 0, void 0, function () {\r\n var actionPayload, moduleName, moduleAccessor, thisObj, e_1;\r\n return esm_generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 5, , 6]);\r\n actionPayload = null;\r\n if (!module._genStatic) return [3 /*break*/, 2];\r\n moduleName = getModuleName(module);\r\n moduleAccessor = context.rootGetters[moduleName]\r\n ? context.rootGetters[moduleName]\r\n : getModule(module);\r\n moduleAccessor.context = context;\r\n return [4 /*yield*/, actionFunction.call(moduleAccessor, payload)];\r\n case 1:\r\n actionPayload = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 2:\r\n thisObj = { context: context };\r\n addPropertiesToObject(thisObj, context.state);\r\n addPropertiesToObject(thisObj, context.getters);\r\n return [4 /*yield*/, actionFunction.call(thisObj, payload)];\r\n case 3:\r\n actionPayload = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n if (commit) {\r\n context.commit(commit, actionPayload);\r\n }\r\n return [2 /*return*/, actionPayload];\r\n case 5:\r\n e_1 = _a.sent();\r\n throw rawError\r\n ? e_1\r\n : new Error('ERR_ACTION_ACCESS_UNDEFINED: Are you trying to access ' +\r\n 'this.someMutation() or this.someGetter inside an @Action? \\n' +\r\n 'That works only in dynamic modules. \\n' +\r\n 'If not dynamic use this.context.commit(\"mutationName\", payload) ' +\r\n 'and this.context.getters[\"getterName\"]' +\r\n '\\n' +\r\n new Error(\"Could not perform action \" + key.toString()).stack +\r\n '\\n' +\r\n e_1.stack);\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n module.actions[key] = root ? { root: root, handler: action } : action;\r\n };\r\n}\r\n/**\r\n * The @Action decorator turns an async function into an Vuex action\r\n *\r\n * @param targetOrParams the module class\r\n * @param key name of the action\r\n * @param descriptor the action function descriptor\r\n * @constructor\r\n */\r\nfunction Action(targetOrParams, key, descriptor) {\r\n if (!key && !descriptor) {\r\n /*\r\n * This is the case when `targetOrParams` is params.\r\n * i.e. when used as -\r\n *
\r\n            @Action({commit: 'incrCount'})\r\n            async getCountDelta() {\r\n              return 5\r\n            }\r\n         * 
\r\n */\r\n return actionDecoratorFactory(targetOrParams);\r\n }\r\n else {\r\n /*\r\n * This is the case when @Action is called on action function\r\n * without any params\r\n *
\r\n         *   @Action\r\n         *   async doSomething() {\r\n         *    ...\r\n         *   }\r\n         * 
\r\n */\r\n actionDecoratorFactory()(targetOrParams, key, descriptor);\r\n }\r\n}\n\nfunction Mutation(target, key, descriptor) {\r\n var module = target.constructor;\r\n if (!module.hasOwnProperty('mutations')) {\r\n module.mutations = Object.assign({}, module.mutations);\r\n }\r\n var mutationFunction = descriptor.value;\r\n var mutation = function (state, payload) {\r\n mutationFunction.call(state, payload);\r\n };\r\n module.mutations[key] = mutation;\r\n}\n\nfunction mutationActionDecoratorFactory(params) {\r\n return function (target, key, descriptor) {\r\n var module = target.constructor;\r\n if (!module.hasOwnProperty('mutations')) {\r\n module.mutations = Object.assign({}, module.mutations);\r\n }\r\n if (!module.hasOwnProperty('actions')) {\r\n module.actions = Object.assign({}, module.actions);\r\n }\r\n var mutactFunction = descriptor.value;\r\n var action = function (context, payload) {\r\n return esm_awaiter(this, void 0, void 0, function () {\r\n var actionPayload, e_1;\r\n return esm_generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, mutactFunction.call(context, payload)];\r\n case 1:\r\n actionPayload = _a.sent();\r\n context.commit(key, actionPayload);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (params.rawError) {\r\n throw e_1;\r\n }\r\n else {\r\n console.error('Could not perform action ' + key.toString());\r\n console.error(e_1);\r\n return [2 /*return*/, Promise.reject(e_1)];\r\n }\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n var mutation = function (state, payload) {\r\n if (!params.mutate) {\r\n params.mutate = Object.keys(payload);\r\n }\r\n for (var _i = 0, _a = params.mutate; _i < _a.length; _i++) {\r\n var stateItem = _a[_i];\r\n if (state.hasOwnProperty(stateItem) && payload.hasOwnProperty(stateItem)) {\r\n state[stateItem] = payload[stateItem];\r\n }\r\n else {\r\n throw new Error(\"ERR_MUTATE_PARAMS_NOT_IN_PAYLOAD\\n In @MutationAction, mutate: ['a', 'b', ...] array keys must\\n match with return type = {a: {}, b: {}, ...} and must\\n also be in state.\");\r\n }\r\n }\r\n };\r\n module.actions[key] = params.root ? { root: true, handler: action } : action;\r\n module.mutations[key] = mutation;\r\n };\r\n}\r\n/**\r\n * The @MutationAction decorator turns this into an action that further calls a mutation\r\n * Both the action and the mutation are generated for you\r\n *\r\n * @param paramsOrTarget the params or the target class\r\n * @param key the name of the function\r\n * @param descriptor the function body\r\n * @constructor\r\n */\r\nfunction MutationAction(paramsOrTarget, key, descriptor) {\r\n if (!key && !descriptor) {\r\n /*\r\n * This is the case when `paramsOrTarget` is params.\r\n * i.e. when used as -\r\n *
\r\n            @MutationAction({mutate: ['incrCount']})\r\n            async getCountDelta() {\r\n              return {incrCount: 5}\r\n            }\r\n         * 
\r\n */\r\n return mutationActionDecoratorFactory(paramsOrTarget);\r\n }\r\n else {\r\n /*\r\n * This is the case when `paramsOrTarget` is target.\r\n * i.e. when used as -\r\n *
\r\n            @MutationAction\r\n            async getCountDelta() {\r\n              return {incrCount: 5}\r\n            }\r\n         * 
\r\n */\r\n mutationActionDecoratorFactory({})(paramsOrTarget, key, descriptor);\r\n }\r\n}\n\n\n//# sourceMappingURL=index.js.map\n\n// CONCATENATED MODULE: ../astro/src/index.ts\n// Copyright 2020 the .NET Foundation\n// Licensed under the MIT License\n/** The mathematical constant pi, around 3.14. */\nvar PI = 3.14159265358979;\n/** Two times the mathematical constan pi, around 6.28. */\nvar TWOPI = 2 * PI;\n/** Radians-to-degrees conversion factor.\n *\n * ```\n * let degrees = radians * R2D;\n * ```\n */\nvar R2D = 180 / PI;\n/** Degrees-to-radians conversion factor.\n *\n * ```\n * let radians = degrees * D2R;\n * ```\n */\nvar D2R = PI / 180;\n/** Radians-to-hours conversion factor.\n *\n * ```\n * let hours = radians * R2H;\n * ```\n */\nvar R2H = 12 / PI;\n/** Hours-to-radians conversion factor.\n *\n * ```\n * let radians = hours * H2R;\n * ```\n */\nvar H2R = PI / 12;\n/** Degrees-to-hours conversion factor.\n *\n * ```\n * let hours = degrees * D2H;\n * ```\n */\nvar D2H = 12. / 180;\n/** Hours-to-degrees conversion factor.\n *\n * ```\n * let degrees = hours * H2D;\n * ```\n */\nvar H2D = 15;\n/** Normalize an angle in radians to lie between 0 and 2pi.\n *\n * @param angleRad The input angle, in radians.\n * @returns An equivalent angle, also in radians.\n */\nfunction angnorm(angleRad) {\n while (angleRad < 0)\n angleRad += TWOPI;\n while (angleRad >= TWOPI)\n angleRad -= TWOPI;\n return angleRad;\n}\n/**\n * Find the great-circle distance between two points\n *\n * This implementation uses a special case of the Vincenty formula\n * See the last formula in https://en.wikipedia.org/wiki/Great-circle_distance#Computational_formulas\n *\n * @param ra1 The right ascension of the first point, in radians\n * @param dec1 The declination of the first point, in radians\n * @param ra2 The right ascension of the second point, in radians\n * @param dec2 The declination of the second point, in radians\n * @returns The great-circle distance\n */\nfunction distance(ra1, dec1, ra2, dec2) {\n var dAbsRA = Math.abs(ra1 - ra2);\n var nt1 = Math.pow((Math.cos(dec2) * Math.sin(dAbsRA)), 2);\n var nt2 = Math.pow((Math.cos(dec1) * Math.sin(dec2) - Math.sin(dec1) * Math.cos(dec2) * Math.cos(dAbsRA)), 2);\n var num = Math.sqrt(nt1 + nt2);\n var den = Math.sin(dec1) * Math.sin(dec2) + Math.cos(dec1) * Math.cos(dec2) * Math.cos(dAbsRA);\n return Math.atan2(num, den);\n}\nfunction _formatSexagesimal(value, showPlus, padWhole, sep1, sep2, precision) {\n var prefix = \"\";\n if (value < 0) {\n value = -value;\n prefix = \"-\";\n }\n else if (showPlus) {\n prefix = \"+\";\n }\n var whole = Math.floor(value);\n value = (value - whole) * 60;\n var minutes = Math.floor(value);\n value = (value - minutes) * 60;\n var seconds = Math.floor(value);\n var remainder = value - seconds;\n var wText = String(whole).padStart(padWhole, '0');\n var mText = String(minutes).padStart(2, '0');\n var sText = String(seconds).padStart(2, '0');\n var rText = remainder.toFixed(precision).slice(1); // drop the leading \"0\"\n return \"\" + prefix + wText + sep1 + mText + sep2 + sText + rText;\n}\n/** Format an angle, measured in radians, as sexagesimal hours.\n *\n * Before formatting, the angle is normalized to lie within 0-2pi.\n *\n * @param angleRad The angle in radians.\n * @param sep1 The text to put between the hours and the minutes. Defaults to\n * `\":\"`.\n * @param sep2 The text to put between the minutes and the seconds. Defaults to\n * `\":\"`.\n * @param precision The number of places of decimal precision to include in the\n * result. Defaults to 0.\n * @returns The formatted angle.\n */\nfunction fmtHours(angleRad, sep1, sep2, precision) {\n if (sep1 === void 0) { sep1 = \":\"; }\n if (sep2 === void 0) { sep2 = \":\"; }\n if (precision === void 0) { precision = 0; }\n return _formatSexagesimal(angnorm(angleRad) * R2H, false, 2, sep1, sep2, precision);\n}\n/** Format a latitudinal angle, measured in radians, as sexagesimal degrees.\n *\n * If the number is not in the range [-pi, pi], `\" ??${sep1}??${sep2}??\"` is\n * returned.\n *\n * @param angleRad The latitude in radians.\n * @param sep1 The text to put between the degrees and the arcminutes. Defaults\n * to `\":\"`.\n * @param sep2 The text to put between the arcminutes and the arcseconds.\n * Defaults to `\":\"`.\n * @param precision The number of places of decimal precision to include in the\n * result. Defaults to 0.\n * @returns The formatted angle.\n */\nfunction fmtDegLat(angleRad, sep1, sep2, precision) {\n if (sep1 === void 0) { sep1 = \":\"; }\n if (sep2 === void 0) { sep2 = \":\"; }\n if (precision === void 0) { precision = 0; }\n if (angleRad < -PI || angleRad > PI)\n return \" ??\" + sep1 + \"??\" + sep2 + \"??\";\n return _formatSexagesimal(angleRad * R2D, true, 2, sep1, sep2, precision);\n}\n/** Format a longitudinal angle, measured in radians, as sexagesimal degrees.\n *\n * Before formatting, the angle is normalized to lie within 0-2pi. The output\n * will be zero-padded to three digits, e.g. `\"000:01:30\"` or `\"359:59:59.123\"`.\n *\n * @param angleRad The longitude in radians.\n * @param sep1 The text to put between the degrees and the arcminutes. Defaults\n * to `\":\"`.\n * @param sep2 The text to put between the arcminutes and the arcseconds.\n * Defaults to `\":\"`.\n * @param precision The number of places of decimal precision to include in the\n * result. Defaults to 0.\n * @returns The formatted angle.\n */\nfunction fmtDegLon(angleRad, sep1, sep2, precision) {\n if (sep1 === void 0) { sep1 = \":\"; }\n if (sep2 === void 0) { sep2 = \":\"; }\n if (precision === void 0) { precision = 0; }\n return _formatSexagesimal(angnorm(angleRad) * R2D, false, 3, sep1, sep2, precision);\n}\n\n// CONCATENATED MODULE: ../engine-types/src/index.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n//\n// Based types used in the WWT WebGL engine.\n//\n// Try to keep everything alphabetized.\n\n/* eslint-disable @typescript-eslint/camelcase */\nvar AltTypes;\n(function (AltTypes) {\n AltTypes[AltTypes[\"depth\"] = 0] = \"depth\";\n AltTypes[AltTypes[\"altitude\"] = 1] = \"altitude\";\n AltTypes[AltTypes[\"distance\"] = 2] = \"distance\";\n AltTypes[AltTypes[\"seaLevel\"] = 3] = \"seaLevel\";\n AltTypes[AltTypes[\"terrain\"] = 4] = \"terrain\";\n})(AltTypes || (AltTypes = {}));\nvar AltUnits;\n(function (AltUnits) {\n AltUnits[AltUnits[\"meters\"] = 1] = \"meters\";\n AltUnits[AltUnits[\"feet\"] = 2] = \"feet\";\n AltUnits[AltUnits[\"inches\"] = 3] = \"inches\";\n AltUnits[AltUnits[\"miles\"] = 4] = \"miles\";\n AltUnits[AltUnits[\"kilometers\"] = 5] = \"kilometers\";\n AltUnits[AltUnits[\"astronomicalUnits\"] = 6] = \"astronomicalUnits\";\n AltUnits[AltUnits[\"lightYears\"] = 7] = \"lightYears\";\n AltUnits[AltUnits[\"parsecs\"] = 8] = \"parsecs\";\n AltUnits[AltUnits[\"megaParsecs\"] = 9] = \"megaParsecs\";\n AltUnits[AltUnits[\"custom\"] = 10] = \"custom\";\n})(AltUnits || (AltUnits = {}));\nvar BandPass;\n(function (BandPass) {\n BandPass[BandPass[\"gamma\"] = 0] = \"gamma\";\n BandPass[BandPass[\"xRay\"] = 1] = \"xRay\";\n BandPass[BandPass[\"ultraviolet\"] = 2] = \"ultraviolet\";\n BandPass[BandPass[\"visible\"] = 3] = \"visible\";\n BandPass[BandPass[\"hydrogenAlpha\"] = 4] = \"hydrogenAlpha\";\n BandPass[BandPass[\"IR\"] = 4] = \"IR\";\n BandPass[BandPass[\"microwave\"] = 5] = \"microwave\";\n BandPass[BandPass[\"radio\"] = 6] = \"radio\";\n BandPass[BandPass[\"visibleNight\"] = 6] = \"visibleNight\";\n})(BandPass || (BandPass = {}));\nvar Classification;\n(function (Classification) {\n Classification[Classification[\"star\"] = 1] = \"star\";\n Classification[Classification[\"supernova\"] = 2] = \"supernova\";\n Classification[Classification[\"blackHole\"] = 4] = \"blackHole\";\n Classification[Classification[\"neutronStar\"] = 8] = \"neutronStar\";\n Classification[Classification[\"doubleStar\"] = 16] = \"doubleStar\";\n Classification[Classification[\"multipleStars\"] = 32] = \"multipleStars\";\n Classification[Classification[\"asterism\"] = 64] = \"asterism\";\n Classification[Classification[\"constellation\"] = 128] = \"constellation\";\n Classification[Classification[\"openCluster\"] = 256] = \"openCluster\";\n Classification[Classification[\"globularCluster\"] = 512] = \"globularCluster\";\n Classification[Classification[\"nebulousCluster\"] = 1024] = \"nebulousCluster\";\n Classification[Classification[\"nebula\"] = 2048] = \"nebula\";\n Classification[Classification[\"emissionNebula\"] = 4096] = \"emissionNebula\";\n Classification[Classification[\"planetaryNebula\"] = 8192] = \"planetaryNebula\";\n Classification[Classification[\"reflectionNebula\"] = 16384] = \"reflectionNebula\";\n Classification[Classification[\"darkNebula\"] = 32768] = \"darkNebula\";\n Classification[Classification[\"giantMolecularCloud\"] = 65536] = \"giantMolecularCloud\";\n Classification[Classification[\"supernovaRemnant\"] = 131072] = \"supernovaRemnant\";\n Classification[Classification[\"interstellarDust\"] = 262144] = \"interstellarDust\";\n Classification[Classification[\"quasar\"] = 524288] = \"quasar\";\n Classification[Classification[\"galaxy\"] = 1048576] = \"galaxy\";\n Classification[Classification[\"spiralGalaxy\"] = 2097152] = \"spiralGalaxy\";\n Classification[Classification[\"irregularGalaxy\"] = 4194304] = \"irregularGalaxy\";\n Classification[Classification[\"ellipticalGalaxy\"] = 8388608] = \"ellipticalGalaxy\";\n Classification[Classification[\"knot\"] = 16777216] = \"knot\";\n Classification[Classification[\"plateDefect\"] = 33554432] = \"plateDefect\";\n Classification[Classification[\"clusterOfGalaxies\"] = 67108864] = \"clusterOfGalaxies\";\n Classification[Classification[\"otherNGC\"] = 134217728] = \"otherNGC\";\n Classification[Classification[\"unidentified\"] = 268435456] = \"unidentified\";\n Classification[Classification[\"solarSystem\"] = 536870912] = \"solarSystem\";\n Classification[Classification[\"unfiltered\"] = 1073741823] = \"unfiltered\";\n Classification[Classification[\"stellar\"] = 63] = \"stellar\";\n Classification[Classification[\"stellarGroupings\"] = 2032] = \"stellarGroupings\";\n Classification[Classification[\"nebulae\"] = 523264] = \"nebulae\";\n Classification[Classification[\"galactic\"] = 133693440] = \"galactic\";\n Classification[Classification[\"other\"] = 436207616] = \"other\";\n})(Classification || (Classification = {}));\nvar CoordinatesType;\n(function (CoordinatesType) {\n CoordinatesType[CoordinatesType[\"spherical\"] = 0] = \"spherical\";\n CoordinatesType[CoordinatesType[\"rectangular\"] = 1] = \"rectangular\";\n CoordinatesType[CoordinatesType[\"orbital\"] = 2] = \"orbital\";\n})(CoordinatesType || (CoordinatesType = {}));\nvar DataTypes;\n(function (DataTypes) {\n DataTypes[DataTypes[\"byteT\"] = 0] = \"byteT\";\n DataTypes[DataTypes[\"int16T\"] = 1] = \"int16T\";\n DataTypes[DataTypes[\"int32T\"] = 2] = \"int32T\";\n DataTypes[DataTypes[\"floatT\"] = 3] = \"floatT\";\n DataTypes[DataTypes[\"doubleT\"] = 4] = \"doubleT\";\n DataTypes[DataTypes[\"none\"] = 5] = \"none\";\n})(DataTypes || (DataTypes = {}));\nvar FadeType;\n(function (FadeType) {\n FadeType[FadeType[\"fadeIn\"] = 1] = \"fadeIn\";\n FadeType[FadeType[\"fadeOut\"] = 2] = \"fadeOut\";\n FadeType[FadeType[\"both\"] = 3] = \"both\";\n FadeType[FadeType[\"none\"] = 4] = \"none\";\n})(FadeType || (FadeType = {}));\nvar FolderGroup;\n(function (FolderGroup) {\n FolderGroup[FolderGroup[\"explorer\"] = 0] = \"explorer\";\n FolderGroup[FolderGroup[\"tour\"] = 1] = \"tour\";\n FolderGroup[FolderGroup[\"search\"] = 2] = \"search\";\n FolderGroup[FolderGroup[\"constellation\"] = 3] = \"constellation\";\n FolderGroup[FolderGroup[\"view\"] = 4] = \"view\";\n FolderGroup[FolderGroup[\"goTo\"] = 5] = \"goTo\";\n FolderGroup[FolderGroup[\"community\"] = 6] = \"community\";\n FolderGroup[FolderGroup[\"context\"] = 7] = \"context\";\n FolderGroup[FolderGroup[\"voTable\"] = 8] = \"voTable\";\n FolderGroup[FolderGroup[\"imageStack\"] = 9] = \"imageStack\";\n})(FolderGroup || (FolderGroup = {}));\nvar FolderRefreshType;\n(function (FolderRefreshType) {\n FolderRefreshType[FolderRefreshType[\"interval\"] = 0] = \"interval\";\n FolderRefreshType[FolderRefreshType[\"conditionalGet\"] = 1] = \"conditionalGet\";\n FolderRefreshType[FolderRefreshType[\"viewChange\"] = 2] = \"viewChange\";\n})(FolderRefreshType || (FolderRefreshType = {}));\nvar FolderType;\n(function (FolderType) {\n FolderType[FolderType[\"earth\"] = 0] = \"earth\";\n FolderType[FolderType[\"planet\"] = 1] = \"planet\";\n FolderType[FolderType[\"sky\"] = 2] = \"sky\";\n FolderType[FolderType[\"panorama\"] = 3] = \"panorama\";\n})(FolderType || (FolderType = {}));\nvar ImageSetType;\n(function (ImageSetType) {\n ImageSetType[ImageSetType[\"earth\"] = 0] = \"earth\";\n ImageSetType[ImageSetType[\"planet\"] = 1] = \"planet\";\n ImageSetType[ImageSetType[\"sky\"] = 2] = \"sky\";\n ImageSetType[ImageSetType[\"panorama\"] = 3] = \"panorama\";\n ImageSetType[ImageSetType[\"solarSystem\"] = 4] = \"solarSystem\";\n ImageSetType[ImageSetType[\"sandbox\"] = 5] = \"sandbox\";\n})(ImageSetType || (ImageSetType = {}));\nvar MarkerScales;\n(function (MarkerScales) {\n MarkerScales[MarkerScales[\"screen\"] = 0] = \"screen\";\n MarkerScales[MarkerScales[\"world\"] = 1] = \"world\";\n})(MarkerScales || (MarkerScales = {}));\nvar PlotTypes;\n(function (PlotTypes) {\n PlotTypes[PlotTypes[\"gaussian\"] = 0] = \"gaussian\";\n PlotTypes[PlotTypes[\"point\"] = 1] = \"point\";\n PlotTypes[PlotTypes[\"circle\"] = 2] = \"circle\";\n PlotTypes[PlotTypes[\"square\"] = 3] = \"square\";\n PlotTypes[PlotTypes[\"pushPin\"] = 4] = \"pushPin\";\n PlotTypes[PlotTypes[\"custom\"] = 5] = \"custom\";\n})(PlotTypes || (PlotTypes = {}));\nvar PointScaleTypes;\n(function (PointScaleTypes) {\n PointScaleTypes[PointScaleTypes[\"linear\"] = 0] = \"linear\";\n PointScaleTypes[PointScaleTypes[\"power\"] = 1] = \"power\";\n PointScaleTypes[PointScaleTypes[\"log\"] = 2] = \"log\";\n PointScaleTypes[PointScaleTypes[\"constant\"] = 3] = \"constant\";\n PointScaleTypes[PointScaleTypes[\"stellarMagnitude\"] = 4] = \"stellarMagnitude\";\n})(PointScaleTypes || (PointScaleTypes = {}));\nvar ProjectionType;\n(function (ProjectionType) {\n ProjectionType[ProjectionType[\"mercator\"] = 0] = \"mercator\";\n ProjectionType[ProjectionType[\"equirectangular\"] = 1] = \"equirectangular\";\n ProjectionType[ProjectionType[\"tangent\"] = 2] = \"tangent\";\n ProjectionType[ProjectionType[\"tan\"] = 2] = \"tan\";\n ProjectionType[ProjectionType[\"toast\"] = 3] = \"toast\";\n ProjectionType[ProjectionType[\"spherical\"] = 4] = \"spherical\";\n ProjectionType[ProjectionType[\"skyImage\"] = 5] = \"skyImage\";\n ProjectionType[ProjectionType[\"plotted\"] = 6] = \"plotted\";\n})(ProjectionType || (ProjectionType = {}));\nvar RAUnits;\n(function (RAUnits) {\n RAUnits[RAUnits[\"hours\"] = 0] = \"hours\";\n RAUnits[RAUnits[\"degrees\"] = 1] = \"degrees\";\n})(RAUnits || (RAUnits = {}));\nvar ReferenceFrames;\n(function (ReferenceFrames) {\n ReferenceFrames[ReferenceFrames[\"sky\"] = 0] = \"sky\";\n ReferenceFrames[ReferenceFrames[\"ecliptic\"] = 1] = \"ecliptic\";\n ReferenceFrames[ReferenceFrames[\"galactic\"] = 2] = \"galactic\";\n ReferenceFrames[ReferenceFrames[\"sun\"] = 3] = \"sun\";\n ReferenceFrames[ReferenceFrames[\"mercury\"] = 4] = \"mercury\";\n ReferenceFrames[ReferenceFrames[\"venus\"] = 5] = \"venus\";\n ReferenceFrames[ReferenceFrames[\"earth\"] = 6] = \"earth\";\n ReferenceFrames[ReferenceFrames[\"mars\"] = 7] = \"mars\";\n ReferenceFrames[ReferenceFrames[\"jupiter\"] = 8] = \"jupiter\";\n ReferenceFrames[ReferenceFrames[\"saturn\"] = 9] = \"saturn\";\n ReferenceFrames[ReferenceFrames[\"uranus\"] = 10] = \"uranus\";\n ReferenceFrames[ReferenceFrames[\"neptune\"] = 11] = \"neptune\";\n ReferenceFrames[ReferenceFrames[\"pluto\"] = 12] = \"pluto\";\n ReferenceFrames[ReferenceFrames[\"moon\"] = 13] = \"moon\";\n ReferenceFrames[ReferenceFrames[\"io\"] = 14] = \"io\";\n ReferenceFrames[ReferenceFrames[\"europa\"] = 15] = \"europa\";\n ReferenceFrames[ReferenceFrames[\"ganymede\"] = 16] = \"ganymede\";\n ReferenceFrames[ReferenceFrames[\"callisto\"] = 17] = \"callisto\";\n ReferenceFrames[ReferenceFrames[\"custom\"] = 18] = \"custom\";\n ReferenceFrames[ReferenceFrames[\"identity\"] = 19] = \"identity\";\n ReferenceFrames[ReferenceFrames[\"sandbox\"] = 20] = \"sandbox\";\n})(ReferenceFrames || (ReferenceFrames = {}));\nvar ReferenceFrameTypes;\n(function (ReferenceFrameTypes) {\n ReferenceFrameTypes[ReferenceFrameTypes[\"fixedSherical\"] = 0] = \"fixedSherical\";\n ReferenceFrameTypes[ReferenceFrameTypes[\"orbital\"] = 1] = \"orbital\";\n ReferenceFrameTypes[ReferenceFrameTypes[\"trajectory\"] = 2] = \"trajectory\";\n ReferenceFrameTypes[ReferenceFrameTypes[\"synodic\"] = 3] = \"synodic\";\n})(ReferenceFrameTypes || (ReferenceFrameTypes = {}));\nvar ScaleTypes;\n(function (ScaleTypes) {\n ScaleTypes[ScaleTypes[\"linear\"] = 0] = \"linear\";\n ScaleTypes[ScaleTypes[\"log\"] = 1] = \"log\";\n ScaleTypes[ScaleTypes[\"power\"] = 2] = \"power\";\n ScaleTypes[ScaleTypes[\"squareRoot\"] = 3] = \"squareRoot\";\n ScaleTypes[ScaleTypes[\"histogramEqualization\"] = 4] = \"histogramEqualization\";\n})(ScaleTypes || (ScaleTypes = {}));\nvar SolarSystemObjects;\n(function (SolarSystemObjects) {\n SolarSystemObjects[SolarSystemObjects[\"sun\"] = 0] = \"sun\";\n SolarSystemObjects[SolarSystemObjects[\"mercury\"] = 1] = \"mercury\";\n SolarSystemObjects[SolarSystemObjects[\"venus\"] = 2] = \"venus\";\n SolarSystemObjects[SolarSystemObjects[\"mars\"] = 3] = \"mars\";\n SolarSystemObjects[SolarSystemObjects[\"jupiter\"] = 4] = \"jupiter\";\n SolarSystemObjects[SolarSystemObjects[\"saturn\"] = 5] = \"saturn\";\n SolarSystemObjects[SolarSystemObjects[\"uranus\"] = 6] = \"uranus\";\n SolarSystemObjects[SolarSystemObjects[\"neptune\"] = 7] = \"neptune\";\n SolarSystemObjects[SolarSystemObjects[\"pluto\"] = 8] = \"pluto\";\n SolarSystemObjects[SolarSystemObjects[\"moon\"] = 9] = \"moon\";\n SolarSystemObjects[SolarSystemObjects[\"io\"] = 10] = \"io\";\n SolarSystemObjects[SolarSystemObjects[\"europa\"] = 11] = \"europa\";\n SolarSystemObjects[SolarSystemObjects[\"ganymede\"] = 12] = \"ganymede\";\n SolarSystemObjects[SolarSystemObjects[\"callisto\"] = 13] = \"callisto\";\n SolarSystemObjects[SolarSystemObjects[\"ioShadow\"] = 14] = \"ioShadow\";\n SolarSystemObjects[SolarSystemObjects[\"europaShadow\"] = 15] = \"europaShadow\";\n SolarSystemObjects[SolarSystemObjects[\"ganymedeShadow\"] = 16] = \"ganymedeShadow\";\n SolarSystemObjects[SolarSystemObjects[\"callistoShadow\"] = 17] = \"callistoShadow\";\n SolarSystemObjects[SolarSystemObjects[\"sunEclipsed\"] = 18] = \"sunEclipsed\";\n SolarSystemObjects[SolarSystemObjects[\"earth\"] = 19] = \"earth\";\n SolarSystemObjects[SolarSystemObjects[\"custom\"] = 20] = \"custom\";\n SolarSystemObjects[SolarSystemObjects[\"undefined\"] = 65536] = \"undefined\";\n})(SolarSystemObjects || (SolarSystemObjects = {}));\n// I'm not aware of any smart TypeScripty way to automate the construction of this table :-(\nvar baseEngineSettingTypeInfo = {\n \"actualPlanetScale/boolean\": true,\n \"constellations/boolean\": true,\n \"constellationBoundryColor/string\": true,\n \"constellationFigureColor/string\": true,\n \"constellationsEnabled/string\": true,\n \"constellationSelectionColor/string\": true,\n \"crosshairsColor/string\": true,\n \"earthCutawayView/boolean\": true,\n //\"fovCamera/number\": true, // skipping because not settable\n //\"fovEyepiece/number\": true, // skipping because not settable\n //\"fovTelescope/number\": true, // skipping because not settable\n \"localHorizonMode/boolean\": true,\n \"galacticMode/boolean\": true,\n \"locationAltitude/number\": true,\n \"locationLat/number\": true,\n \"locationLng/number\": true,\n \"milkyWayModel/boolean\": true,\n \"showAltAzGrid/boolean\": true,\n \"showAltAzGridText/boolean\": true,\n //\"showClouds/boolean\": true, // skipping because not settable\n \"showConstellations/boolean\": true,\n \"showConstellationBoundries/boolean\": true,\n \"showConstellationFigures/boolean\": true,\n \"showConstellationLabels/boolean\": true,\n \"showConstellationPictures/boolean\": true,\n \"showConstellationSelection/boolean\": true,\n \"showCrosshairs/boolean\": true,\n \"showEarthSky/boolean\": true,\n \"showEcliptic/boolean\": true,\n \"showEclipticGrid/boolean\": true,\n \"showEclipticGridText/boolean\": true,\n \"showEclipticOverviewText/boolean\": true,\n \"showElevationModel/boolean\": true,\n \"showEquatorialGridText/boolean\": true,\n //\"showFieldOfView/boolean\": true, // skipping because not settable\n \"showGalacticGrid/boolean\": true,\n \"showGalacticGridText/boolean\": true,\n \"showGrid/boolean\": true,\n \"showHorizon/boolean\": true,\n //\"showHorizonPanorama/boolean\": true, // skipping because not settable\n \"showISSModel/boolean\": true,\n //\"showMoonsAsPointSource/boolean\": true, // skipping because not settable\n \"showPrecessionChart/boolean\": true,\n \"showSkyGrids/boolean\": true,\n \"showSkyNode/boolean\": true,\n \"showSkyOverlays/boolean\": true,\n \"showSkyOverlaysIn3d/boolean\": true,\n \"showSolarSystem/boolean\": true,\n \"smoothPan/boolean\": true,\n \"solarSystemCMB/boolean\": true,\n \"solarSystemCosmos/boolean\": true,\n \"solarSystemMilkyWay/boolean\": true,\n \"solarSystemOrbits/boolean\": true,\n \"solarSystemOverlays/boolean\": true,\n \"solarSystemLighting/boolean\": true,\n \"solarSystemMultiRes/boolean\": true,\n \"solarSystemMinorPlanets/boolean\": true,\n \"solarSystemMinorOrbits/boolean\": true,\n \"solarSystemPlanets/boolean\": true,\n \"solarSystemStars/boolean\": true,\n \"minorPlanetsFilter/number\": true,\n \"planetOrbitsFilter/number\": true,\n \"solarSystemScale/number\": true,\n};\n/** Type guard function for BaseEngineSetting. */\nfunction isBaseEngineSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return (key in baseEngineSettingTypeInfo);\n}\nvar baseLayerSettingTypeInfo = {\n \"astronomical/boolean\": true,\n \"enabled/boolean\": true,\n \"fadeSpan/number\": true,\n \"name/string\": true,\n \"opacity/number\": true,\n \"opened/boolean\": true,\n \"referenceFrame/string\": true,\n \"version/number\": true,\n};\n/** Type guard function for BaseLayerSetting. */\nfunction isBaseLayerSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return key in baseLayerSettingTypeInfo;\n}\nvar baseImageSetLayerSettingTypeInfo = {\n \"colorMapperName/string\": true,\n \"overrideDefaultLayer/boolean\": true,\n};\n/** Type guard function for BaseImageSetLayerSetting. */\nfunction isBaseImageSetLayerSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return (key in baseImageSetLayerSettingTypeInfo) || isBaseLayerSetting(obj);\n}\n// See implementation below -- we need to handle enums specially\n// to make sure that inputs are in-range.\nvar baseSpreadSheetLayerSettingTypeInfo = {\n \"altColumn/number\": \"\",\n \"altType/number\": \"AltTypes\",\n \"altUnit/number\": \"AltUnits\",\n \"barChartBitmask/number\": \"\",\n \"beginRange/Date\": \"\",\n \"cartesianCustomScale/number\": \"\",\n \"cartesianScale/number\": \"AltUnits\",\n \"colorMapColumn/number\": \"\",\n \"colorMapperName/string\": \"\",\n \"coordinatesType/number\": \"CoordinatesType\",\n \"decay/number\": \"\",\n \"dynamicColor/boolean\": \"\",\n \"dynamicData/boolean\": \"\",\n \"endDateColumn/number\": \"\",\n \"endRange/Date\": \"\",\n \"geometryColumn/number\": \"\",\n \"hyperlinkColumn/number\": \"\",\n \"hyperlinkFormat/string\": \"\",\n \"latColumn/number\": \"\",\n \"lngColumn/number\": \"\",\n \"markerColumn/number\": \"\",\n \"markerIndex/number\": \"\",\n \"markerScale/number\": \"\",\n \"nameColumn/number\": \"\",\n \"normalizeColorMap/boolean\": \"\",\n \"normalizeColorMapMax/number\": \"\",\n \"normalizeColorMapMin/number\": \"\",\n \"normalizeSize/boolean\": \"\",\n \"normalizeSizeClip/boolean\": \"\",\n \"normalizeSizeMax/number\": \"\",\n \"normalizeSizeMin/number\": \"\",\n \"plotType/number\": \"PlotTypes\",\n \"pointScaleType/number\": \"PointScaleTypes\",\n \"raUnits/number\": \"RAUnits\",\n \"scaleFactor/number\": \"\",\n \"showFarSide/boolean\": \"\",\n \"sizeColumn/number\": \"\",\n \"startDateColumn/number\": \"\",\n \"timeSeries/boolean\": \"\",\n \"xAxisColumn/number\": \"\",\n \"xAxisReverse/boolean\": \"\",\n \"yAxisColumn/number\": \"\",\n \"yAxisReverse/boolean\": \"\",\n \"zAxisColumn/number\": \"\",\n \"zAxisReverse/boolean\": \"\",\n};\n/** Type guard function for BaseSpreadSheetLayerSetting. */\nfunction isBaseSpreadSheetLayerSetting(obj) {\n if (isBaseLayerSetting(obj))\n return true;\n // We want to be able to properly recognize Date objects\n var type = obj[1] instanceof Date ? 'Date' : typeof obj[1];\n var key = obj[0] + \"/\" + type;\n var enumType = baseSpreadSheetLayerSettingTypeInfo[key];\n if (enumType === undefined) {\n return false;\n }\n else if (enumType == \"\") {\n return true;\n }\n else if (enumType == \"AltTypes\") {\n return obj[1] in AltTypes;\n }\n else if (enumType == \"AltUnits\") {\n return obj[1] in AltUnits;\n }\n else if (enumType == \"CoordinatesType\") {\n return obj[1] in CoordinatesType;\n }\n else if (enumType == \"PlotTypes\") {\n return obj[1] in PlotTypes;\n }\n else if (enumType == \"PointScaleTypes\") {\n return obj[1] in PointScaleTypes;\n }\n else if (enumType == \"RAUnits\") {\n return obj[1] in RAUnits;\n }\n else {\n throw new Error('internal bug isBaseSpreadSheetLayerSetting');\n }\n}\n// See implementation below -- we need to handle enums specially\n// to make sure that inputs are in-range.\nvar baseVoTableLayerSettingTypeInfo = {\n \"altColumn/number\": \"\",\n \"altType/number\": \"AltTypes\",\n \"altUnit/number\": \"AltUnits\",\n \"beginRange/Date\": \"\",\n \"cartesianCustomScale/number\": \"\",\n \"cartesianScale/number\": \"AltUnits\",\n \"colorMapColumn/number\": \"\",\n \"coordinatesType/number\": \"CoordinatesType\",\n \"dataSourceUrl/string\": \"\",\n \"decay/number\": \"\",\n \"dynamicData/boolean\": \"\",\n \"endDateColumn/number\": \"\",\n \"endRange/Date\": \"\",\n \"hyperlinkColumn/number\": \"\",\n \"hyperlinkFormat/string\": \"\",\n \"latColumn/number\": \"\",\n \"lngColumn/number\": \"\",\n \"markerColumn/number\": \"\",\n \"markerIndex/number\": \"\",\n \"markerScale/number\": \"\",\n \"nameColumn/number\": \"\",\n \"plotType/number\": \"PlotTypes\",\n \"pointScaleType/number\": \"PointScaleTypes\",\n \"raUnits/number\": \"RAUnits\",\n \"scaleFactor/number\": \"\",\n \"showFarSide/boolean\": \"\",\n \"sizeColumn/number\": \"\",\n \"startDateColumn/number\": \"\",\n \"timeSeries/boolean\": \"\",\n \"xAxisColumn/number\": \"\",\n \"xAxisReverse/boolean\": \"\",\n \"yAxisColumn/number\": \"\",\n \"yAxisReverse/boolean\": \"\",\n \"zAxisColumn/number\": \"\",\n \"zAxisReverse/boolean\": \"\",\n};\n/** Type guard function for BaseVoTableLayerSetting. */\nfunction isBaseVoTableLayerSetting(obj) {\n if (isBaseLayerSetting(obj))\n return true;\n var key = obj[0] + \"/\" + typeof obj[1];\n var enumType = baseVoTableLayerSettingTypeInfo[key];\n if (enumType === undefined) {\n return false;\n }\n else if (enumType == \"\") {\n return true;\n }\n else if (enumType == \"AltTypes\") {\n return obj[1] in AltTypes;\n }\n else if (enumType == \"AltUnits\") {\n return obj[1] in AltUnits;\n }\n else if (enumType == \"CoordinatesType\") {\n return obj[1] in CoordinatesType;\n }\n else if (enumType == \"PlotTypes\") {\n return obj[1] in PlotTypes;\n }\n else if (enumType == \"PointScaleTypes\") {\n return obj[1] in PointScaleTypes;\n }\n else if (enumType == \"RAUnits\") {\n return obj[1] in RAUnits;\n }\n else {\n throw new Error('internal bug isBaseVoTableLayerSetting');\n }\n}\nfunction keysOf(o) { return Object.keys(o); } // eslint-disable-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-explicit-any\nfunction enumLookup(stringEnum, s) {\n var e_1, _a;\n try {\n for (var _b = __values(keysOf(stringEnum)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var enumKey = _c.value;\n if (stringEnum[enumKey] === s) {\n return stringEnum[enumKey];\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return undefined;\n}\n\n// EXTERNAL MODULE: external {\"amd\":\"@wwtelescope/engine\",\"commonjs2\":\"@wwtelescope/engine\",\"commonjs\":\"@wwtelescope/engine\",\"root\":\"wwtlib\"}\nvar engine_root_wwtlib_ = __webpack_require__(\"9889\");\n\n// CONCATENATED MODULE: ../engine-helpers/src/layer.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/** Helpers for handling generic layers settings. */\n\n\n/** A list of the names of the available settings for generic layers. */\nvar layerSettingNames = [\n \"astronomical\",\n \"color\",\n \"enabled\",\n \"fadeSpan\",\n \"name\",\n \"opacity\",\n \"opened\",\n \"referenceFrame\",\n \"version\",\n];\nvar layerSettingTypeInfo = {\n \"color/Color\": true,\n};\n/** Type guard function for `LayerSetting`. */\nfunction isLayerSetting(obj) {\n var typekey = typeof obj[1];\n if (obj[1] instanceof engine_root_wwtlib_[\"Color\"]) {\n typekey = \"Color\";\n }\n var key = obj[0] + \"/\" + typekey;\n return (key in layerSettingTypeInfo) || isBaseLayerSetting(obj);\n}\n/** Apply a setting to a generic `Layer` or equivalent. */\nfunction applyLayerSetting(layer, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n layer[funcName](value);\n}\n/** Extract all of the current settings of a `Layer` or equivalent. */\nfunction extractLayerSettings(layer) {\n var e_1, _a;\n var s = [];\n try {\n for (var layerSettingNames_1 = __values(layerSettingNames), layerSettingNames_1_1 = layerSettingNames_1.next(); !layerSettingNames_1_1.done; layerSettingNames_1_1 = layerSettingNames_1.next()) {\n var n = layerSettingNames_1_1.value;\n s.push([n, layer[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (layerSettingNames_1_1 && !layerSettingNames_1_1.done && (_a = layerSettingNames_1.return)) _a.call(layerSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `Layer`, or equivalent, to another. */\nfunction copyLayerSettings(source, dest) {\n var e_2, _a;\n try {\n for (var layerSettingNames_2 = __values(layerSettingNames), layerSettingNames_2_1 = layerSettingNames_2.next(); !layerSettingNames_2_1.done; layerSettingNames_2_1 = layerSettingNames_2.next()) {\n var n = layerSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (layerSettingNames_2_1 && !layerSettingNames_2_1.done && (_a = layerSettingNames_2.return)) _a.call(layerSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `LayerSettingsInterface`. */\nvar LayerState = /** @class */ (function () {\n // Maybe possible to use remapped keys to create this type?:\n // https://www.typescriptlang.org/docs/handbook/2/mapped-types.html#key-remapping-via-as\n // Don't think we can implement functions, though, and we're currently (Aug\n // 2021) on TypeScript 3.9, while the above requires 4.1.\n function LayerState(source) {\n copyLayerSettings(source, this);\n }\n LayerState.prototype.get_astronomical = function () {\n return this.astronomical;\n };\n LayerState.prototype.set_astronomical = function (v) {\n this.astronomical = v;\n return v;\n };\n LayerState.prototype.get_color = function () {\n return this.color;\n };\n LayerState.prototype.set_color = function (v) {\n this.color = v;\n return v;\n };\n LayerState.prototype.get_enabled = function () {\n return this.enabled;\n };\n LayerState.prototype.set_enabled = function (v) {\n this.enabled = v;\n return v;\n };\n LayerState.prototype.get_endTime = function () {\n return this.endTime;\n };\n LayerState.prototype.set_endTime = function (v) {\n this.endTime = v;\n return v;\n };\n LayerState.prototype.get_fadeSpan = function () {\n return this.fadeSpan;\n };\n LayerState.prototype.set_fadeSpan = function (v) {\n this.fadeSpan = v;\n return v;\n };\n LayerState.prototype.get_fadeType = function () {\n return this.fadeType;\n };\n LayerState.prototype.set_fadeType = function (v) {\n this.fadeType = v;\n return v;\n };\n LayerState.prototype.get_name = function () {\n return this.name;\n };\n LayerState.prototype.set_name = function (v) {\n this.name = v;\n return v;\n };\n LayerState.prototype.get_opacity = function () {\n return this.opacity;\n };\n LayerState.prototype.set_opacity = function (v) {\n this.opacity = v;\n return v;\n };\n LayerState.prototype.get_opened = function () {\n return this.opened;\n };\n LayerState.prototype.set_opened = function (v) {\n this.opened = v;\n return v;\n };\n LayerState.prototype.get_referenceFrame = function () {\n return this.referenceFrame;\n };\n LayerState.prototype.set_referenceFrame = function (v) {\n this.referenceFrame = v;\n return v;\n };\n LayerState.prototype.get_startTime = function () {\n return this.startTime;\n };\n LayerState.prototype.set_startTime = function (v) {\n this.startTime = v;\n return v;\n };\n LayerState.prototype.get_version = function () {\n return this.version;\n };\n LayerState.prototype.set_version = function (v) {\n this.version = v;\n return v;\n };\n return LayerState;\n}());\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/imagesetlayer.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/** Helpers for handling imageset layer settings. */\n\n\nvar justImageSetLayerSettingNames = [\n \"colorMapperName\",\n \"overrideDefaultLayer\",\n];\n/** A list of the names of the available settings for `ImageSetLayer`\n * instances and their equivalents (things implementing\n * [[ImageSetLayerSettingsInterface]]).\n *\n * This is a superset of the names available for generic layers.\n*/\nvar imageSetLayerSettingNames = layerSettingNames.concat(justImageSetLayerSettingNames);\n/** Type guard function for `ImageSetLayerSetting`. */\nfunction isImageSetLayerSetting(obj) {\n // No special settings specific to non-base ImageSetLayerSetting.\n return isLayerSetting(obj) || isBaseImageSetLayerSetting(obj);\n}\n/** Apply a setting to a `ImageSetLayer` or equivalent. */\nfunction applyImageSetLayerSetting(layer, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n layer[funcName](value);\n}\n/** Extract all of the current settings of a `ImageSetLayer` or equivalent. */\nfunction extractImageSetLayerSettings(layer) {\n var e_1, _a;\n var s = extractLayerSettings(layer);\n try {\n for (var justImageSetLayerSettingNames_1 = __values(justImageSetLayerSettingNames), justImageSetLayerSettingNames_1_1 = justImageSetLayerSettingNames_1.next(); !justImageSetLayerSettingNames_1_1.done; justImageSetLayerSettingNames_1_1 = justImageSetLayerSettingNames_1.next()) {\n var n = justImageSetLayerSettingNames_1_1.value;\n s.push([n, layer[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (justImageSetLayerSettingNames_1_1 && !justImageSetLayerSettingNames_1_1.done && (_a = justImageSetLayerSettingNames_1.return)) _a.call(justImageSetLayerSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `ImageSetLayer`, or equivalent, to another. */\nfunction copyImageSetLayerSettings(source, dest) {\n var e_2, _a;\n copyLayerSettings(source, dest);\n try {\n for (var justImageSetLayerSettingNames_2 = __values(justImageSetLayerSettingNames), justImageSetLayerSettingNames_2_1 = justImageSetLayerSettingNames_2.next(); !justImageSetLayerSettingNames_2_1.done; justImageSetLayerSettingNames_2_1 = justImageSetLayerSettingNames_2.next()) {\n var n = justImageSetLayerSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (justImageSetLayerSettingNames_2_1 && !justImageSetLayerSettingNames_2_1.done && (_a = justImageSetLayerSettingNames_2.return)) _a.call(justImageSetLayerSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `ImageSetLayerSettingsInterface`. */\nvar imagesetlayer_ImageSetLayerState = /** @class */ (function (_super) {\n __extends(ImageSetLayerState, _super);\n function ImageSetLayerState(source) {\n var _this = \n // Here we redundantly copy the generic Layer settings, but TypeScript\n // requires the super() call. Oh well.\n _super.call(this, source) || this;\n copyImageSetLayerSettings(source, _this);\n return _this;\n }\n ImageSetLayerState.prototype.get_colorMapperName = function () {\n return this.colorMapperName;\n };\n ImageSetLayerState.prototype.set_colorMapperName = function (v) {\n this.colorMapperName = v;\n return v;\n };\n ImageSetLayerState.prototype.get_overrideDefaultLayer = function () {\n return this.overrideDefaultLayer;\n };\n ImageSetLayerState.prototype.set_overrideDefaultLayer = function (v) {\n this.overrideDefaultLayer = v;\n return v;\n };\n return ImageSetLayerState;\n}(LayerState));\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/spreadsheetlayer.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/** Helpers for handling \"spreadsheet\" layer settings. */\n\n\nvar justSpreadSheetLayerSettingNames = [\n \"altColumn\",\n \"altType\",\n \"altUnit\",\n \"barChartBitmask\",\n \"beginRange\",\n \"cartesianCustomScale\",\n \"cartesianScale\",\n \"colorMapColumn\",\n \"colorMapperName\",\n \"coordinatesType\",\n \"decay\",\n \"dynamicColor\",\n \"dynamicData\",\n \"endDateColumn\",\n \"endRange\",\n \"geometryColumn\",\n \"hyperlinkColumn\",\n \"hyperlinkFormat\",\n \"latColumn\",\n \"lngColumn\",\n \"markerColumn\",\n \"markerIndex\",\n \"markerScale\",\n \"nameColumn\",\n \"normalizeColorMap\",\n \"normalizeColorMapMax\",\n \"normalizeColorMapMin\",\n \"normalizeSize\",\n \"normalizeSizeClip\",\n \"normalizeSizeMax\",\n \"normalizeSizeMin\",\n \"plotType\",\n \"pointScaleType\",\n \"raUnits\",\n \"scaleFactor\",\n \"showFarSide\",\n \"sizeColumn\",\n \"startDateColumn\",\n \"timeSeries\",\n \"xAxisColumn\",\n \"xAxisReverse\",\n \"yAxisColumn\",\n \"yAxisReverse\",\n \"zAxisColumn\",\n \"zAxisReverse\",\n];\n/** A list of the names of the available settings for `SpreadSheetLayer`\n * instances and their equivalents (things implementing\n * [[SpreadSheetLayerSettingsInterface]]).\n *\n * This is a superset of the names available for generic layers.\n*/\nvar spreadSheetLayerSettingNames = layerSettingNames.concat(justSpreadSheetLayerSettingNames);\n/** Type guard function for `SpreadSheetLayerSetting`. */\nfunction isSpreadSheetLayerSetting(obj) {\n // No special settings specific to non-base SpreadSheetLayerSetting.\n return isLayerSetting(obj) || isBaseSpreadSheetLayerSetting(obj);\n}\n/** Apply a setting to a `SpreadSheetLayer` or equivalent. */\nfunction applySpreadSheetLayerSetting(layer, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1]; // eslint-disable-line @typescript-eslint/no-explicit-any\n layer[funcName](value); // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n/** Extract all of the current settings of a `SpreadSheetLayer` or equivalent. */\nfunction extractSpreadSheetLayerSettings(layer) {\n var e_1, _a;\n var s = extractLayerSettings(layer);\n try {\n for (var justSpreadSheetLayerSettingNames_1 = __values(justSpreadSheetLayerSettingNames), justSpreadSheetLayerSettingNames_1_1 = justSpreadSheetLayerSettingNames_1.next(); !justSpreadSheetLayerSettingNames_1_1.done; justSpreadSheetLayerSettingNames_1_1 = justSpreadSheetLayerSettingNames_1.next()) {\n var n = justSpreadSheetLayerSettingNames_1_1.value;\n s.push([n, layer[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (justSpreadSheetLayerSettingNames_1_1 && !justSpreadSheetLayerSettingNames_1_1.done && (_a = justSpreadSheetLayerSettingNames_1.return)) _a.call(justSpreadSheetLayerSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `SpreadSheetLayer`, or equivalent, to another. */\nfunction copySpreadSheetLayerSettings(source, dest) {\n var e_2, _a;\n copyLayerSettings(source, dest);\n try {\n for (var justSpreadSheetLayerSettingNames_2 = __values(justSpreadSheetLayerSettingNames), justSpreadSheetLayerSettingNames_2_1 = justSpreadSheetLayerSettingNames_2.next(); !justSpreadSheetLayerSettingNames_2_1.done; justSpreadSheetLayerSettingNames_2_1 = justSpreadSheetLayerSettingNames_2.next()) {\n var n = justSpreadSheetLayerSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (justSpreadSheetLayerSettingNames_2_1 && !justSpreadSheetLayerSettingNames_2_1.done && (_a = justSpreadSheetLayerSettingNames_2.return)) _a.call(justSpreadSheetLayerSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `SpreadSheetLayerSettingsInterface`. */\nvar spreadsheetlayer_SpreadSheetLayerState = /** @class */ (function (_super) {\n __extends(SpreadSheetLayerState, _super);\n function SpreadSheetLayerState(source) {\n var _this = \n // Here we redundantly copy the generic Layer settings, but TypeScript\n // requires the super() call. Oh well.\n _super.call(this, source) || this;\n copySpreadSheetLayerSettings(source, _this);\n return _this;\n }\n SpreadSheetLayerState.prototype.get_altColumn = function () {\n return this.altColumn;\n };\n SpreadSheetLayerState.prototype.set_altColumn = function (v) {\n this.altColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_altType = function () {\n return this.altType;\n };\n SpreadSheetLayerState.prototype.set_altType = function (v) {\n this.altType = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_altUnit = function () {\n return this.altUnit;\n };\n SpreadSheetLayerState.prototype.set_altUnit = function (v) {\n this.altUnit = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_barChartBitmask = function () {\n return this.barChartBitmask;\n };\n SpreadSheetLayerState.prototype.set_barChartBitmask = function (v) {\n this.barChartBitmask = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_beginRange = function () {\n return this.beginRange;\n };\n SpreadSheetLayerState.prototype.set_beginRange = function (v) {\n this.beginRange = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_cartesianCustomScale = function () {\n return this.cartesianCustomScale;\n };\n SpreadSheetLayerState.prototype.set_cartesianCustomScale = function (v) {\n this.cartesianCustomScale = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_cartesianScale = function () {\n return this.cartesianScale;\n };\n SpreadSheetLayerState.prototype.set_cartesianScale = function (v) {\n this.cartesianScale = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_colorMapColumn = function () {\n return this.colorMapColumn;\n };\n SpreadSheetLayerState.prototype.set_colorMapColumn = function (v) {\n this.colorMapColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_colorMapperName = function () {\n return this.colorMapperName;\n };\n SpreadSheetLayerState.prototype.set_colorMapperName = function (v) {\n this.colorMapperName = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_coordinatesType = function () {\n return this.coordinatesType;\n };\n SpreadSheetLayerState.prototype.set_coordinatesType = function (v) {\n this.coordinatesType = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_decay = function () {\n return this.decay;\n };\n SpreadSheetLayerState.prototype.set_decay = function (v) {\n this.decay = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_dynamicColor = function () {\n return this.dynamicColor;\n };\n SpreadSheetLayerState.prototype.set_dynamicColor = function (v) {\n this.dynamicColor = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_dynamicData = function () {\n return this.dynamicData;\n };\n SpreadSheetLayerState.prototype.set_dynamicData = function (v) {\n this.dynamicData = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_endDateColumn = function () {\n return this.endDateColumn;\n };\n SpreadSheetLayerState.prototype.set_endDateColumn = function (v) {\n this.endDateColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_endRange = function () {\n return this.endRange;\n };\n SpreadSheetLayerState.prototype.set_endRange = function (v) {\n this.endRange = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_geometryColumn = function () {\n return this.geometryColumn;\n };\n SpreadSheetLayerState.prototype.set_geometryColumn = function (v) {\n this.geometryColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_hyperlinkColumn = function () {\n return this.hyperlinkColumn;\n };\n SpreadSheetLayerState.prototype.set_hyperlinkColumn = function (v) {\n this.hyperlinkColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_hyperlinkFormat = function () {\n return this.hyperlinkFormat;\n };\n SpreadSheetLayerState.prototype.set_hyperlinkFormat = function (v) {\n this.hyperlinkFormat = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_latColumn = function () {\n return this.latColumn;\n };\n SpreadSheetLayerState.prototype.set_latColumn = function (v) {\n this.latColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_lngColumn = function () {\n return this.lngColumn;\n };\n SpreadSheetLayerState.prototype.set_lngColumn = function (v) {\n this.lngColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_markerColumn = function () {\n return this.markerColumn;\n };\n SpreadSheetLayerState.prototype.set_markerColumn = function (v) {\n this.markerColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_markerIndex = function () {\n return this.markerIndex;\n };\n SpreadSheetLayerState.prototype.set_markerIndex = function (v) {\n this.markerIndex = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_markerScale = function () {\n return this.markerScale;\n };\n SpreadSheetLayerState.prototype.set_markerScale = function (v) {\n this.markerScale = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_nameColumn = function () {\n return this.nameColumn;\n };\n SpreadSheetLayerState.prototype.set_nameColumn = function (v) {\n this.nameColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeColorMap = function () {\n return this.normalizeColorMap;\n };\n SpreadSheetLayerState.prototype.set_normalizeColorMap = function (v) {\n this.normalizeColorMap = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeColorMapMax = function () {\n return this.normalizeColorMapMax;\n };\n SpreadSheetLayerState.prototype.set_normalizeColorMapMax = function (v) {\n this.normalizeColorMapMax = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeColorMapMin = function () {\n return this.normalizeColorMapMin;\n };\n SpreadSheetLayerState.prototype.set_normalizeColorMapMin = function (v) {\n this.normalizeColorMapMin = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeSize = function () {\n return this.normalizeSize;\n };\n SpreadSheetLayerState.prototype.set_normalizeSize = function (v) {\n this.normalizeSize = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeSizeClip = function () {\n return this.normalizeSizeClip;\n };\n SpreadSheetLayerState.prototype.set_normalizeSizeClip = function (v) {\n this.normalizeSizeClip = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeSizeMax = function () {\n return this.normalizeSizeMax;\n };\n SpreadSheetLayerState.prototype.set_normalizeSizeMax = function (v) {\n this.normalizeSizeMax = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_normalizeSizeMin = function () {\n return this.normalizeSizeMin;\n };\n SpreadSheetLayerState.prototype.set_normalizeSizeMin = function (v) {\n this.normalizeSizeMin = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_plotType = function () {\n return this.plotType;\n };\n SpreadSheetLayerState.prototype.set_plotType = function (v) {\n this.plotType = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_pointScaleType = function () {\n return this.pointScaleType;\n };\n SpreadSheetLayerState.prototype.set_pointScaleType = function (v) {\n this.pointScaleType = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_raUnits = function () {\n return this.raUnits;\n };\n SpreadSheetLayerState.prototype.set_raUnits = function (v) {\n this.raUnits = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_scaleFactor = function () {\n return this.scaleFactor;\n };\n SpreadSheetLayerState.prototype.set_scaleFactor = function (v) {\n this.scaleFactor = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_showFarSide = function () {\n return this.showFarSide;\n };\n SpreadSheetLayerState.prototype.set_showFarSide = function (v) {\n this.showFarSide = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_sizeColumn = function () {\n return this.sizeColumn;\n };\n SpreadSheetLayerState.prototype.set_sizeColumn = function (v) {\n this.sizeColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_startDateColumn = function () {\n return this.startDateColumn;\n };\n SpreadSheetLayerState.prototype.set_startDateColumn = function (v) {\n this.startDateColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_timeSeries = function () {\n return this.timeSeries;\n };\n SpreadSheetLayerState.prototype.set_timeSeries = function (v) {\n this.timeSeries = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_xAxisColumn = function () {\n return this.xAxisColumn;\n };\n SpreadSheetLayerState.prototype.set_xAxisColumn = function (v) {\n this.xAxisColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_xAxisReverse = function () {\n return this.xAxisReverse;\n };\n SpreadSheetLayerState.prototype.set_xAxisReverse = function (v) {\n this.xAxisReverse = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_yAxisColumn = function () {\n return this.yAxisColumn;\n };\n SpreadSheetLayerState.prototype.set_yAxisColumn = function (v) {\n this.yAxisColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_yAxisReverse = function () {\n return this.yAxisReverse;\n };\n SpreadSheetLayerState.prototype.set_yAxisReverse = function (v) {\n this.yAxisReverse = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_zAxisColumn = function () {\n return this.zAxisColumn;\n };\n SpreadSheetLayerState.prototype.set_zAxisColumn = function (v) {\n this.zAxisColumn = v;\n return v;\n };\n SpreadSheetLayerState.prototype.get_zAxisReverse = function () {\n return this.zAxisReverse;\n };\n SpreadSheetLayerState.prototype.set_zAxisReverse = function (v) {\n this.zAxisReverse = v;\n return v;\n };\n return SpreadSheetLayerState;\n}(LayerState));\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/annotation.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n/** A list of the names of the available settings for annotations. */\nvar annotationSettingNames = [\n \"id\",\n \"label\",\n \"opacity\",\n \"showHoverLabel\",\n \"tag\",\n];\nvar annotationSettingTypeInfo = {\n \"id/string\": true,\n \"label/string\": true,\n \"opacity/number\": true,\n \"showHoverLabel/boolean\": true,\n \"tag/string\": true,\n};\n/** Type guard function for `AnnotationSetting`. */\nfunction isAnnotationSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return key in annotationSettingTypeInfo;\n}\n/** Apply a setting to a generic `Annotation` or equivalent. */\nfunction applyAnnotationSetting(annotation, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n annotation[funcName](value);\n}\n/** Extract all of the current settings of a `Annotation` or equivalent. */\nfunction extractAnnotationSettings(annotation) {\n var e_1, _a;\n var s = [];\n try {\n for (var annotationSettingNames_1 = __values(annotationSettingNames), annotationSettingNames_1_1 = annotationSettingNames_1.next(); !annotationSettingNames_1_1.done; annotationSettingNames_1_1 = annotationSettingNames_1.next()) {\n var n = annotationSettingNames_1_1.value;\n s.push([n, annotation[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (annotationSettingNames_1_1 && !annotationSettingNames_1_1.done && (_a = annotationSettingNames_1.return)) _a.call(annotationSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `Annotation`, or equivalent, to another. */\nfunction copyAnnotationSettings(source, dest) {\n var e_2, _a;\n try {\n for (var annotationSettingNames_2 = __values(annotationSettingNames), annotationSettingNames_2_1 = annotationSettingNames_2.next(); !annotationSettingNames_2_1.done; annotationSettingNames_2_1 = annotationSettingNames_2.next()) {\n var n = annotationSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (annotationSettingNames_2_1 && !annotationSettingNames_2_1.done && (_a = annotationSettingNames_2.return)) _a.call(annotationSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `AnnotationSettingsInterface`. */\nvar AnnotationState = /** @class */ (function () {\n function AnnotationState(source) {\n copyAnnotationSettings(source, this);\n }\n AnnotationState.prototype.get_id = function () {\n return this.id;\n };\n AnnotationState.prototype.set_id = function (v) {\n this.id = v;\n return v;\n };\n AnnotationState.prototype.get_label = function () {\n return this.label;\n };\n AnnotationState.prototype.set_label = function (v) {\n this.label = v;\n return v;\n };\n AnnotationState.prototype.get_opacity = function () {\n return this.opacity;\n };\n AnnotationState.prototype.set_opacity = function (v) {\n this.opacity = v;\n return v;\n };\n AnnotationState.prototype.get_showHoverLabel = function () {\n return this.showHoverLabel;\n };\n AnnotationState.prototype.set_showHoverLabel = function (v) {\n this.showHoverLabel = v;\n return v;\n };\n AnnotationState.prototype.get_tag = function () {\n return this.tag;\n };\n AnnotationState.prototype.set_tag = function (v) {\n this.tag = v;\n return v;\n };\n return AnnotationState;\n}());\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/circleannotation.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n\nvar justCircleAnnotationSettingNames = [\n \"fill\",\n \"fillColor\",\n \"lineColor\",\n \"lineWidth\",\n \"radius\",\n \"skyRelative\",\n];\n/** A list of the names of the available settings for `CircleAnnotation`\n * instances and their equivalents (things implementing\n * [[CircleAnnotationSettingsInterface]]).\n *\n * This is a superset of the names available for generic annotations.\n*/\nvar circleAnnotationSettingNames = annotationSettingNames.concat(justCircleAnnotationSettingNames);\nvar circleAnnotationSettingTypeInfo = {\n \"fill/boolean\": true,\n \"fillColor/string\": true,\n \"lineColor/string\": true,\n \"lineWidth/number\": true,\n \"radius/number\": true,\n \"skyRelative/boolean\": true,\n};\n/** Type guard function for `CircleAnnotationSetting`. */\nfunction isCircleAnnotationSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return (key in circleAnnotationSettingTypeInfo) || isAnnotationSetting(obj);\n}\n/** Apply a setting to a generic `CircleAnnotation` or equivalent. */\nfunction applyCircleAnnotationSetting(circle, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n circle[funcName](value);\n}\n/** Extract all of the current settings of a `CircleAnnotation` or equivalent. */\nfunction extractCircleAnnotationSettings(circle) {\n var e_1, _a;\n var s = extractAnnotationSettings(circle);\n try {\n for (var justCircleAnnotationSettingNames_1 = __values(justCircleAnnotationSettingNames), justCircleAnnotationSettingNames_1_1 = justCircleAnnotationSettingNames_1.next(); !justCircleAnnotationSettingNames_1_1.done; justCircleAnnotationSettingNames_1_1 = justCircleAnnotationSettingNames_1.next()) {\n var n = justCircleAnnotationSettingNames_1_1.value;\n s.push([n, circle[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (justCircleAnnotationSettingNames_1_1 && !justCircleAnnotationSettingNames_1_1.done && (_a = justCircleAnnotationSettingNames_1.return)) _a.call(justCircleAnnotationSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `CircleAnnotation`, or equivalent, to another. */\nfunction copyCircleAnnotationSettings(source, dest) {\n var e_2, _a;\n copyAnnotationSettings(source, dest);\n try {\n for (var justCircleAnnotationSettingNames_2 = __values(justCircleAnnotationSettingNames), justCircleAnnotationSettingNames_2_1 = justCircleAnnotationSettingNames_2.next(); !justCircleAnnotationSettingNames_2_1.done; justCircleAnnotationSettingNames_2_1 = justCircleAnnotationSettingNames_2.next()) {\n var n = justCircleAnnotationSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (justCircleAnnotationSettingNames_2_1 && !justCircleAnnotationSettingNames_2_1.done && (_a = justCircleAnnotationSettingNames_2.return)) _a.call(justCircleAnnotationSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `CircleAnnotationSettingsInterface`. */\nvar circleannotation_CircleAnnotationState = /** @class */ (function (_super) {\n __extends(CircleAnnotationState, _super);\n function CircleAnnotationState(source) {\n var _this = _super.call(this, source) || this;\n copyCircleAnnotationSettings(source, _this);\n return _this;\n }\n CircleAnnotationState.prototype.get_fill = function () {\n return this.fill;\n };\n CircleAnnotationState.prototype.set_fill = function (v) {\n this.fill = v;\n return v;\n };\n CircleAnnotationState.prototype.get_fillColor = function () {\n return this.fillColor;\n };\n CircleAnnotationState.prototype.set_fillColor = function (v) {\n this.fillColor = v;\n return v;\n };\n CircleAnnotationState.prototype.get_lineColor = function () {\n return this.lineColor;\n };\n CircleAnnotationState.prototype.set_lineColor = function (v) {\n this.lineColor = v;\n return v;\n };\n CircleAnnotationState.prototype.get_lineWidth = function () {\n return this.lineWidth;\n };\n CircleAnnotationState.prototype.set_lineWidth = function (v) {\n this.lineWidth = v;\n return v;\n };\n CircleAnnotationState.prototype.get_radius = function () {\n return this.radius;\n };\n CircleAnnotationState.prototype.set_radius = function (v) {\n this.radius = v;\n return v;\n };\n CircleAnnotationState.prototype.get_skyRelative = function () {\n return this.skyRelative;\n };\n CircleAnnotationState.prototype.set_skyRelative = function (v) {\n this.skyRelative = v;\n return v;\n };\n return CircleAnnotationState;\n}(AnnotationState));\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/engine.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/** Helpers for handling core engine settings. */\n\n\n/** A list of the names of the core engine settings. */\nvar engineSettingNames = [\n \"actualPlanetScale\",\n \"constellationArtFilter\",\n \"constellationBoundariesFilter\",\n \"constellationFigureColor\",\n \"constellationFiguresFilter\",\n \"constellationBoundryColor\",\n \"constellationNamesFilter\",\n \"constellations\",\n \"constellationSelectionColor\",\n \"constellationsEnabled\",\n \"crosshairsColor\",\n \"earthCutawayView\",\n \"galacticMode\",\n \"localHorizonMode\",\n \"locationAltitude\",\n \"locationLat\",\n \"locationLng\",\n \"milkyWayModel\",\n \"minorPlanetsFilter\",\n \"planetOrbitsFilter\",\n \"showAltAzGrid\",\n \"showAltAzGridText\",\n \"showConstellationBoundries\",\n \"showConstellationFigures\",\n \"showConstellationLabels\",\n \"showConstellationPictures\",\n \"showConstellations\",\n \"showConstellationSelection\",\n \"showCrosshairs\",\n \"showEarthSky\",\n \"showEcliptic\",\n \"showEclipticGrid\",\n \"showEclipticGridText\",\n \"showEclipticOverviewText\",\n \"showElevationModel\",\n \"showEquatorialGridText\",\n \"showGalacticGrid\",\n \"showGalacticGridText\",\n \"showGrid\",\n \"showHorizon\",\n \"showISSModel\",\n \"showPrecessionChart\",\n \"showSkyGrids\",\n \"showSkyOverlays\",\n \"showSkyOverlaysIn3d\",\n \"showSkyNode\",\n \"showSolarSystem\",\n \"smoothPan\",\n \"solarSystemCMB\",\n \"solarSystemCosmos\",\n \"solarSystemLighting\",\n \"solarSystemMilkyWay\",\n \"solarSystemMinorPlanets\",\n \"solarSystemMultiRes\",\n \"solarSystemOrbits\",\n \"solarSystemOverlays\",\n \"solarSystemPlanets\",\n \"solarSystemScale\",\n \"solarSystemStars\",\n \"solarSystemMinorOrbits\",\n];\nvar engineSettingTypeInfo = {\n \"constellationArtFilter/ConstellationFilter\": true,\n \"constellationBoundariesFilter/ConstellationFilter\": true,\n \"constellationBoundryColor/Color\": true,\n \"constellationFigureColor/Color\": true,\n \"constellationFiguresFilter/ConstellationFilter\": true,\n \"constellationNamesFilter/ConstellationFilter\": true,\n \"constellationSelectionColor/Color\": true,\n \"crosshairsColor/Color\": true,\n};\n/** Type guard function for `EngineSetting`. */\nfunction isEngineSetting(obj) {\n var typekey = typeof obj[1];\n if (obj[1] instanceof engine_root_wwtlib_[\"Color\"]) {\n typekey = \"Color\";\n }\n else if (obj[1] instanceof engine_root_wwtlib_[\"ConstellationFilter\"]) {\n typekey = \"ConstellationFilter\";\n }\n var key = obj[0] + \"/\" + typekey;\n return isBaseEngineSetting(obj) || (key in engineSettingTypeInfo);\n}\n/** Apply a setting to the engine or an equivalent. */\nfunction applyEngineSetting(engine, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n engine[funcName](value);\n}\n/** Extract all of the current settings of the engine or an equivalent. */\nfunction extractEngineSettings(engine) {\n var e_1, _a;\n var s = [];\n try {\n for (var engineSettingNames_1 = __values(engineSettingNames), engineSettingNames_1_1 = engineSettingNames_1.next(); !engineSettingNames_1_1.done; engineSettingNames_1_1 = engineSettingNames_1.next()) {\n var n = engineSettingNames_1_1.value;\n s.push([n, engine[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (engineSettingNames_1_1 && !engineSettingNames_1_1.done && (_a = engineSettingNames_1.return)) _a.call(engineSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from the engine, or an equivalent, to another. */\nfunction copyEngineSettings(source, dest) {\n var e_2, _a;\n try {\n for (var engineSettingNames_2 = __values(engineSettingNames), engineSettingNames_2_1 = engineSettingNames_2.next(); !engineSettingNames_2_1.done; engineSettingNames_2_1 = engineSettingNames_2.next()) {\n var n = engineSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (engineSettingNames_2_1 && !engineSettingNames_2_1.done && (_a = engineSettingNames_2.return)) _a.call(engineSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `EngineSettingsInterface`. */\nvar EngineState = /** @class */ (function () {\n function EngineState(source) {\n copyEngineSettings(source, this);\n }\n EngineState.prototype.get_actualPlanetScale = function () {\n return this.actualPlanetScale;\n };\n EngineState.prototype.set_actualPlanetScale = function (v) {\n this.actualPlanetScale = v;\n return v;\n };\n EngineState.prototype.get_constellationArtFilter = function () {\n return this.constellationArtFilter;\n };\n EngineState.prototype.set_constellationArtFilter = function (v) {\n this.constellationArtFilter = v;\n return v;\n };\n EngineState.prototype.get_constellationBoundariesFilter = function () {\n return this.constellationBoundariesFilter;\n };\n EngineState.prototype.set_constellationBoundariesFilter = function (v) {\n this.constellationBoundariesFilter = v;\n return v;\n };\n EngineState.prototype.get_constellationFigureColor = function () {\n return this.constellationFigureColor;\n };\n EngineState.prototype.set_constellationFigureColor = function (v) {\n this.constellationFigureColor = v;\n return v;\n };\n EngineState.prototype.get_constellationFiguresFilter = function () {\n return this.constellationFiguresFilter;\n };\n EngineState.prototype.set_constellationFiguresFilter = function (v) {\n this.constellationFiguresFilter = v;\n return v;\n };\n EngineState.prototype.get_constellationBoundryColor = function () {\n return this.constellationBoundryColor;\n };\n EngineState.prototype.set_constellationBoundryColor = function (v) {\n this.constellationBoundryColor = v;\n return v;\n };\n EngineState.prototype.get_constellationNamesFilter = function () {\n return this.constellationNamesFilter;\n };\n EngineState.prototype.set_constellationNamesFilter = function (v) {\n this.constellationNamesFilter = v;\n return v;\n };\n EngineState.prototype.get_constellations = function () {\n return this.constellations;\n };\n EngineState.prototype.set_constellations = function (v) {\n this.constellations = v;\n return v;\n };\n EngineState.prototype.get_constellationSelectionColor = function () {\n return this.constellationSelectionColor;\n };\n EngineState.prototype.set_constellationSelectionColor = function (v) {\n this.constellationSelectionColor = v;\n return v;\n };\n EngineState.prototype.get_constellationsEnabled = function () {\n return this.constellationsEnabled;\n };\n EngineState.prototype.set_constellationsEnabled = function (v) {\n this.constellationsEnabled = v;\n return v;\n };\n EngineState.prototype.get_crosshairsColor = function () {\n return this.crosshairsColor;\n };\n EngineState.prototype.set_crosshairsColor = function (v) {\n this.crosshairsColor = v;\n return v;\n };\n EngineState.prototype.get_earthCutawayView = function () {\n return this.earthCutawayView;\n };\n EngineState.prototype.set_earthCutawayView = function (v) {\n this.earthCutawayView = v;\n return v;\n };\n EngineState.prototype.get_galacticMode = function () {\n return this.galacticMode;\n };\n EngineState.prototype.set_galacticMode = function (v) {\n this.galacticMode = v;\n return v;\n };\n EngineState.prototype.get_localHorizonMode = function () {\n return this.localHorizonMode;\n };\n EngineState.prototype.set_localHorizonMode = function (v) {\n this.localHorizonMode = v;\n return v;\n };\n EngineState.prototype.get_locationAltitude = function () {\n return this.locationAltitude;\n };\n EngineState.prototype.set_locationAltitude = function (v) {\n this.locationAltitude = v;\n return v;\n };\n EngineState.prototype.get_locationLat = function () {\n return this.locationLat;\n };\n EngineState.prototype.set_locationLat = function (v) {\n this.locationLat = v;\n return v;\n };\n EngineState.prototype.get_locationLng = function () {\n return this.locationLng;\n };\n EngineState.prototype.set_locationLng = function (v) {\n this.locationLng = v;\n return v;\n };\n EngineState.prototype.get_milkyWayModel = function () {\n return this.milkyWayModel;\n };\n EngineState.prototype.set_milkyWayModel = function (v) {\n this.milkyWayModel = v;\n return v;\n };\n EngineState.prototype.get_minorPlanetsFilter = function () {\n return this.minorPlanetsFilter;\n };\n EngineState.prototype.set_minorPlanetsFilter = function (v) {\n this.minorPlanetsFilter = v;\n return v;\n };\n EngineState.prototype.get_planetOrbitsFilter = function () {\n return this.planetOrbitsFilter;\n };\n EngineState.prototype.set_planetOrbitsFilter = function (v) {\n this.planetOrbitsFilter = v;\n return v;\n };\n EngineState.prototype.get_showAltAzGrid = function () {\n return this.showAltAzGrid;\n };\n EngineState.prototype.set_showAltAzGrid = function (v) {\n this.showAltAzGrid = v;\n return v;\n };\n EngineState.prototype.get_showAltAzGridText = function () {\n return this.showAltAzGridText;\n };\n EngineState.prototype.set_showAltAzGridText = function (v) {\n this.showAltAzGridText = v;\n return v;\n };\n EngineState.prototype.get_showConstellationBoundries = function () {\n return this.showConstellationBoundries;\n };\n EngineState.prototype.set_showConstellationBoundries = function (v) {\n this.showConstellationBoundries = v;\n return v;\n };\n EngineState.prototype.get_showConstellationFigures = function () {\n return this.showConstellationFigures;\n };\n EngineState.prototype.set_showConstellationFigures = function (v) {\n this.showConstellationFigures = v;\n return v;\n };\n EngineState.prototype.get_showConstellationLabels = function () {\n return this.showConstellationLabels;\n };\n EngineState.prototype.set_showConstellationLabels = function (v) {\n this.showConstellationLabels = v;\n return v;\n };\n EngineState.prototype.get_showConstellationPictures = function () {\n return this.showConstellationPictures;\n };\n EngineState.prototype.set_showConstellationPictures = function (v) {\n this.showConstellationPictures = v;\n return v;\n };\n EngineState.prototype.get_showConstellations = function () {\n return this.showConstellations;\n };\n EngineState.prototype.set_showConstellations = function (v) {\n this.showConstellations = v;\n return v;\n };\n EngineState.prototype.get_showConstellationSelection = function () {\n return this.showConstellationSelection;\n };\n EngineState.prototype.set_showConstellationSelection = function (v) {\n this.showConstellationSelection = v;\n return v;\n };\n EngineState.prototype.get_showCrosshairs = function () {\n return this.showCrosshairs;\n };\n EngineState.prototype.set_showCrosshairs = function (v) {\n this.showCrosshairs = v;\n return v;\n };\n EngineState.prototype.get_showEarthSky = function () {\n return this.showEarthSky;\n };\n EngineState.prototype.set_showEarthSky = function (v) {\n this.showEarthSky = v;\n return v;\n };\n EngineState.prototype.get_showEcliptic = function () {\n return this.showEcliptic;\n };\n EngineState.prototype.set_showEcliptic = function (v) {\n this.showEcliptic = v;\n return v;\n };\n EngineState.prototype.get_showEclipticGrid = function () {\n return this.showEclipticGrid;\n };\n EngineState.prototype.set_showEclipticGrid = function (v) {\n this.showEclipticGrid = v;\n return v;\n };\n EngineState.prototype.get_showEclipticGridText = function () {\n return this.showEclipticGridText;\n };\n EngineState.prototype.set_showEclipticGridText = function (v) {\n this.showEclipticGridText = v;\n return v;\n };\n EngineState.prototype.get_showEclipticOverviewText = function () {\n return this.showEclipticOverviewText;\n };\n EngineState.prototype.set_showEclipticOverviewText = function (v) {\n this.showEclipticOverviewText = v;\n return v;\n };\n EngineState.prototype.get_showElevationModel = function () {\n return this.showElevationModel;\n };\n EngineState.prototype.set_showElevationModel = function (v) {\n this.showElevationModel = v;\n return v;\n };\n EngineState.prototype.get_showEquatorialGridText = function () {\n return this.showEquatorialGridText;\n };\n EngineState.prototype.set_showEquatorialGridText = function (v) {\n this.showEquatorialGridText = v;\n return v;\n };\n EngineState.prototype.get_showGalacticGrid = function () {\n return this.showGalacticGrid;\n };\n EngineState.prototype.set_showGalacticGrid = function (v) {\n this.showGalacticGrid = v;\n return v;\n };\n EngineState.prototype.get_showGalacticGridText = function () {\n return this.showGalacticGridText;\n };\n EngineState.prototype.set_showGalacticGridText = function (v) {\n this.showGalacticGridText = v;\n return v;\n };\n EngineState.prototype.get_showGrid = function () {\n return this.showGrid;\n };\n EngineState.prototype.set_showGrid = function (v) {\n this.showGrid = v;\n return v;\n };\n EngineState.prototype.get_showHorizon = function () {\n return this.showHorizon;\n };\n EngineState.prototype.set_showHorizon = function (v) {\n this.showHorizon = v;\n return v;\n };\n EngineState.prototype.get_showISSModel = function () {\n return this.showISSModel;\n };\n EngineState.prototype.set_showISSModel = function (v) {\n this.showISSModel = v;\n return v;\n };\n EngineState.prototype.get_showPrecessionChart = function () {\n return this.showPrecessionChart;\n };\n EngineState.prototype.set_showPrecessionChart = function (v) {\n this.showPrecessionChart = v;\n return v;\n };\n EngineState.prototype.get_showSkyGrids = function () {\n return this.showSkyGrids;\n };\n EngineState.prototype.set_showSkyGrids = function (v) {\n this.showSkyGrids = v;\n return v;\n };\n EngineState.prototype.get_showSkyOverlays = function () {\n return this.showSkyOverlays;\n };\n EngineState.prototype.set_showSkyOverlays = function (v) {\n this.showSkyOverlays = v;\n return v;\n };\n EngineState.prototype.get_showSkyOverlaysIn3d = function () {\n return this.showSkyOverlaysIn3d;\n };\n EngineState.prototype.set_showSkyOverlaysIn3d = function (v) {\n this.showSkyOverlaysIn3d = v;\n return v;\n };\n EngineState.prototype.get_showSkyNode = function () {\n return this.showSkyNode;\n };\n EngineState.prototype.set_showSkyNode = function (v) {\n this.showSkyNode = v;\n return v;\n };\n EngineState.prototype.get_showSolarSystem = function () {\n return this.showSolarSystem;\n };\n EngineState.prototype.set_showSolarSystem = function (v) {\n this.showSolarSystem = v;\n return v;\n };\n EngineState.prototype.get_smoothPan = function () {\n return this.smoothPan;\n };\n EngineState.prototype.set_smoothPan = function (v) {\n this.smoothPan = v;\n return v;\n };\n EngineState.prototype.get_solarSystemCMB = function () {\n return this.solarSystemCMB;\n };\n EngineState.prototype.set_solarSystemCMB = function (v) {\n this.solarSystemCMB = v;\n return v;\n };\n EngineState.prototype.get_solarSystemCosmos = function () {\n return this.solarSystemCosmos;\n };\n EngineState.prototype.set_solarSystemCosmos = function (v) {\n this.solarSystemCosmos = v;\n return v;\n };\n EngineState.prototype.get_solarSystemLighting = function () {\n return this.solarSystemLighting;\n };\n EngineState.prototype.set_solarSystemLighting = function (v) {\n this.solarSystemLighting = v;\n return v;\n };\n EngineState.prototype.get_solarSystemMilkyWay = function () {\n return this.solarSystemMilkyWay;\n };\n EngineState.prototype.set_solarSystemMilkyWay = function (v) {\n this.solarSystemMilkyWay = v;\n return v;\n };\n EngineState.prototype.get_solarSystemMinorPlanets = function () {\n return this.solarSystemMinorPlanets;\n };\n EngineState.prototype.set_solarSystemMinorPlanets = function (v) {\n this.solarSystemMinorPlanets = v;\n return v;\n };\n EngineState.prototype.get_solarSystemMultiRes = function () {\n return this.solarSystemMultiRes;\n };\n EngineState.prototype.set_solarSystemMultiRes = function (v) {\n this.solarSystemMultiRes = v;\n return v;\n };\n EngineState.prototype.get_solarSystemOrbits = function () {\n return this.solarSystemOrbits;\n };\n EngineState.prototype.set_solarSystemOrbits = function (v) {\n this.solarSystemOrbits = v;\n return v;\n };\n EngineState.prototype.get_solarSystemOverlays = function () {\n return this.solarSystemOverlays;\n };\n EngineState.prototype.set_solarSystemOverlays = function (v) {\n this.solarSystemOverlays = v;\n return v;\n };\n EngineState.prototype.get_solarSystemPlanets = function () {\n return this.solarSystemPlanets;\n };\n EngineState.prototype.set_solarSystemPlanets = function (v) {\n this.solarSystemPlanets = v;\n return v;\n };\n EngineState.prototype.get_solarSystemScale = function () {\n return this.solarSystemScale;\n };\n EngineState.prototype.set_solarSystemScale = function (v) {\n this.solarSystemScale = v;\n return v;\n };\n EngineState.prototype.get_solarSystemStars = function () {\n return this.solarSystemStars;\n };\n EngineState.prototype.set_solarSystemStars = function (v) {\n this.solarSystemStars = v;\n return v;\n };\n EngineState.prototype.get_solarSystemMinorOrbits = function () {\n return this.solarSystemMinorOrbits;\n };\n EngineState.prototype.set_solarSystemMinorOrbits = function (v) {\n this.solarSystemMinorOrbits = v;\n return v;\n };\n return EngineState;\n}());\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/polyannotation.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n\nvar justPolyAnnotationSettingNames = [\n \"fill\",\n \"fillColor\",\n \"lineColor\",\n \"lineWidth\",\n];\n/** A list of the names of the available settings for `PolyAnnotation`\n * instances and their equivalents (things implementing\n * [[PolyAnnotationSettingsInterface]]).\n *\n * This is a superset of the names available for generic annotations.\n*/\nvar polyAnnotationSettingNames = annotationSettingNames.concat(justPolyAnnotationSettingNames);\nvar polyAnnotationSettingTypeInfo = {\n \"fill/boolean\": true,\n \"fillColor/string\": true,\n \"lineColor/string\": true,\n \"lineWidth/number\": true,\n};\n/** Type guard function for `PolyAnnotationSetting`. */\nfunction isPolyAnnotationSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return (key in polyAnnotationSettingTypeInfo) || isAnnotationSetting(obj);\n}\n/** Apply a setting to a generic `PolyAnnotation` or equivalent. */\nfunction applyPolyAnnotationSetting(poly, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n poly[funcName](value);\n}\n/** Extract all of the current settings of a `PolyAnnotation` or equivalent. */\nfunction extractPolyAnnotationSettings(poly) {\n var e_1, _a;\n var s = extractAnnotationSettings(poly);\n try {\n for (var justPolyAnnotationSettingNames_1 = __values(justPolyAnnotationSettingNames), justPolyAnnotationSettingNames_1_1 = justPolyAnnotationSettingNames_1.next(); !justPolyAnnotationSettingNames_1_1.done; justPolyAnnotationSettingNames_1_1 = justPolyAnnotationSettingNames_1.next()) {\n var n = justPolyAnnotationSettingNames_1_1.value;\n s.push([n, poly[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (justPolyAnnotationSettingNames_1_1 && !justPolyAnnotationSettingNames_1_1.done && (_a = justPolyAnnotationSettingNames_1.return)) _a.call(justPolyAnnotationSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `PolyAnnotation`, or equivalent, to another. */\nfunction copyPolyAnnotationSettings(source, dest) {\n var e_2, _a;\n copyAnnotationSettings(source, dest);\n try {\n for (var justPolyAnnotationSettingNames_2 = __values(justPolyAnnotationSettingNames), justPolyAnnotationSettingNames_2_1 = justPolyAnnotationSettingNames_2.next(); !justPolyAnnotationSettingNames_2_1.done; justPolyAnnotationSettingNames_2_1 = justPolyAnnotationSettingNames_2.next()) {\n var n = justPolyAnnotationSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (justPolyAnnotationSettingNames_2_1 && !justPolyAnnotationSettingNames_2_1.done && (_a = justPolyAnnotationSettingNames_2.return)) _a.call(justPolyAnnotationSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `PolyAnnotationSettingsInterface`. */\nvar polyannotation_PolyAnnotationState = /** @class */ (function (_super) {\n __extends(PolyAnnotationState, _super);\n function PolyAnnotationState(source) {\n var _this = _super.call(this, source) || this;\n copyPolyAnnotationSettings(source, _this);\n return _this;\n }\n PolyAnnotationState.prototype.get_fill = function () {\n return this.fill;\n };\n PolyAnnotationState.prototype.set_fill = function (v) {\n this.fill = v;\n return v;\n };\n PolyAnnotationState.prototype.get_fillColor = function () {\n return this.fillColor;\n };\n PolyAnnotationState.prototype.set_fillColor = function (v) {\n this.fillColor = v;\n return v;\n };\n PolyAnnotationState.prototype.get_lineColor = function () {\n return this.lineColor;\n };\n PolyAnnotationState.prototype.set_lineColor = function (v) {\n this.lineColor = v;\n return v;\n };\n PolyAnnotationState.prototype.get_lineWidth = function () {\n return this.lineWidth;\n };\n PolyAnnotationState.prototype.set_lineWidth = function (v) {\n this.lineWidth = v;\n return v;\n };\n return PolyAnnotationState;\n}(AnnotationState));\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/polylineannotation.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n\nvar justPolyLineAnnotationSettingNames = [\n \"lineColor\",\n \"lineWidth\",\n];\n/** A list of the names of the available settings for `PolyLineAnnotation`\n * instances and their equivalents (things implementing\n * [[PolyLineAnnotationSettingsInterface]]).\n *\n * This is a superset of the names available for generic annotations.\n*/\nvar polyLineAnnotationSettingNames = annotationSettingNames.concat(justPolyLineAnnotationSettingNames);\nvar polyLineAnnotationSettingTypeInfo = {\n \"lineColor/string\": true,\n \"lineWidth/number\": true,\n};\n/** Type guard function for `PolyLineAnnotationSetting`. */\nfunction isPolyLineAnnotationSetting(obj) {\n var key = obj[0] + \"/\" + typeof obj[1];\n return (key in polyLineAnnotationSettingTypeInfo) || isAnnotationSetting(obj);\n}\n/** Apply a setting to a generic `PolyLineAnnotation` or equivalent. */\nfunction applyPolyLineAnnotationSetting(poly, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1];\n poly[funcName](value);\n}\n/** Extract all of the current settings of a `PolyLineAnnotation` or equivalent. */\nfunction extractPolyLineAnnotationSettings(poly) {\n var e_1, _a;\n var s = extractAnnotationSettings(poly);\n try {\n for (var justPolyLineAnnotationSettingNames_1 = __values(justPolyLineAnnotationSettingNames), justPolyLineAnnotationSettingNames_1_1 = justPolyLineAnnotationSettingNames_1.next(); !justPolyLineAnnotationSettingNames_1_1.done; justPolyLineAnnotationSettingNames_1_1 = justPolyLineAnnotationSettingNames_1.next()) {\n var n = justPolyLineAnnotationSettingNames_1_1.value;\n s.push([n, poly[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (justPolyLineAnnotationSettingNames_1_1 && !justPolyLineAnnotationSettingNames_1_1.done && (_a = justPolyLineAnnotationSettingNames_1.return)) _a.call(justPolyLineAnnotationSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `PolyLineAnnotation`, or equivalent, to another. */\nfunction copyPolyLineAnnotationSettings(source, dest) {\n var e_2, _a;\n copyAnnotationSettings(source, dest);\n try {\n for (var justPolyLineAnnotationSettingNames_2 = __values(justPolyLineAnnotationSettingNames), justPolyLineAnnotationSettingNames_2_1 = justPolyLineAnnotationSettingNames_2.next(); !justPolyLineAnnotationSettingNames_2_1.done; justPolyLineAnnotationSettingNames_2_1 = justPolyLineAnnotationSettingNames_2.next()) {\n var n = justPolyLineAnnotationSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (justPolyLineAnnotationSettingNames_2_1 && !justPolyLineAnnotationSettingNames_2_1.done && (_a = justPolyLineAnnotationSettingNames_2.return)) _a.call(justPolyLineAnnotationSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `PolyLineAnnotationSettingsInterface`. */\nvar polylineannotation_PolyLineAnnotationState = /** @class */ (function (_super) {\n __extends(PolyLineAnnotationState, _super);\n function PolyLineAnnotationState(source) {\n var _this = _super.call(this, source) || this;\n copyPolyLineAnnotationSettings(source, _this);\n return _this;\n }\n PolyLineAnnotationState.prototype.get_lineColor = function () {\n return this.lineColor;\n };\n PolyLineAnnotationState.prototype.set_lineColor = function (v) {\n this.lineColor = v;\n return v;\n };\n PolyLineAnnotationState.prototype.get_lineWidth = function () {\n return this.lineWidth;\n };\n PolyLineAnnotationState.prototype.set_lineWidth = function (v) {\n this.lineWidth = v;\n return v;\n };\n return PolyLineAnnotationState;\n}(AnnotationState));\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/votablelayer.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/** Helpers for handling \"spreadsheet\" layer settings. */\n\n\nvar justVoTableLayerSettingNames = [\n \"altColumn\",\n \"altType\",\n \"altUnit\",\n \"autoUpdate\",\n \"beginRange\",\n \"cartesianCustomScale\",\n \"cartesianScale\",\n \"colorMapColumn\",\n \"coordinatesType\",\n \"dataSourceUrl\",\n \"decay\",\n \"dynamicData\",\n \"endDateColumn\",\n \"endRange\",\n \"hyperlinkColumn\",\n \"hyperlinkFormat\",\n \"latColumn\",\n \"lngColumn\",\n \"markerColumn\",\n \"markerIndex\",\n \"markerScale\",\n \"nameColumn\",\n \"plotType\",\n \"pointScaleType\",\n \"raUnits\",\n \"scaleFactor\",\n \"showFarSide\",\n \"sizeColumn\",\n \"startDateColumn\",\n \"timeSeries\",\n \"xAxisColumn\",\n \"xAxisReverse\",\n \"yAxisColumn\",\n \"yAxisReverse\",\n \"zAxisColumn\",\n \"zAxisReverse\",\n];\n/** A list of the names of the available settings for `VoTableLayer`\n * instances and their equivalents (things implementing\n * [[VoTableLayerSettingsInterface]]).\n *\n * This is a superset of the names available for generic layers.\n*/\nvar voTableLayerSettingNames = layerSettingNames.concat(justVoTableLayerSettingNames);\n/** Type guard function for `VoTableLayerSetting`. */\nfunction isVoTableLayerSetting(obj) {\n // No special settings specific to non-base VoTableLayerSetting.\n return isLayerSetting(obj) || isBaseVoTableLayerSetting(obj);\n}\n/** Apply a setting to a `VoTableLayer` or equivalent. */\nfunction applyVoTableLayerSetting(layer, setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1]; // eslint-disable-line @typescript-eslint/no-explicit-any\n layer[funcName](value); // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n/** Extract all of the current settings of a `VoTableLayer` or equivalent. */\nfunction extractVoTableLayerSettings(layer) {\n var e_1, _a;\n var s = extractLayerSettings(layer);\n try {\n for (var justVoTableLayerSettingNames_1 = __values(justVoTableLayerSettingNames), justVoTableLayerSettingNames_1_1 = justVoTableLayerSettingNames_1.next(); !justVoTableLayerSettingNames_1_1.done; justVoTableLayerSettingNames_1_1 = justVoTableLayerSettingNames_1.next()) {\n var n = justVoTableLayerSettingNames_1_1.value;\n s.push([n, layer[\"get_\" + n]()]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (justVoTableLayerSettingNames_1_1 && !justVoTableLayerSettingNames_1_1.done && (_a = justVoTableLayerSettingNames_1.return)) _a.call(justVoTableLayerSettingNames_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return s;\n}\n/** Copy settings from one `VoTableLayer`, or equivalent, to another. */\nfunction copyVoTableLayerSettings(source, dest) {\n var e_2, _a;\n copyLayerSettings(source, dest);\n try {\n for (var justVoTableLayerSettingNames_2 = __values(justVoTableLayerSettingNames), justVoTableLayerSettingNames_2_1 = justVoTableLayerSettingNames_2.next(); !justVoTableLayerSettingNames_2_1.done; justVoTableLayerSettingNames_2_1 = justVoTableLayerSettingNames_2.next()) {\n var n = justVoTableLayerSettingNames_2_1.value;\n dest[\"set_\" + n](source[\"get_\" + n]());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (justVoTableLayerSettingNames_2_1 && !justVoTableLayerSettingNames_2_1.done && (_a = justVoTableLayerSettingNames_2.return)) _a.call(justVoTableLayerSettingNames_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/** A plain-old-data class implementing `VoTableLayerSettingsInterface`. */\nvar votablelayer_VoTableLayerState = /** @class */ (function (_super) {\n __extends(VoTableLayerState, _super);\n function VoTableLayerState(source) {\n var _this = \n // Here we redundantly copy the generic Layer settings, but TypeScript\n // requires the super() call. Oh well.\n _super.call(this, source) || this;\n copyVoTableLayerSettings(source, _this);\n return _this;\n }\n VoTableLayerState.prototype.get_altColumn = function () {\n return this.altColumn;\n };\n VoTableLayerState.prototype.set_altColumn = function (v) {\n this.altColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_altType = function () {\n return this.altType;\n };\n VoTableLayerState.prototype.set_altType = function (v) {\n this.altType = v;\n return v;\n };\n VoTableLayerState.prototype.get_altUnit = function () {\n return this.altUnit;\n };\n VoTableLayerState.prototype.set_altUnit = function (v) {\n this.altUnit = v;\n return v;\n };\n VoTableLayerState.prototype.get_autoUpdate = function () {\n return this.autoUpdate;\n };\n VoTableLayerState.prototype.set_autoUpdate = function (v) {\n this.autoUpdate = v;\n return v;\n };\n VoTableLayerState.prototype.get_beginRange = function () {\n return this.beginRange;\n };\n VoTableLayerState.prototype.set_beginRange = function (v) {\n this.beginRange = v;\n return v;\n };\n VoTableLayerState.prototype.get_cartesianCustomScale = function () {\n return this.cartesianCustomScale;\n };\n VoTableLayerState.prototype.set_cartesianCustomScale = function (v) {\n this.cartesianCustomScale = v;\n return v;\n };\n VoTableLayerState.prototype.get_cartesianScale = function () {\n return this.cartesianScale;\n };\n VoTableLayerState.prototype.set_cartesianScale = function (v) {\n this.cartesianScale = v;\n return v;\n };\n VoTableLayerState.prototype.get_colorMapColumn = function () {\n return this.colorMapColumn;\n };\n VoTableLayerState.prototype.set_colorMapColumn = function (v) {\n this.colorMapColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_coordinatesType = function () {\n return this.coordinatesType;\n };\n VoTableLayerState.prototype.set_coordinatesType = function (v) {\n this.coordinatesType = v;\n return v;\n };\n VoTableLayerState.prototype.get_dataSourceUrl = function () {\n return this.dataSourceUrl;\n };\n VoTableLayerState.prototype.set_dataSourceUrl = function (v) {\n this.dataSourceUrl = v;\n return v;\n };\n VoTableLayerState.prototype.get_decay = function () {\n return this.decay;\n };\n VoTableLayerState.prototype.set_decay = function (v) {\n this.decay = v;\n return v;\n };\n VoTableLayerState.prototype.get_dynamicData = function () {\n return this.dynamicData;\n };\n VoTableLayerState.prototype.set_dynamicData = function (v) {\n this.dynamicData = v;\n return v;\n };\n VoTableLayerState.prototype.get_endDateColumn = function () {\n return this.endDateColumn;\n };\n VoTableLayerState.prototype.set_endDateColumn = function (v) {\n this.endDateColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_endRange = function () {\n return this.endRange;\n };\n VoTableLayerState.prototype.set_endRange = function (v) {\n this.endRange = v;\n return v;\n };\n VoTableLayerState.prototype.get_hyperlinkColumn = function () {\n return this.hyperlinkColumn;\n };\n VoTableLayerState.prototype.set_hyperlinkColumn = function (v) {\n this.hyperlinkColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_hyperlinkFormat = function () {\n return this.hyperlinkFormat;\n };\n VoTableLayerState.prototype.set_hyperlinkFormat = function (v) {\n this.hyperlinkFormat = v;\n return v;\n };\n VoTableLayerState.prototype.get_latColumn = function () {\n return this.latColumn;\n };\n VoTableLayerState.prototype.set_latColumn = function (v) {\n this.latColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_lngColumn = function () {\n return this.lngColumn;\n };\n VoTableLayerState.prototype.set_lngColumn = function (v) {\n this.lngColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_markerColumn = function () {\n return this.markerColumn;\n };\n VoTableLayerState.prototype.set_markerColumn = function (v) {\n this.markerColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_markerIndex = function () {\n return this.markerIndex;\n };\n VoTableLayerState.prototype.set_markerIndex = function (v) {\n this.markerIndex = v;\n return v;\n };\n VoTableLayerState.prototype.get_markerScale = function () {\n return this.markerScale;\n };\n VoTableLayerState.prototype.set_markerScale = function (v) {\n this.markerScale = v;\n return v;\n };\n VoTableLayerState.prototype.get_nameColumn = function () {\n return this.nameColumn;\n };\n VoTableLayerState.prototype.set_nameColumn = function (v) {\n this.nameColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_plotType = function () {\n return this.plotType;\n };\n VoTableLayerState.prototype.set_plotType = function (v) {\n this.plotType = v;\n return v;\n };\n VoTableLayerState.prototype.get_pointScaleType = function () {\n return this.pointScaleType;\n };\n VoTableLayerState.prototype.set_pointScaleType = function (v) {\n this.pointScaleType = v;\n return v;\n };\n VoTableLayerState.prototype.get_raUnits = function () {\n return this.raUnits;\n };\n VoTableLayerState.prototype.set_raUnits = function (v) {\n this.raUnits = v;\n return v;\n };\n VoTableLayerState.prototype.get_scaleFactor = function () {\n return this.scaleFactor;\n };\n VoTableLayerState.prototype.set_scaleFactor = function (v) {\n this.scaleFactor = v;\n return v;\n };\n VoTableLayerState.prototype.get_showFarSide = function () {\n return this.showFarSide;\n };\n VoTableLayerState.prototype.set_showFarSide = function (v) {\n this.showFarSide = v;\n return v;\n };\n VoTableLayerState.prototype.get_sizeColumn = function () {\n return this.sizeColumn;\n };\n VoTableLayerState.prototype.set_sizeColumn = function (v) {\n this.sizeColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_startDateColumn = function () {\n return this.startDateColumn;\n };\n VoTableLayerState.prototype.set_startDateColumn = function (v) {\n this.startDateColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_timeSeries = function () {\n return this.timeSeries;\n };\n VoTableLayerState.prototype.set_timeSeries = function (v) {\n this.timeSeries = v;\n return v;\n };\n VoTableLayerState.prototype.get_xAxisColumn = function () {\n return this.xAxisColumn;\n };\n VoTableLayerState.prototype.set_xAxisColumn = function (v) {\n this.xAxisColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_xAxisReverse = function () {\n return this.xAxisReverse;\n };\n VoTableLayerState.prototype.set_xAxisReverse = function (v) {\n this.xAxisReverse = v;\n return v;\n };\n VoTableLayerState.prototype.get_yAxisColumn = function () {\n return this.yAxisColumn;\n };\n VoTableLayerState.prototype.set_yAxisColumn = function (v) {\n this.yAxisColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_yAxisReverse = function () {\n return this.yAxisReverse;\n };\n VoTableLayerState.prototype.set_yAxisReverse = function (v) {\n this.yAxisReverse = v;\n return v;\n };\n VoTableLayerState.prototype.get_zAxisColumn = function () {\n return this.zAxisColumn;\n };\n VoTableLayerState.prototype.set_zAxisColumn = function (v) {\n this.zAxisColumn = v;\n return v;\n };\n VoTableLayerState.prototype.get_zAxisReverse = function () {\n return this.zAxisReverse;\n };\n VoTableLayerState.prototype.set_zAxisReverse = function (v) {\n this.zAxisReverse = v;\n return v;\n };\n return VoTableLayerState;\n}(LayerState));\n\n\n// CONCATENATED MODULE: ../engine-helpers/src/index.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n\n\n\n\n\n// Settings-related re-exports\n\n\n\n\n\n\n\n\n\nvar initControlDefaults = {\n elId: \"wwt\",\n startInternalRenderLoop: false,\n startLatDeg: 0,\n startLngDeg: 0,\n startZoomDeg: 360,\n startMode: \"Sky\" /* Sky */,\n};\nvar SavedPromise = /** @class */ (function () {\n function SavedPromise(payload, resolve, reject) {\n this.payload = payload;\n this.resolve = resolve;\n this.reject = reject;\n }\n return SavedPromise;\n}());\nvar src_WWTInstance = /** @class */ (function () {\n /** Create a WWT control, attaching it to a DOM element.\n *\n * @param options Options to apply to the control.\n *\n * Compared to the underlying library, this class provides a more JavaScript-y\n * API.\n */\n function WWTInstance(options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n // Ready promises\n this.readyPromises = [];\n this.readyFired = false;\n // Arrival promises\n this.arrivePromises = [];\n this.arriveSeqnum = 0;\n // Collection-loaded promises. To simplify the handling, we never load the\n // same URL more than once. Otherwise, all of the timing issues about multiple\n // requests for the same URL get gnarly to handle. And as far as the engine is\n // concerned, collection loads are idempotent.\n this.collectionLoadedPromises = [];\n this.collectionRequests = new Map();\n this.tourReadyPromises = [];\n this.tourReadySeqnum = 0;\n /** A callback to be invoked when a tour completes playing. */\n this.tourEndedCallback = null;\n var o = __assign(__assign({}, initControlDefaults), options);\n // We pretend that these objects aren't all singletons. One day.\n this.si = engine_root_wwtlib_[\"WWTControl\"].initControl6(o.elId, o.startInternalRenderLoop, o.startLatDeg, o.startLngDeg, o.startZoomDeg, o.startMode);\n this.ctl = engine_root_wwtlib_[\"WWTControl\"].singleton;\n this.lm = engine_root_wwtlib_[\"LayerManager\"];\n this.stc = engine_root_wwtlib_[\"SpaceTimeController\"];\n // Override some defaults\n this.applySetting([\"showConstellationBoundries\", false]);\n this.applySetting([\"showConstellationFigures\", false]);\n this.applySetting([\"showConstellationSelection\", false]);\n this.applySetting([\"showCrosshairs\", false]);\n // Ready promise initialization:\n this.si.add_ready(function (_si) {\n var e_1, _a;\n try {\n for (var _b = __values(_this.readyPromises), _c = _b.next(); !_c.done; _c = _b.next()) {\n var p = _c.value;\n p.resolve();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n _this.readyFired = true;\n _this.readyPromises = [];\n });\n // Arrival promise initialization:\n this.si.add_arrived(function (_si, _args) {\n var e_2, _a;\n try {\n for (var _b = __values(_this.arrivePromises), _c = _b.next(); !_c.done; _c = _b.next()) {\n var p = _c.value;\n if (p.payload < _this.arriveSeqnum) {\n p.reject(\"superseded\");\n }\n else {\n p.resolve();\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n _this.arrivePromises = [];\n });\n // TourReady promise init:\n this.si.add_tourReady(function (_si) {\n var e_3, _a;\n try {\n for (var _b = __values(_this.tourReadyPromises), _c = _b.next(); !_c.done; _c = _b.next()) {\n var p = _c.value;\n if (p.payload < _this.tourReadySeqnum) {\n p.reject(\"superseded\");\n }\n else {\n p.resolve();\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n _this.tourReadyPromises = [];\n });\n // TourEnded event init:\n engine_root_wwtlib_[\"TourPlayer\"].add_tourEnded(function (_tpclass) {\n var tp = _this.getActiveTourPlayer();\n if (tp !== null && _this.tourEndedCallback !== null) {\n _this.tourEndedCallback(tp);\n }\n });\n }\n WWTInstance.prototype.waitForReady = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n if (_this.readyFired) {\n resolve();\n }\n else {\n _this.readyPromises.push(new SavedPromise(null, resolve, reject));\n }\n })];\n });\n });\n };\n WWTInstance.prototype.makeArrivePromise = function (instantResolve) {\n var e_4, _a;\n var _this = this;\n this.arriveSeqnum += 1;\n var seq = this.arriveSeqnum;\n try {\n for (var _b = __values(this.arrivePromises), _c = _b.next(); !_c.done; _c = _b.next()) {\n var p = _c.value;\n p.reject(\"superseded\");\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_4) throw e_4.error; }\n }\n this.arrivePromises = [];\n return new Promise(function (resolve, reject) {\n if (_this.arriveSeqnum > seq) {\n reject(\"superseded\");\n }\n else if (instantResolve) {\n resolve();\n }\n else {\n _this.arrivePromises.push(new SavedPromise(seq, resolve, reject));\n }\n });\n };\n /** Navigate the camera to the specified position, asynchronously.\n *\n * This wraps the underlying engine function of the same name, but homogenizing some\n * of the angular arguments to use radians.\n *\n * @param raRad The RA to seek to, in radians\n * @param decRad The declination to seek to, in radians\n * @param zoomDeg The zoom setting, in *degrees*\n * @param instant Whether to snap the camera instantly, or pan it\n * @param rollRad If specified, the roll of the target camera position, in radians\n * @returns A void promise that resolves when the camera arrives at the target position.\n */\n WWTInstance.prototype.gotoRADecZoom = function (raRad, decRad, zoomDeg, instant, rollRad) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.ctl.gotoRADecZoom(raRad * R2H, decRad * R2D, zoomDeg, instant, rollRad);\n return [2 /*return*/, this.makeArrivePromise(instant)];\n });\n });\n };\n /** Command the view to show a Place.\n *\n * @param options The options for the goto command.\n */\n WWTInstance.prototype.gotoTarget = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.ctl.gotoTarget(options.place, options.noZoom, options.instant, options.trackObject);\n return [2 /*return*/, this.makeArrivePromise(options.instant)];\n });\n });\n };\n /** Load a WTML collection and the imagesets that it contains.\n *\n * This function triggers a download of the specified URL, which should return\n * an XML document in the [WTML collection][wtml] format. Any `ImageSet`\n * entries in the collection, or `Place` entries containing image sets, will\n * be added to the WWT instance’s list of available imagery. Subsequent calls\n * to functions like [[setForegroundImageByName]] will be able to locate the\n * new imagesets and display them to the user.\n *\n * Each unique URL is only requested once. Once a given URL has been\n * successfully loaded, the promise returned by additional calls will resolve\n * immediately. URL uniqueness is tested with simple string equality, so if\n * you really want to load the same URL more than once you could add a\n * fragment specifier.\n *\n * If the URL is not accessible due to CORS restrictions, the request will\n * automatically be routed through the WWT’s CORS proxying service.\n *\n * [wtml]: https://docs.worldwidetelescope.org/data-guide/1/data-file-formats/collections/\n *\n * @param url: The URL of the WTML collection file to load.\n * @param loadChildFolders When true, this method will recursively\n * download and unpack the content of all Folders contained in the WTML file.\n * @returns: A promise that resolves to an initialized Folder object.\n */\n WWTInstance.prototype.loadImageCollection = function (url, loadChildFolders) {\n return __awaiter(this, void 0, void 0, function () {\n var curState, holder_1;\n var _this = this;\n return __generator(this, function (_a) {\n curState = this.collectionRequests.get(url);\n // If we've already loaded the folder, insta-resolve to it.\n if (curState !== undefined && curState !== null) {\n return [2 /*return*/, Promise.resolve(curState)];\n }\n // If we haven't even issued the request, do so.\n if (curState === undefined) {\n // Mark this URL as having an in-flight request.\n this.collectionRequests.set(url, null);\n holder_1 = { f: null };\n if (loadChildFolders === undefined) {\n loadChildFolders = false;\n }\n holder_1.f = engine_root_wwtlib_[\"Wtml\"].getWtmlFile(url, function () {\n // The folder at this URL is now fully loaded.\n var f = holder_1.f;\n _this.collectionRequests.set(url, f);\n _this.collectionLoadedPromises = _this.collectionLoadedPromises.filter(function (p) {\n if (p.payload == url) {\n p.resolve(f);\n return false;\n }\n // Don't filter out promises for other URLs.\n return true;\n });\n }, loadChildFolders);\n }\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var curState = _this.collectionRequests.get(url);\n // By the time this promise callback is called, maybe the Folder has fully\n // loaded?\n if (curState !== undefined && curState !== null) {\n resolve(curState);\n }\n else {\n // If not, queue ourselves up to be resolved when the data finally come\n // through.\n _this.collectionLoadedPromises.push(new SavedPromise(url, resolve, reject));\n }\n })];\n });\n });\n };\n // Layers\n /** Load an image set or a remote FITS file into a data layer and display it.\n *\n * The FITS file must be downloaded and processed, so this API is\n * asynchronous, and is not appropriate for files that might be large.\n *\n * The image set must have previously been created with [[loadImageCollection]]\n */\n WWTInstance.prototype.addImageSetLayer = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, _reject) {\n _this.si.addImageSetLayer(options.url, options.mode, options.name, options.goto, function (layer) {\n resolve(layer);\n });\n })];\n });\n });\n };\n /** Change the ImageSetLayer position in the layer stack. */\n WWTInstance.prototype.setImageSetLayerOrder = function (options) {\n this.si.setImageSetLayerOrder(options.id, options.order);\n };\n /** Change the \"stretch\" settings of a FITS image layer. */\n WWTInstance.prototype.stretchFitsLayer = function (options) {\n var layer = this.lm.get_layerList()[options.id];\n if (layer && layer instanceof engine_root_wwtlib_[\"ImageSetLayer\"]) {\n layer.setImageScalePhysical(options.stretch, options.vmin, options.vmax);\n // This is kind of random, but follows the pywwt API implementation.\n var fits = layer.getFitsImage();\n if (fits !== null) {\n layer.get_imageSet().get_fitsProperties().transparentBlack = false;\n }\n }\n };\n /** Change the colormap settings of a FITS image layer. */\n WWTInstance.prototype.setFitsLayerColormap = function (options) {\n var layer = this.lm.get_layerList()[options.id];\n if (layer && layer instanceof engine_root_wwtlib_[\"ImageSetLayer\"]) {\n layer.set_colorMapperName(options.name);\n }\n };\n /** Apply settings to a FITS image layer. */\n WWTInstance.prototype.applyFitsLayerSettings = function (options) {\n var e_5, _a;\n var layer = this.lm.get_layerList()[options.id];\n if (layer && layer instanceof engine_root_wwtlib_[\"ImageSetLayer\"]) {\n try {\n for (var _b = __values(options.settings), _c = _b.next(); !_c.done; _c = _b.next()) {\n var setting = _c.value;\n applyImageSetLayerSetting(layer, setting);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n };\n /** Update the data within a tabular data layer. */\n WWTInstance.prototype.updateTableLayer = function (options) {\n var layer = this.lm.get_layerList()[options.id];\n if (layer && layer instanceof engine_root_wwtlib_[\"SpreadSheetLayer\"]) {\n layer.updateData(options.dataCsv, true, true, true);\n }\n };\n /** Apply settings to a tabular data layer. */\n WWTInstance.prototype.applyTableLayerSettings = function (options) {\n var e_6, _a;\n var layer = this.lm.get_layerList()[options.id];\n if (layer && layer instanceof engine_root_wwtlib_[\"SpreadSheetLayer\"]) {\n try {\n for (var _b = __values(options.settings), _c = _b.next(); !_c.done; _c = _b.next()) {\n var setting = _c.value;\n applySpreadSheetLayerSetting(layer, setting);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n };\n /** Add a new HiPS catalog to the view, by name.\n *\n * The promise will resolve when the catalog metadata have fully downloaded.\n * It will reject if the name is unrecognized.\n *\n * HiPS catalogs are something of an awkward hybrid. They are managed like\n * imagesets, but rendered like spreadsheet layers. To get the\n * `SpreadSheetLayer` associated with a HiPS catalog imageset, access:\n *\n * ```\n * imgset.get_hipsProperties().get_catalogSpreadSheetLayer()\n * ```\n *\n * You can use methods like [[applyTableLayerSettings]] to modify the settings\n * of this layer by extracting its ID string with `layer.id.toString()`.\n *\n * The contents of this catalog will update dynamically as the user navigates\n * the WWT view.\n */\n WWTInstance.prototype.addCatalogHipsByName = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var imgset = _this.ctl.getImagesetByName(options.name);\n if (imgset === null) {\n reject();\n }\n else {\n _this.ctl.renderContext.addCatalogHips(imgset, function () {\n resolve(imgset);\n });\n }\n })];\n });\n });\n };\n /** Fetch the subset of catalog HiPS data contained within the current view.\n *\n * The imageset should have been loaded with the [[addCatalogHipsByName]]\n * call. The *limit* option should almost always be true, since if it is false\n * the data-fetch operation can potentially attempt to download and return\n * gigabytes of data.\n * */\n WWTInstance.prototype.getCatalogHipsDataInView = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, _reject) {\n _this.ctl.renderContext.getCatalogHipsDataInView(options.imageset, options.limit, function (msg) {\n resolve(msg);\n });\n })];\n });\n });\n };\n // \"Mutator\" type operations -- not async.\n WWTInstance.prototype.applySetting = function (setting) {\n var funcName = \"set_\" + setting[0];\n var value = setting[1]; // eslint-disable-line @typescript-eslint/no-explicit-any\n this.si.settings[funcName](value); // eslint-disable-line @typescript-eslint/no-explicit-any\n };\n WWTInstance.prototype.setBackgroundImageByName = function (imagesetName) {\n this.ctl.setBackgroundImageByName(imagesetName);\n };\n WWTInstance.prototype.setForegroundImageByName = function (imagesetName) {\n this.ctl.setForegroundImageByName(imagesetName);\n };\n /** Set the opacity with which the foreground imageset is rendered.\n *\n * @param opacity The opacity, between 0 (invisible) and 100 (fully opaque).\n */\n WWTInstance.prototype.setForegroundOpacity = function (opacity) {\n this.si.setForegroundOpacity(opacity);\n };\n /** Set up the view to instantaneously display the specified imageset.\n *\n * This function aspires to provide a one-stop shop for configuring the engine\n * to show one arbitrary imageset. It aims to automatically choose the right,\n * or at least justifiable, values for things like the background imageset,\n * the camera position, and the zoom level.\n *\n * Because this function makes instantaneous changes, it is not appropriate\n * for interactive use. It is intended to be used as a WWT view is being\n * initialized.\n *\n * @param imageset The imageset to display.\n */\n WWTInstance.prototype.setupForImageset = function (options) {\n var bkg;\n if (options.background) {\n bkg = options.background;\n }\n else {\n bkg = this.ctl.getDefaultImageset(options.foreground.get_dataSetType(), options.foreground.get_bandPass());\n }\n var imageHeightDeg;\n if (options.foreground.get_levels() > 0) {\n // For tiled images, baseTileDegrees gives the image angular height\n // directly, modulo a factor of two uncertainty depending on how the image\n // pixel height rounds up to a power of two.\n imageHeightDeg = options.foreground.get_baseTileDegrees();\n }\n else {\n // Unfortunately, for untiled images we don't have the information needed\n // to assess the image's angular height reliably. In many cases offsetY\n // will be about half of the pixel height, but it could be anything.\n imageHeightDeg = options.foreground.get_baseTileDegrees() * options.foreground.get_offsetY() * 2;\n }\n var place = new engine_root_wwtlib_[\"Place\"]();\n place.set_type(options.foreground.get_dataSetType());\n place.set_backgroundImageset(bkg);\n place.set_studyImageset(options.foreground);\n var noZoom = false;\n switch (options.foreground.get_dataSetType()) {\n case ImageSetType.sky:\n if (imageHeightDeg == 180) {\n // All-sky image -- special behavior\n noZoom = true;\n }\n else {\n place.set_RA(options.foreground.get_centerX() * D2H);\n place.set_dec(options.foreground.get_centerY());\n place.set_zoomLevel(imageHeightDeg * 6);\n }\n break;\n case ImageSetType.earth:\n case ImageSetType.planet:\n place.set_zoomLevel(120); // a pleasing default, according to me\n if (imageHeightDeg != 180) {\n // need to verify that this is right\n place.set_lng(options.foreground.get_centerX());\n place.set_lat(options.foreground.get_centerY());\n }\n break;\n default:\n // TODO: more cases ...\n place.set_zoomLevel(360);\n break;\n }\n this.ctl.renderContext.set_backgroundImageset(bkg);\n this.ctl.gotoTarget(place, noZoom, true, // instant\n true // trackObject\n );\n };\n // Tours\n /** If the tour playback mode is active, get the active TourPlayer object. */\n WWTInstance.prototype.getActiveTourPlayer = function () {\n if (this.ctl.uiController === null)\n return null;\n if (this.ctl.uiController instanceof engine_root_wwtlib_[\"TourPlayer\"])\n return this.ctl.uiController;\n return null;\n };\n /** Find out whether a tour is playing.\n *\n * For obscure reasons, this is a static method in WWT that is not attached to\n * a TourPlayer instance. We take one as an argument for future-proofiness.\n */\n WWTInstance.prototype.getIsTourPlaying = function (_player) {\n return engine_root_wwtlib_[\"TourPlayer\"].get_playing();\n };\n /** Load a tour from a URL.\n *\n * Once the tour has loaded, you can use [[getActiveTourPlayer]] to get the\n * tour player controller and the underlying tour document.\n *\n * @param url The URL of the tour to load and play.\n * @returns A promise that resolves when the tour has loaded.\n */\n WWTInstance.prototype.loadTour = function (url) {\n return __awaiter(this, void 0, void 0, function () {\n var seq, _a, _b, p;\n var e_7, _c;\n var _this = this;\n return __generator(this, function (_d) {\n this.ctl.loadTour(url);\n this.tourReadySeqnum += 1;\n seq = this.tourReadySeqnum;\n try {\n for (_a = __values(this.tourReadyPromises), _b = _a.next(); !_b.done; _b = _a.next()) {\n p = _b.value;\n p.reject(\"superseded\");\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_7) throw e_7.error; }\n }\n this.tourReadyPromises = [];\n return [2 /*return*/, new Promise(function (resolve, reject) {\n if (_this.tourReadySeqnum > seq) {\n reject(\"superseded\");\n }\n else {\n _this.tourReadyPromises.push(new SavedPromise(seq, resolve, reject));\n }\n })];\n });\n });\n };\n /** Load a tour from a URL and start playing it.\n *\n * @param url The URL of the tour to load and play.\n * @returns A promise that resolves when the tour has loaded and started\n * playing.\n */\n WWTInstance.prototype.loadAndPlayTour = function (url) {\n return __awaiter(this, void 0, void 0, function () {\n var seq, _a, _b, p;\n var e_8, _c;\n var _this = this;\n return __generator(this, function (_d) {\n this.ctl.playTour(url);\n this.tourReadySeqnum += 1;\n seq = this.tourReadySeqnum;\n try {\n for (_a = __values(this.tourReadyPromises), _b = _a.next(); !_b.done; _b = _a.next()) {\n p = _b.value;\n p.reject(\"superseded\");\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_8) throw e_8.error; }\n }\n this.tourReadyPromises = [];\n return [2 /*return*/, new Promise(function (resolve, reject) {\n if (_this.tourReadySeqnum > seq) {\n reject(\"superseded\");\n }\n else {\n _this.tourReadyPromises.push(new SavedPromise(seq, resolve, reject));\n }\n })];\n });\n });\n };\n /** Find out how far we have progressed into the tour, in seconds.\n *\n * This number does not necessarily progress monotonically due to the way that\n * WWT measures tour playback progress. We associate a start time with each\n * \"stop\" in the tour, and can measure progress through a stop, but stops do\n * not necessarily transition from one to another in linear fashion.\n *\n * That being said, this number should range between 0 and the runtime of the\n * current tour. If no tour is loaded, it will be zero.\n */\n WWTInstance.prototype.getEffectiveTourTimecode = function () {\n var player = this.getActiveTourPlayer();\n if (player === null)\n return 0.0;\n var tour = player.get_tour();\n if (tour === null)\n return 0.0;\n var idx = tour.get_currentTourstopIndex();\n if (idx < 0)\n return 0.0;\n var base = tour.elapsedTimeTillTourstop(idx);\n var stop = tour.get_tourStops()[idx];\n var delta = stop.get_tweenPosition() * stop.get_duration() * 0.001; // ms => s\n var value = base + delta;\n // It's possible for our math to yield a value slightly larger than the\n // nominal tour runtime, which can upset code that expects the value to stay\n // rigorously within that bound. So, clamp it to be sure.\n if (value < 0)\n return 0.0;\n var runTime = tour.get_runTime() * 0.001; // ms => s\n if (value > runTime)\n return runTime;\n return value;\n };\n /** \"Seek\" tour playback to approximately the specified timecode (in seconds).\n *\n * The tour will start playing back.\n *\n * This operation is approximate because WWT can only resume playback from the\n * beginning of a \"tour stop\". So, if the desired timecode is in the middle of\n * such a stop, playback will start there, not at the exact value that was\n * commanded. This can be a little annoying when a slide is long.\n *\n * If no tour or tour player is active, nothing happens.\n */\n WWTInstance.prototype.seekToTourTimecode = function (value) {\n var player = this.getActiveTourPlayer();\n if (player === null)\n return;\n var tour = player.get_tour();\n if (tour === null)\n return;\n // Figure out the stop index that best matches the specified timecode.\n var stops = tour.get_tourStops();\n var index = stops.length - 1;\n for (var i = 0; i < stops.length; i++) {\n var tStart = tour.elapsedTimeTillTourstop(i);\n if (tStart >= value) {\n index = i - 1;\n break;\n }\n }\n if (index < 0) {\n index = 0;\n }\n // Apply the change.\n player.playFromTourstop(stops[index]);\n };\n return WWTInstance;\n}());\n\n\n// CONCATENATED MODULE: ./src/store.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n// The high-level docs in `wwtaware.ts` contain the developer-friendly\n// descriptions of pretty much everything in this file. Update those docs when\n// adding new features here.\n\n\n\n\n\n\nvar store_WWTGlobalState = /** @class */ (function () {\n function WWTGlobalState() {\n this.inst = null;\n this.onLinkedCallbacks = [];\n }\n WWTGlobalState.prototype.link = function (inst) {\n var e_1, _a;\n if (this.inst !== null)\n throw new Error(\"must unlink WWT Vuex global state before relinking\");\n this.inst = inst;\n try {\n for (var _b = __values(this.onLinkedCallbacks), _c = _b.next(); !_c.done; _c = _b.next()) {\n var cb = _c.value;\n cb();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.onLinkedCallbacks = [];\n };\n WWTGlobalState.prototype.unlink = function () {\n this.inst = null;\n };\n return WWTGlobalState;\n}());\n\n/** This class holds basic information about an imageset.\n *\n * Discover imagesets through the [[WWTAwareComponent.wwtAvailableImagesets]]\n * state variable. In standard practice there will be hundreds of available\n * imagesets of many different kinds.\n *\n * Imagesets may be uniquely identified by their associated image data [[url]].\n * (If you really need to have multiple imagesets associated with the same URL,\n * add a `#fragment` to the end.)\n */\nvar ImagesetInfo = /** @class */ (function () {\n function ImagesetInfo(url, name, type, description, extension, id) {\n if (id === void 0) { id = null; }\n this.url = url;\n this.name = name;\n this.type = type;\n this.description = description;\n this.extension = extension;\n this.id = id;\n }\n ImagesetInfo.fromImageset = function (imageset) {\n var _a, _b;\n return new ImagesetInfo(imageset.get_url(), imageset.get_name(), imageset.get_dataSetType(), imageset.get_creditsText(), imageset.get_extension(), (_b = (_a = imageset.get_hipsProperties()) === null || _a === void 0 ? void 0 : _a.get_catalogSpreadSheetLayer().id.toString()) !== null && _b !== void 0 ? _b : null);\n };\n return ImagesetInfo;\n}());\n\nvar SpreadSheetLayerInfo = /** @class */ (function () {\n function SpreadSheetLayerInfo(id, referenceFrame, name) {\n this.id = id;\n this.referenceFrame = referenceFrame;\n this.name = name !== null && name !== void 0 ? name : id;\n }\n SpreadSheetLayerInfo.prototype.setName = function (name) {\n this.name = name;\n };\n return SpreadSheetLayerInfo;\n}());\n\n/** Information about an active imageset layer. */\nvar store_ImageSetLayerState = /** @class */ (function () {\n function ImageSetLayerState(source) {\n this.guidText = source.id.toString();\n this.settings = new imagesetlayer_ImageSetLayerState(source);\n var fits = source.get_imageSet().get_fitsProperties();\n this.scaleType = fits.scaleType;\n this.vmin = fits.lowerCut;\n this.vmax = fits.upperCut;\n this.colormapName = fits.colorMapName;\n }\n ImageSetLayerState.prototype.getGuid = function () {\n return this.guidText;\n };\n return ImageSetLayerState;\n}());\n\n/** This function creates the list of currently active layers.\n * Keeping this functionality outside of the store allows us to use it from\n * inside either an action or a mutation.\n */\nfunction activeLayersList() {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get activeLayersList without linking to WWTInstance');\n var layers = [];\n function accum(lm) {\n var e_2, _a, e_3, _b;\n try {\n for (var _c = __values(lm.layers), _d = _c.next(); !_d.done; _d = _c.next()) {\n var layer = _d.value;\n layers.push(layer.id.toString());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var _e = __values(Object.entries(lm.childMaps)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var _g = __read(_f.value, 2), _mapname = _g[0], sublm = _g[1];\n accum(sublm);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n var rootlm = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.lm.get_allMaps()[external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.getCurrentReferenceFrame()];\n if (rootlm) {\n accum(rootlm);\n }\n return layers;\n}\n/** This function creates the list of currently available imagesets.\n * Keeping this functionality outside of the store allows us to use it from\n * inside either an action or a mutation.\n */\nfunction availableImagesets() {\n return engine_root_wwtlib_[\"WWTControl\"].getImageSets().map(ImagesetInfo.fromImageset);\n}\n/** This function get a SpreadSheetLayer by the key used to store it in the engine.\n * For regular table layers this is the layer ID; for HiPS catalogs it is the layer name.\n * Keeping this functionality outside of the store allows us to use it from\n * inside either an action or a mutation.\n */\nfunction spreadSheetLayerByKey(key) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get spreadSheetLayerByKey without linking to WWTInstance');\n var layer = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.lm.get_layerList()[key];\n if (layer !== null && layer instanceof engine_root_wwtlib_[\"SpreadSheetLayer\"]) {\n return layer;\n }\n else {\n return null;\n }\n}\nfunction catalogLayerKey(catalog) {\n var _a;\n return (_a = catalog.id) !== null && _a !== void 0 ? _a : \"\";\n}\n/** The store module class for the WWT Vuex implementation.\n *\n * See [[WWTAwareComponent]] for an organized overview of the state variables,\n * getters, actions, and mutations exposed by this module.\n */\nvar store_WWTEngineVuexModule = /** @class */ (function (_super) {\n __extends(WWTEngineVuexModule, _super);\n function WWTEngineVuexModule() {\n // NOTE: We were orginally alphabetizing these all, but now I think it will be\n // better to group topically related fields.\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.availableImagesets = [];\n _this.backgroundImageset = null;\n _this.clockDiscontinuities = 0;\n _this.clockRate = 1.0;\n _this.currentTime = new Date();\n _this.decRad = 0.0;\n _this.foregroundImageset = null;\n _this.foregroundOpacity = 100;\n _this.isTourPlayerActive = false;\n _this.isTourPlaying = false;\n _this.raRad = 0.0;\n _this.renderType = ImageSetType.sky;\n _this.rollRad = 0;\n _this.timeAtStartup = Date.now();\n _this.tourCompletions = 0;\n _this.tourRunTime = null;\n _this.tourStopStartTimes = [];\n _this.tourTimecode = 0.0;\n _this.showWebGl2Warning = false;\n _this.zoomDeg = 0.0;\n // General layers\n _this.activeLayers = [];\n // Imageset layers, including FITS layers\n _this.imagesetLayers = {};\n // Spreadsheet layers\n _this.spreadSheetLayers = {};\n return _this;\n }\n Object.defineProperty(WWTEngineVuexModule.prototype, \"lookupImageset\", {\n get: function () {\n // This is how you create a parametrized getter in vuex-module-decorators:\n return function (imagesetName) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot lookupImageset without linking to WWTInstance');\n return external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.getImagesetByName(imagesetName);\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"findRADecForScreenPoint\", {\n get: function () {\n return function (pt) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot findRADecForScreenPoint without linking to WWTInstance');\n var coords = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.getCoordinatesForScreenPoint(pt.x, pt.y);\n return { ra: (15 * coords.x + 720) % 360, dec: coords.y };\n };\n },\n enumerable: false,\n configurable: true\n });\n WWTEngineVuexModule.prototype.internalLinkToInstance = function (wwt) {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.link(wwt);\n };\n WWTEngineVuexModule.prototype.internalUnlinkFromInstance = function () {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.unlink();\n };\n WWTEngineVuexModule.prototype.internalUpdate = function () {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot internalUpdate without linking to WWTInstance');\n var wwt = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst;\n var raRad = wwt.si.getRA() * H2R;\n if (this.raRad != raRad)\n this.raRad = raRad;\n var decRad = wwt.si.getDec() * D2R;\n if (this.decRad != decRad)\n this.decRad = decRad;\n var zoomDeg = wwt.ctl.renderContext.viewCamera.zoom;\n if (this.zoomDeg != zoomDeg)\n this.zoomDeg = zoomDeg;\n var rollRad = wwt.ctl.renderContext.viewCamera.rotation;\n if (this.rollRad != rollRad)\n this.rollRad = rollRad;\n var bg = wwt.ctl.renderContext.get_backgroundImageset() || null; // TEMP\n if (this.backgroundImageset != bg)\n this.backgroundImageset = bg;\n var time = wwt.stc.get_now();\n if (this.currentTime != time)\n this.currentTime = time;\n var fg = wwt.ctl.renderContext.get_foregroundImageset() || null; // TEMP\n if (this.foregroundImageset != fg)\n this.foregroundImageset = fg;\n if (this.foregroundOpacity != wwt.ctl.renderContext.viewCamera.opacity)\n this.foregroundOpacity = wwt.ctl.renderContext.viewCamera.opacity;\n if (this.renderType != wwt.ctl.renderType)\n this.renderType = wwt.ctl.renderType;\n var player = wwt.getActiveTourPlayer();\n this.tourTimecode = wwt.getEffectiveTourTimecode();\n if (player !== null) {\n this.isTourPlayerActive = true;\n this.isTourPlaying = wwt.getIsTourPlaying(player);\n }\n else {\n this.isTourPlayerActive = false;\n this.isTourPlaying = false;\n }\n var showWebGl2Warning = !wwt.si.isUsingWebGl2()\n && (Date.now() - this.timeAtStartup) < 15000;\n if (this.showWebGl2Warning != showWebGl2Warning) {\n this.showWebGl2Warning = showWebGl2Warning;\n }\n };\n WWTEngineVuexModule.prototype.internalIncrementTourCompletions = function () {\n this.tourCompletions += 1;\n };\n WWTEngineVuexModule.prototype.applySetting = function (setting) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot applySetting without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.applySetting(setting);\n };\n WWTEngineVuexModule.prototype.setBackgroundImageByName = function (imagesetName) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setBackgroundImageByName without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.setBackgroundImageByName(imagesetName);\n };\n WWTEngineVuexModule.prototype.setForegroundImageByName = function (imagesetName) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setForegroundImageByName without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.setForegroundImageByName(imagesetName);\n };\n WWTEngineVuexModule.prototype.setForegroundOpacity = function (opacity) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setForegroundOpacity without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.setForegroundOpacity(opacity);\n this.foregroundOpacity = opacity;\n };\n WWTEngineVuexModule.prototype.setupForImageset = function (options) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setupForImageset without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.setupForImageset(options);\n };\n WWTEngineVuexModule.prototype.zoom = function (factor) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot zoom without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.zoom(factor);\n };\n WWTEngineVuexModule.prototype.move = function (args) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot move without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.move(args.x, args.y);\n };\n WWTEngineVuexModule.prototype.tilt = function (args) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot tilt without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl._tilt(args.x, args.y);\n };\n WWTEngineVuexModule.prototype.setTime = function (time) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setTime without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stc.set_now(time);\n this.clockDiscontinuities += 1;\n };\n WWTEngineVuexModule.prototype.setClockRate = function (rate) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setClockRate without linking to WWTInstance');\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stc.get_timeRate() != rate) {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stc.set_timeRate(rate);\n this.clockRate = rate;\n this.clockDiscontinuities += 1;\n }\n };\n WWTEngineVuexModule.prototype.setClockSync = function (isSynced) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setClockSync without linking to WWTInstance');\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stc.get_syncToClock() != isSynced) {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stc.set_syncToClock(isSynced);\n if (isSynced) {\n this.clockRate = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stc.get_timeRate();\n }\n else {\n this.clockRate = 0;\n }\n this.clockDiscontinuities += 1;\n }\n };\n WWTEngineVuexModule.prototype.startTour = function () {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot start tour without linking to WWTInstance');\n var player = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.getActiveTourPlayer();\n if (player === null)\n throw new Error('no tour to start');\n player.play();\n };\n WWTEngineVuexModule.prototype.toggleTourPlayPauseState = function () {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot play/pause tour without linking to WWTInstance');\n var player = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.getActiveTourPlayer();\n if (player === null)\n throw new Error('no tour to play/pause');\n // Despite the unclear name, this function does toggle play/pause state.\n player.pauseTour();\n };\n WWTEngineVuexModule.prototype.setTourPlayerLeaveSettingsWhenStopped = function (value) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setTourPlayerLeaveSettingsWhenStopped without linking to WWTInstance');\n var player = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.getActiveTourPlayer();\n if (player === null)\n throw new Error('no tour player to control');\n player.set_leaveSettingsWhenStopped(value);\n };\n WWTEngineVuexModule.prototype.seekToTourTimecode = function (value) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot seekToTourTimecode without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.seekToTourTimecode(value);\n };\n WWTEngineVuexModule.prototype.waitForReady = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst !== null) {\n return [2 /*return*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.waitForReady()];\n }\n else {\n return [2 /*return*/, new Promise(function (resolve, _reject) {\n var waitThenResolve = function () {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.waitForReady().then(resolve);\n };\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst !== null) {\n waitThenResolve();\n }\n else {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.onLinkedCallbacks.push(waitThenResolve);\n }\n })];\n }\n return [2 /*return*/];\n });\n });\n };\n WWTEngineVuexModule.prototype.gotoRADecZoom = function (_a) {\n var raRad = _a.raRad, decRad = _a.decRad, zoomDeg = _a.zoomDeg, instant = _a.instant, rollRad = _a.rollRad;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot gotoRADecZoom without linking to WWTInstance');\n return [2 /*return*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.gotoRADecZoom(raRad, decRad, zoomDeg, instant, rollRad)];\n });\n });\n };\n WWTEngineVuexModule.prototype.gotoTarget = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot gotoTarget without linking to WWTInstance');\n return [2 /*return*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.gotoTarget(options)];\n });\n });\n };\n WWTEngineVuexModule.prototype.setTrackedObject = function (obj) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setTrackedObject without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.renderContext.set_solarSystemTrack(obj);\n };\n WWTEngineVuexModule.prototype.loadTour = function (_a) {\n var url = _a.url, play = _a.play;\n return __awaiter(this, void 0, void 0, function () {\n var tourRunTime, tourStopStartTimes, player, tour, nStops, i;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot loadTour without linking to WWTInstance');\n if (!play) return [3 /*break*/, 2];\n return [4 /*yield*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.loadAndPlayTour(url)];\n case 1:\n _b.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.loadTour(url)];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n tourRunTime = null;\n tourStopStartTimes = [];\n player = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.getActiveTourPlayer();\n if (player !== null) {\n tour = player.get_tour();\n if (tour !== null) {\n tourRunTime = tour.get_runTime() * 0.001; // ms => s\n nStops = tour.get_tourStops().length;\n for (i = 0; i < nStops; i++) {\n tourStopStartTimes.push(tour.elapsedTimeTillTourstop(i));\n }\n }\n }\n return [2 /*return*/, { tourRunTime: tourRunTime, tourStopStartTimes: tourStopStartTimes }];\n }\n });\n });\n };\n WWTEngineVuexModule.prototype.updateAvailableImagesets = function () {\n this.availableImagesets = availableImagesets();\n };\n WWTEngineVuexModule.prototype.loadImageCollection = function (_a) {\n var url = _a.url, loadChildFolders = _a.loadChildFolders;\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot loadImageCollection without linking to WWTInstance');\n return [4 /*yield*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.loadImageCollection(url, loadChildFolders)];\n case 1:\n result = _b.sent();\n this.context.state.availableImagesets = availableImagesets();\n return [2 /*return*/, result];\n }\n });\n });\n };\n WWTEngineVuexModule.prototype.deleteLayer = function (id) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot deleteLayer without linking to WWTInstance');\n var stringId = \"\";\n if (typeof id === \"string\") {\n stringId = id;\n var guid = engine_root_wwtlib_[\"Guid\"].fromString(id);\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.lm.deleteLayerByID(guid, true, true);\n }\n else {\n stringId = id.toString();\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.lm.deleteLayerByID(id, true, true);\n }\n // Mirror modification in the reactive system. Here we just\n // delete willy-nilly and ignore any missing cases.\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.delete(this.imagesetLayers, stringId);\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.delete(this.spreadSheetLayers, stringId);\n this.activeLayers = activeLayersList();\n };\n Object.defineProperty(WWTEngineVuexModule.prototype, \"imagesetStateForLayer\", {\n get: function () {\n var _this = this;\n return function (guidtext) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get imagesetStateForLayer without linking to WWTInstance');\n return _this.imagesetLayers[guidtext] || null;\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"imagesetForLayer\", {\n get: function () {\n return function (guidtext) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get imagesetForLayer without linking to WWTInstance');\n var layer = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.lm.get_layerList()[guidtext];\n if (layer !== null && layer instanceof engine_root_wwtlib_[\"ImageSetLayer\"]) {\n return layer.get_imageSet();\n }\n else {\n return null;\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"activeImagesetLayerStates\", {\n get: function () {\n var e_4, _a;\n var states = [];\n try {\n for (var _b = __values(this.activeLayers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var guid = _c.value;\n var state = this.imagesetLayers[guid];\n if (state) {\n states.push(state);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return states;\n },\n enumerable: false,\n configurable: true\n });\n WWTEngineVuexModule.prototype.viewAsTourXml = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n var editor, tour, blob, reader, tourXml;\n return __generator(this, function (_a) {\n engine_root_wwtlib_[\"WWTControl\"].singleton.createTour(name || \"\");\n editor = engine_root_wwtlib_[\"WWTControl\"].singleton.tourEdit;\n editor.addSlide(false);\n tour = editor.get_tour();\n if (tour === null) {\n return [2 /*return*/, new Promise(function (resolve, _reject) { return resolve(null); })];\n }\n blob = tour.saveToBlob();\n reader = new FileReader();\n reader.readAsText(blob);\n tourXml = \"\";\n return [2 /*return*/, new Promise(function (resolve, _reject) {\n reader.onloadend = function () {\n tourXml += reader.result;\n resolve(tourXml);\n };\n })];\n });\n });\n };\n WWTEngineVuexModule.prototype.addImageSetLayer = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var wwtLayer, guidText;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot addImageSetLayer without linking to WWTInstance');\n return [4 /*yield*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.addImageSetLayer(options)];\n case 1:\n wwtLayer = _a.sent();\n guidText = wwtLayer.id.toString();\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.set(this.imagesetLayers, guidText, new store_ImageSetLayerState(wwtLayer));\n this.context.state.activeLayers = activeLayersList();\n return [2 /*return*/, wwtLayer];\n }\n });\n });\n };\n // deprecated, but maintained for compatibility:\n WWTEngineVuexModule.prototype.loadFitsLayer = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var addImageSetLayerOptions;\n return __generator(this, function (_a) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot loadFitsLayer without linking to WWTInstance');\n addImageSetLayerOptions = {\n url: options.url,\n mode: \"fits\",\n name: options.name,\n goto: options.gotoTarget\n };\n return [2 /*return*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.addImageSetLayer(addImageSetLayerOptions)];\n });\n });\n };\n WWTEngineVuexModule.prototype.setImageSetLayerOrder = function (options) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setImageSetLayerOrder without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.setImageSetLayerOrder(options);\n this.activeLayers = activeLayersList();\n };\n WWTEngineVuexModule.prototype.stretchFitsLayer = function (options) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot stretchFitsLayer without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.stretchFitsLayer(options);\n // Update the reactive mirror.\n var state = this.imagesetLayers[options.id];\n if (state) {\n state.scaleType = options.stretch;\n state.vmin = options.vmin;\n state.vmax = options.vmax;\n }\n };\n WWTEngineVuexModule.prototype.setFitsLayerColormap = function (options) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot setFitsLayerColormap without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.setFitsLayerColormap(options);\n // Update the reactive mirror.\n var state = this.imagesetLayers[options.id];\n if (state) {\n state.colormapName = options.name;\n }\n };\n WWTEngineVuexModule.prototype.applyFitsLayerSettings = function (options) {\n var e_5, _a;\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot applyFitsLayerSettings without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.applyFitsLayerSettings(options);\n // Update the reactive mirror.\n var state = this.imagesetLayers[options.id];\n if (state) {\n try {\n for (var _b = __values(options.settings), _c = _b.next(); !_c.done; _c = _b.next()) {\n var s = _c.value;\n applyImageSetLayerSetting(state.settings, s);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_5) throw e_5.error; }\n }\n }\n };\n WWTEngineVuexModule.prototype.createTableLayer = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var layer, prom, wwtLayer, guidText;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot createTableLayer without linking to WWTInstance');\n layer = external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.lm.createSpreadsheetLayer(options.referenceFrame, options.name, options.dataCsv);\n // Value-add init copied from the pywwt JS component.\n // Override any column guesses:\n layer.set_lngColumn(-1);\n layer.set_latColumn(-1);\n layer.set_altColumn(-1);\n layer.set_sizeColumn(-1);\n layer.set_colorMapColumn(-1);\n layer.set_startDateColumn(-1);\n layer.set_endDateColumn(-1);\n layer.set_xAxisColumn(-1);\n layer.set_yAxisColumn(-1);\n layer.set_zAxisColumn(-1);\n layer.set_altUnit(AltUnits.meters);\n layer.set_referenceFrame(options.referenceFrame);\n if (options.referenceFrame == 'Sky') {\n layer.set_astronomical(true);\n }\n prom = new Promise(function (resolve, _reject) { return resolve(layer); });\n return [4 /*yield*/, prom];\n case 1:\n wwtLayer = _a.sent();\n guidText = wwtLayer.id.toString();\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.set(this.spreadSheetLayers, guidText, new spreadsheetlayer_SpreadSheetLayerState(wwtLayer));\n this.context.state.activeLayers = activeLayersList();\n return [2 /*return*/, wwtLayer];\n }\n });\n });\n };\n WWTEngineVuexModule.prototype.applyTableLayerSettings = function (options) {\n var e_6, _a;\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot applyTableLayerSettings without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.applyTableLayerSettings(options);\n // Mirror changes in the reactive framework.\n var state = this.spreadSheetLayers[options.id];\n if (state !== undefined) {\n try {\n for (var _b = __values(options.settings), _c = _b.next(); !_c.done; _c = _b.next()) {\n var s = _c.value;\n applySpreadSheetLayerSetting(state, s);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n };\n WWTEngineVuexModule.prototype.updateTableLayer = function (options) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot updateTableLayer without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.updateTableLayer(options);\n // Nothing to mirror in reactive-land -- this call affects the table data.\n };\n Object.defineProperty(WWTEngineVuexModule.prototype, \"layerForHipsCatalog\", {\n // Progressive HiPS catalogs.\n //\n // These have some characteristics of imagesets, and some characteristics\n // of spreadsheet layers.\n get: function () {\n return function (name) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get layerForHipsCatalog without linking to WWTInstance');\n var id = engine_root_wwtlib_[\"Guid\"].createFrom(name).toString();\n return spreadSheetLayerByKey(id);\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"spreadsheetStateForHipsCatalog\", {\n get: function () {\n var _this = this;\n return function (name) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get spreadsheetStateForHipsCatalog without linking to WWTInstance');\n var id = engine_root_wwtlib_[\"Guid\"].createFrom(name).toString();\n return _this.spreadSheetLayers[id] || null;\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"spreadSheetLayerById\", {\n get: function () {\n return function (id) {\n return spreadSheetLayerByKey(id);\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"spreadsheetStateById\", {\n get: function () {\n var _this = this;\n return function (id) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get spreadsheetStateById without linking to WWTInstance');\n return _this.spreadSheetLayers[id] || null;\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"spreadSheetLayer\", {\n get: function () {\n return function (catalog) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get spreadSheetLayer without linking to WWTInstance');\n var key = catalogLayerKey(catalog);\n return spreadSheetLayerByKey(key);\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WWTEngineVuexModule.prototype, \"spreadsheetState\", {\n get: function () {\n var _this = this;\n return function (catalog) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot get spreadsheetState without linking to WWTInstance');\n var key = catalogLayerKey(catalog);\n return _this.spreadSheetLayers[key] || null;\n };\n },\n enumerable: false,\n configurable: true\n });\n WWTEngineVuexModule.prototype.addCatalogHipsByName = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var imgset, hips, wwtLayer, guidText, info;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst == null)\n throw new Error('cannot addCatalogHipsByName without linking to WWTInstance');\n return [4 /*yield*/, external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.addCatalogHipsByName(options)];\n case 1:\n imgset = _a.sent();\n hips = imgset.get_hipsProperties();\n if (hips !== null) {\n wwtLayer = hips.get_catalogSpreadSheetLayer();\n guidText = wwtLayer.id.toString();\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.set(this.spreadSheetLayers, guidText, new spreadsheetlayer_SpreadSheetLayerState(wwtLayer));\n info = availableImagesets().find(function (x) { return x.name === options.name; });\n if (info !== undefined) {\n info.id = guidText;\n }\n }\n this.context.state.activeLayers = activeLayersList();\n return [2 /*return*/, imgset];\n }\n });\n });\n };\n WWTEngineVuexModule.prototype.getCatalogHipsDataInView = function (options) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst == null)\n throw new Error('cannot getCatalogHipsDataInView without linking to WWTInstance');\n return external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.getCatalogHipsDataInView(options);\n };\n WWTEngineVuexModule.prototype.removeCatalogHipsByName = function (name) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst == null)\n throw new Error('cannot removeCatalogHipsByName without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.ctl.removeCatalogHipsByName(name);\n // Un-mirror the spreadsheet layer aspect from the reactivity system. Here\n // we leverage the quasi-hack that the GUID of the spreadsheet layer is set\n // to the HiPS dataset name (which is most assuredly not in UUIDv4 format).\n var id = engine_root_wwtlib_[\"Guid\"].createFrom(name).toString();\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.delete(this.spreadSheetLayers, id);\n this.activeLayers = activeLayersList();\n };\n // Annotations\n WWTEngineVuexModule.prototype.addAnnotation = function (ann) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot addAnnotation without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.si.addAnnotation(ann);\n };\n WWTEngineVuexModule.prototype.removeAnnotation = function (ann) {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot removeAnnotation without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.si.removeAnnotation(ann);\n };\n WWTEngineVuexModule.prototype.clearAnnotations = function () {\n if (external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst === null)\n throw new Error('cannot clearAnnotations without linking to WWTInstance');\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.$wwt.inst.si.clearAnnotations();\n };\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"internalLinkToInstance\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"internalUnlinkFromInstance\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"internalUpdate\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"internalIncrementTourCompletions\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"applySetting\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setBackgroundImageByName\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setForegroundImageByName\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setForegroundOpacity\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setupForImageset\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"zoom\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"move\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"tilt\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setTime\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setClockRate\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setClockSync\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"startTour\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"toggleTourPlayPauseState\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setTourPlayerLeaveSettingsWhenStopped\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"seekToTourTimecode\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"waitForReady\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"gotoRADecZoom\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"gotoTarget\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setTrackedObject\", null);\n __decorate([\n MutationAction\n ], WWTEngineVuexModule.prototype, \"loadTour\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"updateAvailableImagesets\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"loadImageCollection\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"deleteLayer\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"viewAsTourXml\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"addImageSetLayer\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"loadFitsLayer\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setImageSetLayerOrder\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"stretchFitsLayer\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"setFitsLayerColormap\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"applyFitsLayerSettings\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"createTableLayer\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"applyTableLayerSettings\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"updateTableLayer\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"addCatalogHipsByName\", null);\n __decorate([\n Action({ rawError: true })\n ], WWTEngineVuexModule.prototype, \"getCatalogHipsDataInView\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"removeCatalogHipsByName\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"addAnnotation\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"removeAnnotation\", null);\n __decorate([\n Mutation\n ], WWTEngineVuexModule.prototype, \"clearAnnotations\", null);\n WWTEngineVuexModule = __decorate([\n Module({\n namespaced: true,\n stateFactory: true,\n })\n ], WWTEngineVuexModule);\n return WWTEngineVuexModule;\n}(VuexModule));\n\n\n// CONCATENATED MODULE: ../node_modules/vue-class-component/dist/vue-class-component.esm.js\n/**\n * vue-class-component v7.2.6\n * (c) 2015-present Evan You\n * @license MIT\n */\n\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n// The rational behind the verbose Reflect-feature check below is the fact that there are polyfills\n// which add an implementation for Reflect.defineMetadata but not for Reflect.getOwnMetadataKeys.\n// Without this check consumers will encounter hard to track down runtime errors.\nfunction reflectionIsSupported() {\n return typeof Reflect !== 'undefined' && Reflect.defineMetadata && Reflect.getOwnMetadataKeys;\n}\nfunction copyReflectionMetadata(to, from) {\n forwardMetadata(to, from);\n Object.getOwnPropertyNames(from.prototype).forEach(function (key) {\n forwardMetadata(to.prototype, from.prototype, key);\n });\n Object.getOwnPropertyNames(from).forEach(function (key) {\n forwardMetadata(to, from, key);\n });\n}\n\nfunction forwardMetadata(to, from, propertyKey) {\n var metaKeys = propertyKey ? Reflect.getOwnMetadataKeys(from, propertyKey) : Reflect.getOwnMetadataKeys(from);\n metaKeys.forEach(function (metaKey) {\n var metadata = propertyKey ? Reflect.getOwnMetadata(metaKey, from, propertyKey) : Reflect.getOwnMetadata(metaKey, from);\n\n if (propertyKey) {\n Reflect.defineMetadata(metaKey, metadata, to, propertyKey);\n } else {\n Reflect.defineMetadata(metaKey, metadata, to);\n }\n });\n}\n\nvar fakeArray = {\n __proto__: []\n};\nvar hasProto = fakeArray instanceof Array;\nfunction createDecorator(factory) {\n return function (target, key, index) {\n var Ctor = typeof target === 'function' ? target : target.constructor;\n\n if (!Ctor.__decorators__) {\n Ctor.__decorators__ = [];\n }\n\n if (typeof index !== 'number') {\n index = undefined;\n }\n\n Ctor.__decorators__.push(function (options) {\n return factory(options, key, index);\n });\n };\n}\nfunction mixins() {\n for (var _len = arguments.length, Ctors = new Array(_len), _key = 0; _key < _len; _key++) {\n Ctors[_key] = arguments[_key];\n }\n\n return external_commonjs_vue_commonjs2_vue_root_Vue_default.a.extend({\n mixins: Ctors\n });\n}\nfunction isPrimitive(value) {\n var type = _typeof(value);\n\n return value == null || type !== 'object' && type !== 'function';\n}\nfunction warn(message) {\n if (typeof console !== 'undefined') {\n console.warn('[vue-class-component] ' + message);\n }\n}\n\nfunction collectDataFromConstructor(vm, Component) {\n // override _init to prevent to init as Vue instance\n var originalInit = Component.prototype._init;\n\n Component.prototype._init = function () {\n var _this = this;\n\n // proxy to actual vm\n var keys = Object.getOwnPropertyNames(vm); // 2.2.0 compat (props are no longer exposed as self properties)\n\n if (vm.$options.props) {\n for (var key in vm.$options.props) {\n if (!vm.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n }\n\n keys.forEach(function (key) {\n Object.defineProperty(_this, key, {\n get: function get() {\n return vm[key];\n },\n set: function set(value) {\n vm[key] = value;\n },\n configurable: true\n });\n });\n }; // should be acquired class property values\n\n\n var data = new Component(); // restore original _init to avoid memory leak (#209)\n\n Component.prototype._init = originalInit; // create plain data object\n\n var plainData = {};\n Object.keys(data).forEach(function (key) {\n if (data[key] !== undefined) {\n plainData[key] = data[key];\n }\n });\n\n if (false) {}\n\n return plainData;\n}\n\nvar $internalHooks = ['data', 'beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeDestroy', 'destroyed', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'render', 'errorCaptured', 'serverPrefetch' // 2.6\n];\nfunction componentFactory(Component) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.name = options.name || Component._componentTag || Component.name; // prototype props.\n\n var proto = Component.prototype;\n Object.getOwnPropertyNames(proto).forEach(function (key) {\n if (key === 'constructor') {\n return;\n } // hooks\n\n\n if ($internalHooks.indexOf(key) > -1) {\n options[key] = proto[key];\n return;\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(proto, key);\n\n if (descriptor.value !== void 0) {\n // methods\n if (typeof descriptor.value === 'function') {\n (options.methods || (options.methods = {}))[key] = descriptor.value;\n } else {\n // typescript decorated data\n (options.mixins || (options.mixins = [])).push({\n data: function data() {\n return _defineProperty({}, key, descriptor.value);\n }\n });\n }\n } else if (descriptor.get || descriptor.set) {\n // computed properties\n (options.computed || (options.computed = {}))[key] = {\n get: descriptor.get,\n set: descriptor.set\n };\n }\n });\n (options.mixins || (options.mixins = [])).push({\n data: function data() {\n return collectDataFromConstructor(this, Component);\n }\n }); // decorate options\n\n var decorators = Component.__decorators__;\n\n if (decorators) {\n decorators.forEach(function (fn) {\n return fn(options);\n });\n delete Component.__decorators__;\n } // find super\n\n\n var superProto = Object.getPrototypeOf(Component.prototype);\n var Super = superProto instanceof external_commonjs_vue_commonjs2_vue_root_Vue_default.a ? superProto.constructor : external_commonjs_vue_commonjs2_vue_root_Vue_default.a;\n var Extended = Super.extend(options);\n forwardStaticMembers(Extended, Component, Super);\n\n if (reflectionIsSupported()) {\n copyReflectionMetadata(Extended, Component);\n }\n\n return Extended;\n}\nvar reservedPropertyNames = [// Unique id\n'cid', // Super Vue constructor\n'super', // Component options that will be used by the component\n'options', 'superOptions', 'extendOptions', 'sealedOptions', // Private assets\n'component', 'directive', 'filter'];\nvar shouldIgnore = {\n prototype: true,\n arguments: true,\n callee: true,\n caller: true\n};\n\nfunction forwardStaticMembers(Extended, Original, Super) {\n // We have to use getOwnPropertyNames since Babel registers methods as non-enumerable\n Object.getOwnPropertyNames(Original).forEach(function (key) {\n // Skip the properties that should not be overwritten\n if (shouldIgnore[key]) {\n return;\n } // Some browsers does not allow reconfigure built-in properties\n\n\n var extendedDescriptor = Object.getOwnPropertyDescriptor(Extended, key);\n\n if (extendedDescriptor && !extendedDescriptor.configurable) {\n return;\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(Original, key); // If the user agent does not support `__proto__` or its family (IE <= 10),\n // the sub class properties may be inherited properties from the super class in TypeScript.\n // We need to exclude such properties to prevent to overwrite\n // the component options object which stored on the extended constructor (See #192).\n // If the value is a referenced value (object or function),\n // we can check equality of them and exclude it if they have the same reference.\n // If it is a primitive value, it will be forwarded for safety.\n\n if (!hasProto) {\n // Only `cid` is explicitly exluded from property forwarding\n // because we cannot detect whether it is a inherited property or not\n // on the no `__proto__` environment even though the property is reserved.\n if (key === 'cid') {\n return;\n }\n\n var superDescriptor = Object.getOwnPropertyDescriptor(Super, key);\n\n if (!isPrimitive(descriptor.value) && superDescriptor && superDescriptor.value === descriptor.value) {\n return;\n }\n } // Warn if the users manually declare reserved properties\n\n\n if (false) {}\n\n Object.defineProperty(Extended, key, descriptor);\n });\n}\n\nfunction vue_class_component_esm_Component(options) {\n if (typeof options === 'function') {\n return componentFactory(options);\n }\n\n return function (Component) {\n return componentFactory(Component, options);\n };\n}\n\nvue_class_component_esm_Component.registerHooks = function registerHooks(keys) {\n $internalHooks.push.apply($internalHooks, _toConsumableArray(keys));\n};\n\n/* harmony default export */ var vue_class_component_esm = (vue_class_component_esm_Component);\n\n\n// CONCATENATED MODULE: ../node_modules/vue-property-decorator/lib/vue-property-decorator.js\n/** vue-property-decorator verson 8.5.1 MIT LICENSE copyright 2020 kaorun343 */\n/// \n\n\n\n\n/** Used for keying reactive provide/inject properties */\nvar reactiveInjectKey = '__reactiveInject__';\n/**\n * decorator of an inject\n * @param from key\n * @return PropertyDecorator\n */\nfunction Inject(options) {\n return createDecorator(function (componentOptions, key) {\n if (typeof componentOptions.inject === 'undefined') {\n componentOptions.inject = {};\n }\n if (!Array.isArray(componentOptions.inject)) {\n componentOptions.inject[key] = options || key;\n }\n });\n}\n/**\n * decorator of a reactive inject\n * @param from key\n * @return PropertyDecorator\n */\nfunction InjectReactive(options) {\n return createDecorator(function (componentOptions, key) {\n if (typeof componentOptions.inject === 'undefined') {\n componentOptions.inject = {};\n }\n if (!Array.isArray(componentOptions.inject)) {\n var fromKey_1 = !!options ? options.from || options : key;\n var defaultVal_1 = (!!options && options.default) || undefined;\n if (!componentOptions.computed)\n componentOptions.computed = {};\n componentOptions.computed[key] = function () {\n var obj = this[reactiveInjectKey];\n return obj ? obj[fromKey_1] : defaultVal_1;\n };\n componentOptions.inject[reactiveInjectKey] = reactiveInjectKey;\n }\n });\n}\nfunction produceProvide(original) {\n var provide = function () {\n var _this = this;\n var rv = typeof original === 'function' ? original.call(this) : original;\n rv = Object.create(rv || null);\n // set reactive services (propagates previous services if necessary)\n rv[reactiveInjectKey] = this[reactiveInjectKey] || {};\n for (var i in provide.managed) {\n rv[provide.managed[i]] = this[i];\n }\n var _loop_1 = function (i) {\n rv[provide.managedReactive[i]] = this_1[i]; // Duplicates the behavior of `@Provide`\n Object.defineProperty(rv[reactiveInjectKey], provide.managedReactive[i], {\n enumerable: true,\n get: function () { return _this[i]; },\n });\n };\n var this_1 = this;\n for (var i in provide.managedReactive) {\n _loop_1(i);\n }\n return rv;\n };\n provide.managed = {};\n provide.managedReactive = {};\n return provide;\n}\nfunction needToProduceProvide(original) {\n return (typeof original !== 'function' ||\n (!original.managed && !original.managedReactive));\n}\n/**\n * decorator of a provide\n * @param key key\n * @return PropertyDecorator | void\n */\nfunction Provide(key) {\n return createDecorator(function (componentOptions, k) {\n var provide = componentOptions.provide;\n if (needToProduceProvide(provide)) {\n provide = componentOptions.provide = produceProvide(provide);\n }\n provide.managed[k] = key || k;\n });\n}\n/**\n * decorator of a reactive provide\n * @param key key\n * @return PropertyDecorator | void\n */\nfunction ProvideReactive(key) {\n return createDecorator(function (componentOptions, k) {\n var provide = componentOptions.provide;\n // inject parent reactive services (if any)\n if (!Array.isArray(componentOptions.inject)) {\n componentOptions.inject = componentOptions.inject || {};\n componentOptions.inject[reactiveInjectKey] = {\n from: reactiveInjectKey,\n default: {},\n };\n }\n if (needToProduceProvide(provide)) {\n provide = componentOptions.provide = produceProvide(provide);\n }\n provide.managedReactive[k] = key || k;\n });\n}\n/** @see {@link https://github.com/vuejs/vue-class-component/blob/master/src/reflect.ts} */\nvar reflectMetadataIsSupported = typeof Reflect !== 'undefined' && typeof Reflect.getMetadata !== 'undefined';\nfunction applyMetadata(options, target, key) {\n if (reflectMetadataIsSupported) {\n if (!Array.isArray(options) &&\n typeof options !== 'function' &&\n typeof options.type === 'undefined') {\n var type = Reflect.getMetadata('design:type', target, key);\n if (type !== Object) {\n options.type = type;\n }\n }\n }\n}\n/**\n * decorator of model\n * @param event event name\n * @param options options\n * @return PropertyDecorator\n */\nfunction Model(event, options) {\n if (options === void 0) { options = {}; }\n return function (target, key) {\n applyMetadata(options, target, key);\n createDecorator(function (componentOptions, k) {\n ;\n (componentOptions.props || (componentOptions.props = {}))[k] = options;\n componentOptions.model = { prop: k, event: event || k };\n })(target, key);\n };\n}\n/**\n * decorator of a prop\n * @param options the options for the prop\n * @return PropertyDecorator | void\n */\nfunction Prop(options) {\n if (options === void 0) { options = {}; }\n return function (target, key) {\n applyMetadata(options, target, key);\n createDecorator(function (componentOptions, k) {\n ;\n (componentOptions.props || (componentOptions.props = {}))[k] = options;\n })(target, key);\n };\n}\n/**\n * decorator of a synced prop\n * @param propName the name to interface with from outside, must be different from decorated property\n * @param options the options for the synced prop\n * @return PropertyDecorator | void\n */\nfunction PropSync(propName, options) {\n if (options === void 0) { options = {}; }\n // @ts-ignore\n return function (target, key) {\n applyMetadata(options, target, key);\n createDecorator(function (componentOptions, k) {\n ;\n (componentOptions.props || (componentOptions.props = {}))[propName] = options;\n (componentOptions.computed || (componentOptions.computed = {}))[k] = {\n get: function () {\n return this[propName];\n },\n set: function (value) {\n // @ts-ignore\n this.$emit(\"update:\" + propName, value);\n },\n };\n })(target, key);\n };\n}\n/**\n * decorator of a watch function\n * @param path the path or the expression to observe\n * @param WatchOption\n * @return MethodDecorator\n */\nfunction Watch(path, options) {\n if (options === void 0) { options = {}; }\n var _a = options.deep, deep = _a === void 0 ? false : _a, _b = options.immediate, immediate = _b === void 0 ? false : _b;\n return createDecorator(function (componentOptions, handler) {\n if (typeof componentOptions.watch !== 'object') {\n componentOptions.watch = Object.create(null);\n }\n var watch = componentOptions.watch;\n if (typeof watch[path] === 'object' && !Array.isArray(watch[path])) {\n watch[path] = [watch[path]];\n }\n else if (typeof watch[path] === 'undefined') {\n watch[path] = [];\n }\n watch[path].push({ handler: handler, deep: deep, immediate: immediate });\n });\n}\n// Code copied from Vue/src/shared/util.js\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = function (str) { return str.replace(hyphenateRE, '-$1').toLowerCase(); };\n/**\n * decorator of an event-emitter function\n * @param event The name of the event\n * @return MethodDecorator\n */\nfunction Emit(event) {\n return function (_target, propertyKey, descriptor) {\n var key = hyphenate(propertyKey);\n var original = descriptor.value;\n descriptor.value = function emitter() {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var emit = function (returnValue) {\n var emitName = event || key;\n if (returnValue === undefined) {\n if (args.length === 0) {\n _this.$emit(emitName);\n }\n else if (args.length === 1) {\n _this.$emit(emitName, args[0]);\n }\n else {\n _this.$emit.apply(_this, [emitName].concat(args));\n }\n }\n else {\n if (args.length === 0) {\n _this.$emit(emitName, returnValue);\n }\n else if (args.length === 1) {\n _this.$emit(emitName, returnValue, args[0]);\n }\n else {\n _this.$emit.apply(_this, [emitName, returnValue].concat(args));\n }\n }\n };\n var returnValue = original.apply(this, args);\n if (isPromise(returnValue)) {\n returnValue.then(emit);\n }\n else {\n emit(returnValue);\n }\n return returnValue;\n };\n };\n}\n/**\n * decorator of a ref prop\n * @param refKey the ref key defined in template\n */\nfunction Ref(refKey) {\n return createDecorator(function (options, key) {\n options.computed = options.computed || {};\n options.computed[key] = {\n cache: false,\n get: function () {\n return this.$refs[refKey || key];\n },\n };\n });\n}\nfunction isPromise(obj) {\n return obj instanceof Promise || (obj && typeof obj.then === 'function');\n}\n\n// EXTERNAL MODULE: ../node_modules/vuex/dist/vuex.esm.js\nvar vuex_esm = __webpack_require__(\"94ea\");\n\n// CONCATENATED MODULE: ./src/wwtaware.ts\n// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n\n\n\n/** A class for Vue components that wish to interact with a [[WWTComponent]]\n * through the Vuex state management system.\n *\n * Skip to [The WWT Vuex Interface](#the-wwt-vuex-interface) for a quick summary\n * of how WWT's state is exposed and controlled in Vuex.\n *\n * ## Introduction\n *\n * Vue applications are composed of multiple [components]. In a WWT-powered app,\n * one of those components will be a `` component containing\n * the actual WWT rendering window. The other components of the app will wish to\n * monitor or alter the state of the WWT rendering window. The\n * [[WWTAwareComponent]] class provides a convenient framework for doing so.\n *\n * [components]: https://vuejs.org/v2/guide/components.html\n *\n * In particular, if your component’s TypeScript class [extends] this class, it\n * will automatically be set up with fields and methods allowing you to interact\n * with the WWT engine’s state. A minimal example:\n *\n * [extends]: https://www.typescriptlang.org/docs/handbook/classes.html#inheritance\n *\n * ```vue\n * \n *\n * \n * ```\n *\n * This simple `App` component will display the coordinates of the current center\n * of the WWT view, and the coordinate readout will update automagically as the\n * user interacts with the view.\n *\n * ## Props\n *\n * Classes inheriting from [[WWTAwareComponent]] automatically define a prop\n * named [[wwtNamespace]]. This should be set to the namespace of the [Vuex\n * module] used to track the `` component’s state — that is,\n * it should have the same value as that component’s own `wwtNamespace` prop.\n * The default value is `\"wwt\"`.\n *\n * [Vuex module]: https://vuex.vuejs.org/guide/modules.html\n *\n * ## The WWT Vuex Interface\n *\n * Your [[WWTAwareComponent]] can monitor or manipulate the state of the WWT\n * renderer using the following interfaces, grouped by category. As a reminder,\n * in the Vuex paradigm, state is expressed in [state variables] and [getters],\n * and modified through instantaneous [mutations] and asynchronous [actions].\n *\n * [state variables]: https://vuex.vuejs.org/guide/state.html\n * [getters]: https://vuex.vuejs.org/guide/getters.html\n * [mutations]: https://vuex.vuejs.org/guide/mutations.html\n * [actions]: https://vuex.vuejs.org/guide/actions.html\n *\n * ### Initialization\n *\n * Mutations:\n *\n * - [[setupForImageset]]\n *\n * Actions:\n *\n * - [[waitForReady]]\n *\n * ### Basic View Information\n *\n * State:\n *\n * - [[wwtCurrentTime]]\n * - [[wwtClockDiscontinuities]]\n * - [[wwtClockRate]]\n * - [[wwtDecRad]]\n * - [[wwtRARad]]\n * - [[wwtZoomDeg]]\n *\n * Getters:\n *\n * - [[findRADecForScreenPoint]]\n *\n * Mutations:\n *\n * - [[setClockRate]]\n * - [[setClockSync]]\n * - [[setTime]]\n * - [[setTrackedObject]]\n * - [[zoom]]\n *\n * Actions:\n *\n * - [[gotoRADecZoom]]\n * - [[gotoTarget]]\n *\n * ### Image Sets\n *\n * State:\n *\n * - [[wwtAvailableImagesets]]\n * - [[wwtBackgroundImageset]]\n * - [[wwtForegroundImageset]]\n * - [[wwtForegroundOpacity]]\n * - [[wwtRenderType]]\n *\n * Getters:\n *\n * - [[lookupImageset]]\n *\n * Mutations:\n *\n * - [[setBackgroundImageByName]]\n * - [[setForegroundImageByName]]\n * - [[setForegroundOpacity]]\n * - [[setupForImageset]]\n * - [[updateAvailableImagesets]]\n *\n * Actions:\n *\n * - [[loadImageCollection]]\n *\n * ### Imageset Layers (including FITS imagery)\n *\n * State:\n *\n * - [[wwtActiveLayers]]\n * - [[wwtImagesetLayers]]\n *\n * Getters:\n *\n * - [[activeImagesetLayerStates]]\n * - [[imagesetForLayer]]\n * - [[imagesetStateForLayer]]\n *\n * Mutations:\n *\n * - [[applyFitsLayerSettings]]\n * - [[setFitsLayerColormap]]\n * - [[stretchFitsLayer]]\n * - [[setImageSetLayerOrder]]\n * - [[deleteLayer]]\n *\n * Actions:\n *\n * - [[addImageSetLayer]]\n * - [[loadFitsLayer]] (deprecated)\n *\n * ### Tabular Data Layers\n *\n * State:\n *\n * - [[wwtActiveLayers]]\n * - [[wwtSpreadSheetLayers]]\n *\n * Mutations:\n *\n * - [[applyTableLayerSettings]]\n * - [[updateTableLayer]]\n * - [[deleteLayer]]\n *\n * Actions:\n *\n * - [[createTableLayer]]\n *\n * ### Annotations\n *\n * Mutations:\n *\n * - [[addAnnotation]]\n * - [[clearAnnotations]]\n * - [[removeAnnotation]]\n *\n * ### Progressive HiPS Catalogs\n *\n * These have some characteristics of both imagesets and tabular (\"spreadsheet\") data\n * layers.\n *\n * Getters:\n *\n * - [[layerForHipsCatalog]]\n * - [[spreadsheetStateForHipsCatalog]]\n *\n * Mutations:\n *\n * - [[applyTableLayerSettings]]\n * - [[removeCatalogHipsByName]]\n *\n * Actions:\n *\n * - [[addCatalogHipsByName]]\n * - [[getCatalogHipsDataInView]]\n *\n * ### Tours\n *\n * State:\n *\n * - [[wwtIsTourPlayerActive]]\n * - [[wwtIsTourPlaying]]\n * - [[wwtTourCompletions]]\n * - [[wwtTourRunTime]]\n * - [[wwtTourStopStartTimes]]\n * - [[wwtTourTimecode]]\n *\n * Mutations:\n *\n * - [[seekToTourTimecode]]\n * - [[setTourPlayerLeaveSettingsWhenStopped]]\n * - [[startTour]]\n * - [[toggleTourPlayPauseState]]\n *\n * Actions:\n *\n * - [[loadTour]]\n *\n * ### Miscellaneous\n *\n * State:\n *\n * - [[showWebGl2Warning]]\n *\n * Mutations:\n *\n * - [[applySetting]]\n **/\nvar wwtaware_WWTAwareComponent = /** @class */ (function (_super) {\n __extends(WWTAwareComponent, _super);\n function WWTAwareComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WWTAwareComponent.prototype.beforeCreate = function () {\n // Wire up this component to its backing WWT Vuex state module. We have to\n // wait until now to do so because we don't know a priori which Vuex module\n // namespace we'll be using. TODO: would like to be able to validate that\n // the namespace actually exists\n var namespace = this.$options.propsData ? this.$options.propsData.wwtNamespace : \"wwt\"; // eslint-disable-line @typescript-eslint/no-explicit-any\n var _b = Object(vuex_esm[\"a\" /* createNamespacedHelpers */])(namespace), mapActions = _b.mapActions, mapGetters = _b.mapGetters, mapMutations = _b.mapMutations, mapState = _b.mapState;\n this.$options.computed = __assign(__assign(__assign({}, mapState({\n wwtActiveLayers: function (state, _getters) { return state.activeLayers; },\n wwtAvailableImagesets: function (state, _getters) { return state.availableImagesets; },\n wwtBackgroundImageset: function (state, _getters) { return state.backgroundImageset; },\n wwtCurrentTime: function (state, _getters) { return state.currentTime; },\n wwtClockDiscontinuities: function (state, _getters) { return state.clockDiscontinuities; },\n wwtClockRate: function (state, _getters) { return state.clockRate; },\n wwtDecRad: function (state, _getters) { return state.decRad; },\n wwtForegroundImageset: function (state, _getters) { return state.foregroundImageset; },\n wwtForegroundOpacity: function (state, _getters) { return state.foregroundOpacity; },\n wwtImagesetLayers: function (state, _getters) { return state.imagesetLayers; },\n wwtIsTourPlayerActive: function (state, _getters) { return state.isTourPlayerActive; },\n wwtIsTourPlaying: function (state, _getters) { return state.isTourPlaying; },\n wwtRARad: function (state, _getters) { return state.raRad; },\n wwtRenderType: function (state, _getters) { return state.renderType; },\n wwtRollRad: function (state, _getters) { return state.rollRad; },\n wwtTourCompletions: function (state, _getters) { return state.tourCompletions; },\n wwtTourRunTime: function (state, _getters) { return state.tourRunTime; },\n wwtTourStopStartTimes: function (state, _getters) { return state.tourStopStartTimes; },\n wwtTourTimecode: function (state, _getters) { return state.tourTimecode; },\n wwtZoomDeg: function (state, _getters) { return state.zoomDeg; },\n wwtShowWebGl2Warning: function (state, _getters) { return state.showWebGl2Warning; },\n wwtSpreadSheetLayers: function (state, _getters) { return state.spreadSheetLayers; },\n })), mapGetters([\n \"activeImagesetLayerStates\",\n \"findRADecForScreenPoint\",\n \"imagesetForLayer\",\n \"imagesetStateForLayer\",\n \"layerForHipsCatalog\",\n \"lookupImageset\",\n \"spreadSheetLayerById\",\n \"spreadSheetLayer\",\n \"spreadsheetState\",\n \"spreadsheetStateById\",\n \"spreadsheetStateForHipsCatalog\",\n ])), this.$options.computed);\n // TODO: is there a convenient way to namespace these? Also note that we\n // have to forcibly override pre-existing methods (i.e., the\n // this.$options.methods comes before the mapActions) since we have to\n // define dummy methods to make TypeScript happy.\n this.$options.methods = __assign(__assign(__assign({}, this.$options.methods), mapActions([\n \"addCatalogHipsByName\",\n \"createTableLayer\",\n \"getCatalogHipsDataInView\",\n \"gotoRADecZoom\",\n \"gotoTarget\",\n \"loadImageCollection\",\n \"loadFitsLayer\",\n \"addImageSetLayer\",\n \"loadTour\",\n \"viewAsTourXml\",\n \"waitForReady\",\n ])), mapMutations([\n \"addAnnotation\",\n \"applyFitsLayerSettings\",\n \"applyTableLayerSettings\",\n \"applySetting\",\n \"clearAnnotations\",\n \"deleteLayer\",\n \"removeAnnotation\",\n \"removeCatalogHipsByName\",\n \"seekToTourTimecode\",\n \"setBackgroundImageByName\",\n \"setClockRate\",\n \"setClockSync\",\n \"setFitsLayerColormap\",\n \"setForegroundImageByName\",\n \"setForegroundOpacity\",\n \"setImageSetLayerOrder\",\n \"setTourPlayerLeaveSettingsWhenStopped\",\n \"setTime\",\n \"setTrackedObject\",\n \"setupForImageset\",\n \"startTour\",\n \"stretchFitsLayer\",\n \"toggleTourPlayPauseState\",\n \"updateTableLayer\",\n \"updateAvailableImagesets\",\n \"zoom\",\n \"move\",\n \"tilt\",\n ]));\n };\n __decorate([\n Prop({ default: \"wwt\" })\n ], WWTAwareComponent.prototype, \"wwtNamespace\", void 0);\n WWTAwareComponent = __decorate([\n vue_class_component_esm\n ], WWTAwareComponent);\n return WWTAwareComponent;\n}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a));\n\n\n// CONCATENATED MODULE: ../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"8c53c130-vue-loader-template\"}!../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib??vue-loader-options!./src/Component.vue?vue&type=template&id=16ec744e&\nvar Componentvue_type_template_id_16ec744e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wwtelescope-component\",attrs:{\"id\":_vm.uniqueId}})}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/Component.vue?vue&type=template&id=16ec744e&\n\n// CONCATENATED MODULE: ../node_modules/ts-loader??ref--14-0!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib??vue-loader-options!./src/Component.vue?vue&type=script&lang=ts&\n\n\n\n\nvar idCounter = 0;\n/** This is the component docstring. */\nvar Componentvue_type_script_lang_ts_WWTComponent = /** @class */ (function (_super) {\n __extends(WWTComponent, _super);\n function WWTComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WWTComponent.prototype.beforeCreate = function () {\n // Wire up this component to its backing Vuex state module.\n var namespace = this.$options.propsData ? this.$options.propsData.wwtNamespace : \"wwt\"; // eslint-disable-line @typescript-eslint/no-explicit-any\n var _a = Object(vuex_esm[\"a\" /* createNamespacedHelpers */])(namespace), mapActions = _a.mapActions, mapMutations = _a.mapMutations;\n this.$options.methods = __assign(__assign({}, mapMutations([\n \"internalIncrementTourCompletions\",\n \"internalLinkToInstance\",\n \"internalUnlinkFromInstance\",\n \"internalUpdate\",\n ])), mapActions([\n \"waitForReady\",\n ]));\n // Create a globally unique ID for the div that the WWT engine can latch onto.\n var uid = \"wwtcmpt\" + idCounter;\n Object.defineProperties(this, {\n uniqueId: { get: function () { return uid; } },\n });\n idCounter += 1;\n };\n WWTComponent.prototype.mounted = function () {\n var _this = this;\n this.wwt = new src_WWTInstance({\n elId: this.uniqueId,\n startInternalRenderLoop: false,\n // Start at the Galactic Center by default. RA of the GC ~= 266.4 deg; in WWT, lng = 360 - RA.\n startLatDeg: -28.9,\n startLngDeg: 93.6,\n });\n this.internalLinkToInstance(this.wwt);\n var render = function () {\n var wwt = _this.wwt;\n _this.renderLoopId = window.requestAnimationFrame(render);\n wwt.ctl.renderOneFrame();\n _this.internalUpdate();\n };\n // Wait for the WWT engine to signal readiness, then wait another tick, then\n // start the rendering loop. This way, if a user wants to do some\n // initialization that has to wait for the ready signal, we won't flash any\n // weirdly-initialized content.\n this.waitForReady().then(function () {\n external_commonjs_vue_commonjs2_vue_root_Vue_default.a.nextTick().then(function () {\n _this.renderLoopId = window.requestAnimationFrame(render);\n });\n });\n this.wwt.tourEndedCallback = (function (_tp) {\n _this.internalIncrementTourCompletions();\n });\n };\n WWTComponent.prototype.destroyed = function () {\n if (this.renderLoopId !== undefined) {\n window.cancelAnimationFrame(this.renderLoopId);\n this.renderLoopId = undefined;\n }\n if (this.wwt !== undefined) {\n this.wwt.tourEndedCallback = null;\n }\n this.internalUnlinkFromInstance();\n };\n __decorate([\n Prop({ default: \"wwt\" })\n ], WWTComponent.prototype, \"wwtNamespace\", void 0);\n WWTComponent = __decorate([\n vue_class_component_esm\n ], WWTComponent);\n return WWTComponent;\n}(external_commonjs_vue_commonjs2_vue_root_Vue_default.a));\n/* harmony default export */ var Componentvue_type_script_lang_ts_ = (Componentvue_type_script_lang_ts_WWTComponent);\n\n// CONCATENATED MODULE: ./src/Component.vue?vue&type=script&lang=ts&\n /* harmony default export */ var src_Componentvue_type_script_lang_ts_ = (Componentvue_type_script_lang_ts_); \n// CONCATENATED MODULE: ../node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./src/Component.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n src_Componentvue_type_script_lang_ts_,\n Componentvue_type_template_id_16ec744e_render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* harmony default export */ var src_Component = (component.exports);\n// CONCATENATED MODULE: ./src/index.ts\n// Copyright 2020 the .NET Foundation\n// Licensed under the MIT License\n\n\n\n\n// The Vue plugin that activates everything.\n\n/** This function is a hack to allow TypeScript to infer the `` parent store type. */\nfunction createPlugin() {\n return {\n install: function (Vue, options) {\n if (!options || !options.store) {\n throw new Error('You must provide a \"store\" when initializing the WWT engine-vuex plugin.');\n }\n options.store.registerModule(options.namespace, store_WWTEngineVuexModule);\n Vue.component('WorldWideTelescope', src_Component);\n Vue.$wwt = new store_WWTGlobalState();\n }\n };\n}\n\n// CONCATENATED MODULE: ../node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js\n\n\n\n\n/***/ }),\n\n/***/ \"8bbf\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;\n\n/***/ }),\n\n/***/ \"94ea\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export Store */\n/* unused harmony export createLogger */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return createNamespacedHelpers; });\n/* unused harmony export install */\n/* unused harmony export mapActions */\n/* unused harmony export mapGetters */\n/* unused harmony export mapMutations */\n/* unused harmony export mapState */\n/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((false)) {}\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((false)) {}\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((false)) {}\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((false)) {}\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((false)) {}\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((false)) {}\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((false)) {}\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n false\n ) {}\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((false)) {}\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((false)) {}\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((false)) {}\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((false)) {}\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((false)) {}\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((false)) {}\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((false)) {}\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((false)) {}\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (\"production\" !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((false)) {}\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (false) {}\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (false) {}\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((false)) {}\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((false)) {}\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((false)) {}\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((false)) {}\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if (false) {}\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if (false) {}\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if (false) {}\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if (false) {}\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if (false) {}\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if (false) {}\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\n/* unused harmony default export */ var _unused_webpack_default_export = (index);\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"a42b\")))\n\n/***/ }),\n\n/***/ \"9889\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__9889__;\n\n/***/ }),\n\n/***/ \"a42b\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=index.umd.js.map","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderView.vue?vue&type=style&index=0&id=54f227e1&prod&scoped=true&lang=less&\"","/* AAS WorldWide Telescope WebGL engine */\n/* eslint-disable */\n/* (this file ends up so big that eslint takes ~forever to run on it) */\n/* Licensed under the MIT License. */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.wwtlib = factory();\n }\n}(typeof self !== 'undefined' ? self : this, function () {\n\n// (umd_header.js intentionally incomplete -- it is concatenated to form index.js)\n/*! Script# Runtime\n * Designed and licensed for use and distribution with Script#-generated scripts.\n * Copyright (c) 2012, Nikhil Kothari, and the Script# Project.\n * More information at http://scriptsharp.com\n */\n\nfunction _ss() {\n \"use strict\";\n\n // Various Helpers/Utilities\n\n function _nop() {\n }\n\n function isValue(o) {\n return (o !== null) && (o !== undefined);\n }\n\n function _value(args) {\n for (var i = 2, l = args.length; i < l; i++) {\n if (isValue(args[i])) {\n return args[i];\n }\n }\n return null;\n }\n\n function value(a, b) {\n return isValue(a) ? a : isValue(b) ? b : _value(arguments);\n }\n\n function extend(o, items) {\n for (var n in items) {\n o[n] = items[n];\n }\n return o;\n }\n\n function parseBoolean(s) {\n return (s.toLowerCase() == 'true');\n }\n\n function parseRegExp(s) {\n if (s[0] == '/') {\n var endSlashIndex = s.lastIndexOf('/');\n if (endSlashIndex > 1) {\n var expression = s.substring(1, endSlashIndex);\n var flags = s.substr(endSlashIndex + 1);\n return new RegExp(expression, flags);\n }\n }\n\n return null;\n }\n\n function parseNumber(s) {\n if (!s || !s.length) {\n return 0;\n }\n if ((s.indexOf('.') >= 0) || (s.indexOf('e') >= 0) ||\n endsWith(s, 'f') || endsWith(s, 'F')) {\n return parseFloat(s);\n }\n return parseInt(s, 10);\n }\n\n function parseDate(s) {\n var t = Date.parse(s);\n return isNaN(t) ? undefined : new Date(t);\n }\n\n function truncate(n) {\n return (n >= 0) ? Math.floor(n) : Math.ceil(n);\n }\n\n function now() {\n return new Date();\n }\n\n function today() {\n var d = new Date();\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n\n function compareDates(d1, d2) {\n return (d1 === d2) ? true : ((isValue(d1) && isValue(d2)) ? (d1.getTime() == d2.getTime()) : false);\n }\n\n function _popStackFrame(e) {\n if (!isValue(e.stack) ||\n !isValue(e.fileName) ||\n !isValue(e.lineNumber)) {\n return;\n }\n\n var stackFrames = e.stack.split('\\n');\n var currentFrame = stackFrames[0];\n var pattern = e.fileName + ':' + e.lineNumber;\n while (isValue(currentFrame) && currentFrame.indexOf(pattern) === -1) {\n stackFrames.shift();\n currentFrame = stackFrames[0];\n }\n\n var nextFrame = stackFrames[1];\n if (!isValue(nextFrame)) {\n return;\n }\n\n var nextFrameParts = nextFrame.match(/@(.*):(\\d+)$/);\n if (!isValue(nextFrameParts)) {\n return;\n }\n\n stackFrames.shift();\n e.stack = stackFrames.join('\\n');\n e.fileName = nextFrameParts[1];\n e.lineNumber = parseInt(nextFrameParts[2], 10);\n }\n\n function error(message, errorInfo, innerException) {\n var e = new Error(message);\n if (errorInfo) {\n for (var v in errorInfo) {\n e[v] = errorInfo[v];\n }\n }\n if (innerException) {\n e.innerException = innerException;\n }\n\n _popStackFrame(e);\n return e;\n }\n\n function fail(message) {\n console.assert(false, message);\n if (global.navigator) {\n eval('debugger;');\n }\n }\n\n // Collections\n\n function toArray(obj) {\n return obj ? (typeof obj == 'string' ? JSON.parse('(' + obj + ')') : Array.prototype.slice.call(obj)) : null;\n }\n\n function removeItem(a, item) {\n var index = a.indexOf(item);\n return index >= 0 ? (a.splice(index, 1), true) : false;\n }\n\n function clearKeys(obj) {\n for (var key in obj) {\n delete obj[key];\n }\n }\n\n function keyExists(obj, key) {\n return obj[key] !== undefined;\n }\n\n function keys(obj) {\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }\n return keys;\n }\n\n function keyCount(obj) {\n return keys(obj).length;\n }\n\n function Enumerator(obj, keys) {\n var index = -1;\n var length = keys ? keys.length : obj.length;\n var lookup = keys ? function () { return { key: keys[index], value: obj[keys[index]] }; } :\n function () { return obj[index]; };\n\n this.current = null;\n this.moveNext = function () {\n index++;\n this.current = lookup();\n return index < length;\n };\n this.reset = function () {\n index = -1;\n this.current = null;\n };\n }\n\n var _nopEnumerator = {\n current: null,\n moveNext: function () { return false; },\n reset: _nop\n };\n\n function enumerate(o) {\n if (!isValue(o)) {\n return _nopEnumerator;\n }\n if (o.getEnumerator) {\n return o.getEnumerator();\n }\n if (o.length !== undefined) {\n return new Enumerator(o);\n }\n return new Enumerator(o, keys(o));\n }\n\n function Stack() {\n this.count = 0;\n this._items = [];\n }\n\n var Stack$ = {\n clear: function () {\n this._items.length = 0;\n this.count = 0;\n },\n contains: function (item) {\n for (var i = this.count - 1; i >= 0; i--) {\n if (this._items[i] === item) {\n return true;\n }\n }\n return false;\n },\n getEnumerator: function () {\n return new Enumerator(this._items.reverse());\n },\n peek: function () {\n return this._items[this.count - 1];\n },\n push: function (item) {\n this._items.push(item);\n this.count++;\n },\n pop: function () {\n if (this.count) {\n this.count--;\n return this._items.pop();\n }\n return undefined;\n }\n }\n\n function Queue() {\n this.count = 0;\n this._items = [];\n this._offset = 0;\n }\n\n function _cleanQueue(q) {\n q._items = q._items.slice(q._offset);\n q._offset = 0;\n }\n\n var Queue$ = {\n clear: function () {\n this._items.length = 0;\n this._offset = 0;\n this.count = 0;\n },\n contains: function (item) {\n for (var i = this._offset, length = this._items.length; i <= length; i++) {\n if (this._items[i] === item) {\n return true;\n }\n }\n return false;\n },\n dequeue: function () {\n if (this.count) {\n var item = this._items[this._offset];\n if (++this._offset * 2 >= this._items.length) {\n _cleanQueue(this);\n }\n this.count--;\n return item;\n }\n return undefined;\n },\n enqueue: function (item) {\n this._items.push(item);\n this.count++;\n },\n getEnumerator: function () {\n if (this._offset != 0) {\n _cleanQueue(this);\n }\n return new Enumerator(this._items);\n },\n peek: function () {\n return this._items.length ? this._items[this._offset] : undefined;\n }\n }\n\n // String\n\n function string(arg1, arg2) {\n if (typeof arg2 == 'number') {\n return arg2 > 1 ? new Array(arg2 + 1).join(arg1) : arg1;\n }\n return Array.prototype.join.call(arguments, '');\n }\n\n function emptyString(s) {\n return !s || !s.length;\n }\n\n function whitespace(s) {\n return emptyString(s) || !s.replace(/^\\s*/, '').length;\n }\n\n function compareStrings(s1, s2, ignoreCase) {\n s1 = s1 || '', s2 = s2 || '';\n ignoreCase ? (s1 = s1.toUpperCase(), s2 = s2.toUpperCase()) : 0;\n return (s1 === s2) ? 0 : (s1 < s2) ? -1 : 1;\n }\n\n var _formatPlaceHolderRE = /(\\{[^\\}^\\{]+\\})/g;\n var _formatters = {};\n\n function format(cultureOrFormat) {\n var culture = neutralCulture;\n var format = cultureOrFormat;\n var values = Array.prototype.slice.call(arguments, 1);\n\n if (cultureOrFormat.constructor != String) {\n culture = cultureOrFormat;\n format = values[0];\n values = values.slice(1);\n }\n\n return format.replace(_formatPlaceHolderRE,\n function (str, match) {\n var index = parseInt(match.substr(1), 10);\n var value = values[index];\n if (!isValue(value)) {\n return '';\n }\n\n var formatter = _formatters[typeName(value)];\n if (formatter) {\n var formatSpec = '';\n var formatIndex = match.indexOf(':');\n if (formatIndex > 0) {\n formatSpec = match.substring(formatIndex + 1, match.length - 1);\n }\n if (formatSpec && (formatSpec != 'i')) {\n return formatter(value, formatSpec, culture);\n }\n }\n return culture == neutralCulture ? value.toString() : value.toLocaleString();\n });\n }\n\n function trim(s, tc) {\n if (tc || !String.prototype.trim) {\n tc = tc ? tc.join('') : null;\n var r = tc ? new RegExp('^[' + tc + ']+|[' + tc + ']+$', 'g') : /^\\s+|\\s+$/g;\n return s.replace(r, '');\n }\n return s.trim();\n }\n\n function trimStart(s, tc) {\n var r = tc ? new RegExp('^[' + tc.join('') + ']+') : /^\\s+/;\n return s.replace(r, '');\n }\n\n function trimEnd(s, tc) {\n var r = tc ? new RegExp('[' + tc.join('') + ']+$') : /\\s+$/;\n return s.replace(r, '');\n }\n\n function startsWith(s, prefix) {\n if (emptyString(prefix)) {\n return true;\n }\n if (emptyString(s) || (prefix.length > s.length)) {\n return false;\n }\n return s.substr(0, prefix.length) == prefix;\n }\n\n function endsWith(s, suffix) {\n if (emptyString(suffix)) {\n return true;\n }\n if (emptyString(s) || (suffix.length > s.length)) {\n return false;\n }\n return s.substr(-suffix.length) == suffix;\n }\n\n function padLeft(s, totalWidth, ch) {\n return (s.length < totalWidth) ? string(ch || ' ', totalWidth - s.length) + s : s;\n }\n\n function padRight(s, totalWidth, ch) {\n return (s.length < totalWidth) ? s + string(ch || ' ', totalWidth - s.length) : s;\n }\n\n function removeString(s, index, count) {\n if (!count || ((index + count) > s.length)) {\n return s.substr(0, index);\n }\n return s.substr(0, index) + s.substr(index + count);\n }\n\n function insertString(s, index, value) {\n if (!value) {\n return s;\n }\n if (!index) {\n return value + s;\n }\n return s.substr(0, index) + value + s.substr(index);\n }\n\n function replaceString(s, oldValue, newValue) {\n return s.split(oldValue).join(newValue || '');\n }\n\n // Delegate Functionality\n\n function _bindList(fnList) {\n var d = function () {\n var args = arguments;\n var result = null;\n for (var i = 0, l = fnList.length; i < l; i++) {\n result = args.length ? fnList[i].apply(null, args) : fnList[i].call(null);\n }\n return result;\n };\n d._fnList = fnList;\n return d;\n }\n\n function bind(fn, o) {\n if (!o) {\n return fn;\n }\n\n var name = null;\n fn = typeof fn == 'string' ? o[name = fn] : fn;\n\n var cache = name ? o.$$b || (o.$$b = {}) : null;\n var binding = cache ? cache[name] : null;\n\n if (!binding) {\n // Create a function that invokes the specified function, in the\n // context of the specified object.\n binding = function () {\n return fn.apply(o, arguments);\n };\n\n if (cache) {\n cache[name] = binding;\n }\n }\n return binding;\n }\n\n function bindAdd(binding, value) {\n if (!binding) {\n return value;\n }\n if (!value) {\n return binding;\n }\n\n var fnList = [].concat(binding._fnList || binding, value);\n return _bindList(fnList);\n }\n\n function bindSub(binding, value) {\n if (!binding) {\n return null;\n }\n if (!value) {\n return binding;\n }\n\n var fnList = binding._fnList || [binding];\n var index = fnList.indexOf(value);\n if (index >= 0) {\n if (fnList.length == 1) {\n return null;\n }\n\n fnList = index ? fnList.slice(0, index).concat(fnList.slice(index + 1)) : fnList.slice(1);\n return _bindList(fnList);\n }\n return binding;\n }\n\n function bindExport(fn, multiUse, name, root) {\n // Generate a unique name if one is not specified\n name = name || '__' + (new Date()).valueOf();\n\n // If unspecified, exported bindings go on the global object\n // (so they are callable using a simple identifier).\n root = root || global;\n\n var exp = {\n name: name,\n detach: function () {\n root[name] = _nop;\n },\n dispose: function () {\n try { delete root[name]; } catch (e) { root[name] = undefined; }\n }\n };\n\n // Multi-use bindings are exported directly; for the rest a stub is exported, and the stub\n // first auto-disposes, and then invokes the actual binding.\n root[name] = multiUse ? fn : function () {\n exp.dispose();\n return fn.apply(null, arguments);\n };\n\n return exp;\n }\n\n // EventArgs\n\n function EventArgs() {\n }\n\n EventArgs.Empty = new EventArgs();\n\n function CancelEventArgs() {\n this.cancel = false;\n }\n\n // Contracts\n\n function IDisposable() { }\n function IEnumerable() { }\n function IEnumerator() { }\n function IObserver() { }\n function IApplication() { }\n function IContainer() { }\n function IObjectFactory() { }\n function IEventManager() { }\n function IInitializable() { }\n\n // StringBuilder\n\n function StringBuilder(s) {\n this._parts = isValue(s) && s !== '' ? [s] : [];\n this.isEmpty = this._parts.length == 0;\n }\n\n var StringBuilder$ = {\n append: function (s) {\n if (isValue(s) && s !== '') {\n this._parts.push(s);\n this.isEmpty = false;\n }\n return this;\n },\n\n appendLine: function (s) {\n this.append(s);\n this.append('\\r\\n');\n this.isEmpty = false;\n return this;\n },\n\n clear: function () {\n this._parts = [];\n this.isEmpty = true;\n },\n\n toString: function (s) {\n return this._parts.join(s || '');\n }\n };\n\n // Observable\n\n var _observerStack = [];\n var _observerRegistration = {\n dispose: function () {\n _observerStack.pop();\n }\n }\n\n function _captureObservers(observers) {\n var registeredObservers = _observerStack;\n var observerCount = registeredObservers.length;\n\n if (observerCount) {\n observers = observers || [];\n for (var i = 0; i < observerCount; i++) {\n var observer = registeredObservers[i];\n if (observers.indexOf(observer) < 0) {\n observers.push(observer);\n }\n }\n return observers;\n }\n return null;\n }\n\n function _invalidateObservers(observers) {\n for (var i = 0, len = observers.length; i < len; i++) {\n observers[i].invalidateObserver();\n }\n }\n\n function Observable(v) {\n this._v = v;\n this._observers = null;\n }\n\n var Observable$ = {\n getValue: function () {\n this._observers = _captureObservers(this._observers);\n return this._v;\n },\n setValue: function (v) {\n if (this._v !== v) {\n this._v = v;\n\n var observers = this._observers;\n if (observers) {\n this._observers = null;\n _invalidateObservers(observers);\n }\n }\n }\n };\n\n Observable.registerObserver = function (o) {\n _observerStack.push(o);\n return _observerRegistration;\n }\n\n function ObservableCollection(items) {\n this._items = items || [];\n this._observers = null;\n }\n\n var ObservableCollection$ = {\n get_item: function (index) {\n this._observers = _captureObservers(this._observers);\n return this._items[index];\n },\n set_item: function (index, item) {\n this._items[index] = item;\n this._updated();\n },\n get_length: function () {\n this._observers = _captureObservers(this._observers);\n return this._items.length;\n },\n add: function (item) {\n this._items.push(item);\n this._updated();\n },\n clear: function () {\n this._items.clear();\n this._updated();\n },\n contains: function (item) {\n return this._items.indexOf(item) >= 0;\n },\n getEnumerator: function () {\n this._observers = _captureObservers(this._observers);\n // TODO: Change this\n return this._items.getEnumerator();\n },\n indexOf: function (item) {\n return this._items.indexOf(item);\n },\n insert: function (index, item) {\n this._items.insert(index, item);\n this._updated();\n },\n remove: function (item) {\n if (this._items.remove(item)) {\n this._updated();\n return true;\n }\n return false;\n },\n removeAt: function (index) {\n this._items.splice(index, 1);\n this._updated();\n },\n toArray: function () {\n return this._items;\n },\n _updated: function () {\n var observers = this._observers;\n if (observers) {\n this._observers = null;\n _invalidateObservers(observers);\n }\n }\n }\n\n // Task\n\n function Task(result) {\n this._continuations = result !== undefined ?\n (this.status = 'done', null) :\n (this.status = 'pending', []);\n this.result = result;\n this.error = null;\n }\n\n var Task$ = {\n get_completed: function () {\n return this.status != 'pending';\n },\n changeWith: function (continuation) {\n var task = new Task();\n this.continueWith(function (t) {\n var error = t.error;\n var result;\n if (!error) {\n try {\n result = continuation(t);\n }\n catch (e) {\n error = e;\n }\n }\n _updateTask(task, result, error);\n });\n return task;\n },\n continueWith: function (continuation) {\n if (this._continuations) {\n this._continuations.push(continuation);\n }\n else {\n var self = this;\n setTimeout(function () { continuation(self); }, 0);\n }\n return this;\n },\n done: function (callback) {\n return this.continueWith(function (t) {\n if (t.status == 'done') {\n callback(t.result);\n }\n });\n },\n fail: function (callback) {\n return this.continueWith(function (t) {\n if (t.status == 'failed') {\n callback(t.error);\n }\n });\n },\n then: function (doneCallback, failCallback) {\n return this.continueWith(function (t) {\n t.status == 'done' ? doneCallback(t.result) : failCallback(t.error);\n });\n }\n };\n\n function _updateTask(task, result, error) {\n if (task.status == 'pending') {\n if (error) {\n task.error = error;\n task.status = 'failed';\n }\n else {\n task.result = result;\n task.status = 'done';\n }\n\n var continuations = task._continuations;\n task._continuations = null;\n\n for (var i = 0, c = continuations.length; i < c; i++) {\n continuations[i](task);\n }\n }\n }\n\n function _joinTasks(tasks, any) {\n tasks = toArray(tasks);\n\n var count = tasks.length;\n\n var interval = 0;\n if ((count > 1) && (typeof tasks[0] == 'number')) {\n interval = tasks[0];\n tasks = tasks.slice(1);\n count--;\n }\n if (Array.isArray(tasks[0])) {\n tasks = tasks[0];\n count = tasks.length;\n }\n\n var joinTask = new Task();\n var seen = 0;\n\n function continuation(t) {\n if (joinTask.status == 'pending') {\n seen++;\n if (any) {\n _updateTask(joinTask, t);\n }\n else if (seen == count) {\n _updateTask(joinTask, true);\n }\n }\n }\n\n function timeout() {\n if (joinTask.status == 'pending') {\n if (any) {\n _updateTask(joinTask, null);\n }\n else {\n _updateTask(joinTask, false);\n }\n }\n }\n\n if (interval != 0) {\n setTimeout(timeout, interval);\n }\n\n for (var i = 0; i < count; i++) {\n tasks[i].continueWith(continuation);\n }\n\n return joinTask;\n }\n Task.all = function () {\n return _joinTasks(arguments, false);\n }\n Task.any = function () {\n return _joinTasks(arguments, true);\n }\n Task.delay = function (timeout) {\n var timerTask = new Task();\n\n setTimeout(function () {\n _updateTask(timerTask, true);\n }, timeout);\n\n return timerTask;\n }\n\n function deferred(result) {\n var task = new Task(result);\n\n return {\n task: task,\n resolve: function (result) {\n _updateTask(task, result);\n },\n reject: function (error) {\n _updateTask(task, null, (error || new Error()));\n }\n };\n }\n\n // Culture\n\n var neutralCulture = {\n name: '',\n // numberFormat\n nf: {\n nan: 'NaN', // naNSymbol\n neg: '-', // negativeSign\n pos: '+', // positiveSign\n negInf: '-Infinity', // negativeInfinityText\n posInf: 'Infinity', // positiveInfinityText\n gw: [3], // numberGroupSizes\n dd: 2, // numberDecimalDigits\n ds: '.', // numberDecimalSeparator\n gs: ',', // numberGroupSeparator\n\n per: '%', // percentSymbol\n perGW: [3], // percentGroupSizes\n perDD: 2, // percentDecimalDigits\n perDS: '.', // percentDecimalSeparator\n perGS: ',', // percentGroupSeparator\n perPP: '{0} %', // percentPositivePattern\n perNP: '-{0} %', // percentNegativePattern\n\n cur: '$', // currencySymbol\n curGW: [3], // currencyGroupSizes\n curDD: 2, // currencyDecimalDigits\n curDS: '.', // currencyDecimalSeparator\n curGS: ',', // currencyGroupSeparator\n curNP: '(${0})', // currencyNegativePattern\n curPP: '${0}' // currencyPositivePattern\n },\n // dateFormat\n dtf: {\n am: 'AM', // amDesignator\n pm: 'PM', // pmDesignator\n\n ds: '/', // dateSeparator\n ts: ':', // timeSeparator\n\n gmt: 'ddd, dd MMM yyyy HH:mm:ss \\'GMT\\'', // gmtDateTimePattern\n uni: 'yyyy-MM-dd HH:mm:ssZ', // universalDateTimePattern\n sort: 'yyyy-MM-ddTHH:mm:ss', // sortableDateTimePattern\n dt: 'dddd, MMMM dd, yyyy h:mm:ss tt', // dateTimePattern\n\n ld: 'dddd, MMMM dd, yyyy', // longDatePattern\n sd: 'M/d/yyyy', // shortDatePattern\n\n lt: 'h:mm:ss tt', // longTimePattern\n st: 'h:mm tt', // shortTimePattern\n\n day0: 0, // firstDayOfWeek\n day: ['Sunday', 'Monday', 'Tuesday',\n 'Wednesday', 'Thursday',\n 'Friday', 'Saturday'], // dayNames\n sday: ['Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'], // shortDayNames\n mday: ['Su', 'Mo', 'Tu', 'We',\n 'Th', 'Fr', 'Sa'], // minimizedDayNames\n\n mon: ['January', 'February', 'March',\n 'April', 'May', 'June', 'July',\n 'August', 'September', 'October',\n 'November', 'December', ''], // monthNames\n smon: ['Jan', 'Feb', 'Mar', 'Apr',\n 'May', 'Jun', 'Jul', 'Aug',\n 'Sep', 'Oct', 'Nov', 'Dec', ''] // shortMonthNames\n }\n };\n\n var currentCulture = { name: 'en-us', dtf: neutralCulture.dtf, nf: neutralCulture.nf };\n\n // Formatting Helpers\n\n function _commaFormatNumber(number, groups, decimal, comma) {\n var decimalPart = null;\n var decimalIndex = number.indexOf(decimal);\n if (decimalIndex > 0) {\n decimalPart = number.substr(decimalIndex);\n number = number.substr(0, decimalIndex);\n }\n\n var negative = number.startsWith('-');\n if (negative) {\n number = number.substr(1);\n }\n\n var groupIndex = 0;\n var groupSize = groups[groupIndex];\n if (number.length < groupSize) {\n return decimalPart ? number + decimalPart : number;\n }\n\n var index = number.length;\n var s = '';\n var done = false;\n while (!done) {\n var length = groupSize;\n var startIndex = index - length;\n if (startIndex < 0) {\n groupSize += startIndex;\n length += startIndex;\n startIndex = 0;\n done = true;\n }\n if (!length) {\n break;\n }\n\n var part = number.substr(startIndex, length);\n if (s.length) {\n s = part + comma + s;\n }\n else {\n s = part;\n }\n index -= length;\n\n if (groupIndex < groups.length - 1) {\n groupIndex++;\n groupSize = groups[groupIndex];\n }\n }\n\n if (negative) {\n s = '-' + s;\n }\n return decimalPart ? s + decimalPart : s;\n }\n\n _formatters['Number'] = function (number, format, culture) {\n var nf = culture.nf;\n var s = '';\n var precision = -1;\n\n if (format.length > 1) {\n precision = parseInt(format.substr(1));\n }\n\n var fs = format.charAt(0);\n switch (fs) {\n case 'd': case 'D':\n s = parseInt(Math.abs(number)).toString();\n if (precision != -1) {\n s = padLeft(s, precision, '0');\n }\n if (number < 0) {\n s = '-' + s;\n }\n break;\n case 'x': case 'X':\n s = parseInt(Math.abs(number)).toString(16);\n if (fs == 'X') {\n s = s.toUpperCase();\n }\n if (precision != -1) {\n s = padLeft(s, precision, '0');\n }\n break;\n case 'e': case 'E':\n if (precision == -1) {\n s = number.toExponential();\n }\n else {\n s = number.toExponential(precision);\n }\n if (fs == 'E') {\n s = s.toUpperCase();\n }\n break;\n case 'f': case 'F':\n case 'n': case 'N':\n if (precision == -1) {\n precision = nf.dd;\n }\n s = number.toFixed(precision).toString();\n if (precision && (nf.ds != '.')) {\n var index = s.indexOf('.');\n s = s.substr(0, index) + nf.ds + s.substr(index + 1);\n }\n if ((fs == 'n') || (fs == 'N')) {\n s = _commaFormatNumber(s, nf.gw, nf.ds, nf.gs);\n }\n break;\n case 'c': case 'C':\n if (precision == -1) {\n precision = nf.curDD;\n }\n s = Math.abs(number).toFixed(precision).toString();\n if (precision && (nf.curDS != '.')) {\n var index = s.indexOf('.');\n s = s.substr(0, index) + nf.curDS + s.substr(index + 1);\n }\n s = _commaFormatNumber(s, nf.curGW, nf.curDS, nf.curGS);\n if (number < 0) {\n s = String.format(culture, nf.curNP, s);\n }\n else {\n s = String.format(culture, nf.curPP, s);\n }\n break;\n case 'p': case 'P':\n if (precision == -1) {\n precision = nf.perDD;\n }\n s = (Math.abs(number) * 100.0).toFixed(precision).toString();\n if (precision && (nf.perDS != '.')) {\n var index = s.indexOf('.');\n s = s.substr(0, index) + nf.perDS + s.substr(index + 1);\n }\n s = _commaFormatNumber(s, nf.perGW, nf.perDS, nf.perGS);\n if (number < 0) {\n s = String.format(culture, nf.perNP, s);\n }\n else {\n s = String.format(culture, nf.perPP, s);\n }\n break;\n }\n\n return s;\n }\n\n var _dateFormatRE = /'.*?[^\\\\]'|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;\n\n _formatters['Date'] = function (dt, format, culture) {\n if (format == 'iso') {\n return dt.toISOString();\n }\n else if (format.charAt(0) == 'i') {\n var fnName = 'String';\n switch (format) {\n case 'id': fnName = 'DateString'; break;\n case 'it': fnName = 'TimeString'; break;\n }\n return culture == neutralCulture ? dt['to' + fnName]() : dt['toLocale' + fnName]();\n }\n\n var dtf = culture.dtf;\n\n if (format.length == 1) {\n switch (format) {\n case 'f': format = dtf.ld + ' ' + dtf.st; break;\n case 'F': format = dtf.dt; break;\n\n case 'd': format = dtf.sd; break;\n case 'D': format = dtf.ld; break;\n\n case 't': format = dtf.st; break;\n case 'T': format = dtf.lt; break;\n\n case 'g': format = dtf.sd + ' ' + dtf.st; break;\n case 'G': format = dtf.sd + ' ' + dtf.lt; break;\n\n case 'R': case 'r':\n dtf = neutralCulture.dtf;\n format = dtf.gmt;\n break;\n case 'u': format = dtf.uni; break;\n case 'U':\n format = dtf.dt;\n dt = new Date(dt.getUTCFullYear(), dt.getUTCMonth(), dt.getUTCDate(),\n dt.getUTCHours(), dt.getUTCMinutes(), dt.getUTCSeconds(), dt.getUTCMilliseconds());\n break;\n\n case 's': format = dtf.sort; break;\n }\n }\n\n if (format.charAt(0) == '%') {\n format = format.substr(1);\n }\n\n var sb = new StringBuilder();\n\n _dateFormatRE.lastIndex = 0;\n while (true) {\n var index = _dateFormatRE.lastIndex;\n var match = _dateFormatRE.exec(format);\n\n sb.append(format.slice(index, match ? match.index : format.length));\n if (!match) {\n break;\n }\n\n var fs = match[0];\n var part = fs;\n switch (fs) {\n case 'dddd':\n part = dtf.day[dt.getDay()];\n break;\n case 'ddd':\n part = dtf.sday[dt.getDay()];\n break;\n case 'dd':\n part = padLeft(dt.getDate().toString(), 2, '0');\n break;\n case 'd':\n part = dt.getDate();\n break;\n case 'MMMM':\n part = dtf.mon[dt.getMonth()];\n break;\n case 'MMM':\n part = dtf.smon[dt.getMonth()];\n break;\n case 'MM':\n part = padLeft((dt.getMonth() + 1).toString(), 2, '0');\n break;\n case 'M':\n part = (dt.getMonth() + 1);\n break;\n case 'yyyy':\n part = dt.getFullYear();\n break;\n case 'yy':\n part = padLeft((dt.getFullYear() % 100).toString(), 2, '0');\n break;\n case 'y':\n part = (dt.getFullYear() % 100);\n break;\n case 'h': case 'hh':\n part = dt.getHours() % 12;\n if (!part) {\n part = '12';\n }\n else if (fs == 'hh') {\n part = padLeft(part.toString(), 2, '0');\n }\n break;\n case 'HH':\n part = padLeft(dt.getHours().toString(), 2, '0');\n break;\n case 'H':\n part = dt.getHours();\n break;\n case 'mm':\n part = padLeft(dt.getMinutes().toString(), 2, '0');\n break;\n case 'm':\n part = dt.getMinutes();\n break;\n case 'ss':\n part = padLeft(dt.getSeconds().toString(), 2, '0');\n break;\n case 's':\n part = dt.getSeconds();\n break;\n case 't': case 'tt':\n part = (dt.getHours() < 12) ? dtf.am : dtf.pm;\n if (fs == 't') {\n part = part.charAt(0);\n }\n break;\n case 'fff':\n part = padLeft(dt.getMilliseconds().toString(), 3, '0');\n break;\n case 'ff':\n part = padLeft(dt.getMilliseconds().toString(), 3).substr(0, 2);\n break;\n case 'f':\n part = padLeft(dt.getMilliseconds().toString(), 3).charAt(0);\n break;\n case 'z':\n part = dt.getTimezoneOffset() / 60;\n part = ((part >= 0) ? '-' : '+') + Math.floor(Math.abs(part));\n break;\n case 'zz': case 'zzz':\n part = dt.getTimezoneOffset() / 60;\n part = ((part >= 0) ? '-' : '+') + padLeft(Math.floor(Math.abs(part)).toString(), 2, '0');\n if (fs == 'zzz') {\n part += dtf.ts + padLeft(Math.abs(dt.getTimezoneOffset() % 60).toString(), 2, '0');\n }\n break;\n default:\n if (part.charAt(0) == '\\'') {\n part = part.substr(1, part.length - 2).replace(/\\\\'/g, '\\'');\n }\n break;\n }\n sb.append(part);\n }\n\n return sb.toString();\n }\n\n // Type System\n\n var _modules = {};\n\n var _classMarker = 'class';\n var _interfaceMarker = 'interface';\n\n function createType(typeName, typeInfo, typeRegistry) {\n // The typeInfo is either an array of information representing\n // classes and interfaces, or an object representing enums and resources\n // or a function, representing a record factory.\n\n if (Array.isArray(typeInfo)) {\n var type = typeInfo[0];\n\n // A class is minimally the class type and an object representing\n // its prototype members, and optionally the base type, and references\n // to interfaces implemented by the class.\n if (typeInfo.length >= 2) {\n var baseType = typeInfo[2];\n if (baseType) {\n // Chain the prototype of the base type (using an anonymous type\n // in case the base class is not creatable, or has side-effects).\n var anonymous = function () { };\n anonymous.prototype = baseType.prototype;\n type.prototype = new anonymous();\n type.prototype.constructor = type;\n }\n\n // Add the type's prototype members if there are any\n typeInfo[1] && extend(type.prototype, typeInfo[1]);\n\n type.$base = baseType || Object;\n type.$interfaces = typeInfo.slice(3);\n type.$type = _classMarker;\n }\n else {\n type.$type = _interfaceMarker;\n }\n\n type.$name = typeName;\n return typeRegistry[typeName] = type;\n }\n\n return typeInfo;\n }\n\n function isClass(fn) {\n return fn.$type == _classMarker;\n }\n\n function isInterface(fn) {\n return fn.$type == _interfaceMarker;\n }\n\n function typeOf(instance) {\n var ctor;\n\n // NOTE: We have to catch exceptions because the constructor\n // cannot be looked up on native COM objects\n try {\n ctor = instance.constructor;\n }\n catch (ex) {\n }\n return ctor || Object;\n }\n\n function type(s) {\n var nsIndex = s.indexOf('.');\n var ns = nsIndex > 0 ? _modules[s.substr(0, nsIndex)] : global;\n var name = nsIndex > 0 ? s.substr(nsIndex + 1) : s;\n\n return ns ? ns[name] : null;\n }\n\n var _typeNames = [\n Number, 'Number',\n String, 'String',\n Boolean, 'Boolean',\n Array, 'Array',\n Date, 'Date',\n RegExp, 'RegExp',\n Function, 'Function'\n ];\n\n function typeName(type) {\n if (!(type instanceof Function)) {\n type = type.constructor;\n }\n if (type.$name) {\n return type.$name;\n }\n if (type.name) {\n return type.name;\n }\n for (var i = 0, len = _typeNames.length; i < len; i += 2) {\n if (type == _typeNames[i]) {\n return _typeNames[i + 1];\n }\n }\n return 'Object';\n }\n\n function canAssign(type, otherType) {\n // Checks if the specified type is equal to otherType,\n // or is a parent of otherType\n\n if ((type == Object) || (type == otherType)) {\n return true;\n }\n if (type.$type == _classMarker) {\n var baseType = otherType.$base;\n while (baseType) {\n if (type == baseType) {\n return true;\n }\n baseType = baseType.$base;\n }\n }\n else if (type.$type == _interfaceMarker) {\n var baseType = otherType;\n while (baseType) {\n var interfaces = baseType.$interfaces;\n if (interfaces && (interfaces.indexOf(type) >= 0)) {\n return true;\n }\n baseType = baseType.$base;\n }\n }\n return false;\n }\n\n function instanceOf(type, instance) {\n // Checks if the specified instance is of the specified type\n\n if (!isValue(instance)) {\n return false;\n }\n\n if ((type == Object) || (instance instanceof type)) {\n return true;\n }\n\n var instanceType = typeOf(instance);\n return canAssign(type, instanceType);\n }\n\n function canCast(instance, type) {\n return instanceOf(type, instance);\n }\n\n function safeCast(instance, type) {\n return instanceOf(type, instance) ? instance : null;\n }\n\n function ss_module(name, implementation, exports) {\n var registry = _modules[name] = { $name: name };\n\n if (implementation) {\n for (var typeName in implementation) {\n createType(typeName, implementation[typeName], registry);\n }\n }\n\n var api = {};\n if (exports) {\n for (var typeName in exports) {\n api[typeName] = createType(typeName, exports[typeName], registry);\n }\n }\n\n return api;\n }\n\n return extend(ss_module('ss', null, {\n IDisposable: [IDisposable],\n IEnumerable: [IEnumerable],\n IEnumerator: [IEnumerator],\n IObserver: [IObserver],\n IApplication: [IApplication],\n IContainer: [IContainer],\n IObjectFactory: [IObjectFactory],\n IEventManager: [IEventManager],\n IInitializable: [IInitializable],\n EventArgs: [EventArgs, {}],\n CancelEventArgs: [CancelEventArgs, {}, EventArgs],\n StringBuilder: [StringBuilder, StringBuilder$],\n Stack: [Stack, Stack$],\n Queue: [Queue, Queue$],\n Observable: [Observable, Observable$],\n ObservableCollection: [ObservableCollection, ObservableCollection$, null, IEnumerable],\n Task: [Task, Task$]\n }), {\n version: '0.8',\n\n isValue: isValue,\n value: value,\n extend: extend,\n keys: keys,\n keyCount: keyCount,\n keyExists: keyExists,\n clearKeys: clearKeys,\n enumerate: enumerate,\n array: toArray,\n remove: removeItem,\n boolean: parseBoolean,\n regexp: parseRegExp,\n number: parseNumber,\n date: parseDate,\n truncate: truncate,\n now: now,\n today: today,\n compareDates: compareDates,\n error: error,\n string: string,\n emptyString: emptyString,\n whitespace: whitespace,\n format: format,\n compareStrings: compareStrings,\n startsWith: startsWith,\n endsWith: endsWith,\n padLeft: padLeft,\n padRight: padRight,\n trim: trim,\n trimStart: trimStart,\n trimEnd: trimEnd,\n insertString: insertString,\n removeString: removeString,\n replaceString: replaceString,\n bind: bind,\n bindAdd: bindAdd,\n bindSub: bindSub,\n bindExport: bindExport,\n deferred: deferred,\n\n module: ss_module,\n modules: _modules,\n\n isClass: isClass,\n isInterface: isInterface,\n typeOf: typeOf,\n type: type,\n typeName: typeName,\n canCast: canCast,\n safeCast: safeCast,\n canAssign: canAssign,\n instanceOf: instanceOf,\n\n culture: {\n neutral: neutralCulture,\n current: currentCulture\n },\n\n fail: fail\n });\n}\n\nvar ss = _ss();\n// ScriptSharp generates a file that invokes define()\n\nvar _exports_object = null;\n\nfunction define(name, deps, factory) {\n _exports_object = factory(ss);\n _exports_object.ss = ss;\n\n // Gross hack to get Enums.parse() and Enums.toXml() to work. See\n // wwtlib/Util.cs for the other half of this.\n _exports_object.Enums._wwtlib = _exports_object;\n}\n\n\"use strict\";\n\ndefine('wwtlib', ['ss'], function(ss) {\n var $global = this;\n\n // DAY_OF_WEEK\r\n\r\n var DAY_OF_WEEK = {\r\n SUNDAY: 0, \r\n MONDAY: 1, \r\n TUESDAY: 2, \r\n WEDNESDAY: 3, \r\n THURSDAY: 4, \r\n FRIDAY: 5, \r\n SATURDAY: 6\r\n };\r\n\r\n\r\n // EO\r\n\r\n var EO = {\r\n SUN: 0, \r\n MERCURY: 1, \r\n VENUS: 2, \r\n MARS: 3, \r\n JUPITER: 4, \r\n SATURN: 5, \r\n URANUS: 6, \r\n NEPTUNE: 7, \r\n PLUTO: 8\r\n };\r\n\r\n\r\n // wwtlib.ScaleTypes\r\n\r\n var ScaleTypes = {\r\n linear: 0, \r\n log: 1, \r\n power: 2, \r\n squareRoot: 3, \r\n histogramEqualization: 4\r\n };\r\n\r\n\r\n // wwtlib.URLRewriteMode\r\n\r\n var URLRewriteMode = {\r\n asIfAbsolute: 0, \r\n originRelative: 1\r\n };\r\n\r\n\r\n // wwtlib.SolarSystemObjects\r\n\r\n var SolarSystemObjects = {\r\n sun: 0, \r\n mercury: 1, \r\n venus: 2, \r\n mars: 3, \r\n jupiter: 4, \r\n saturn: 5, \r\n uranus: 6, \r\n neptune: 7, \r\n pluto: 8, \r\n moon: 9, \r\n io: 10, \r\n europa: 11, \r\n ganymede: 12, \r\n callisto: 13, \r\n ioShadow: 14, \r\n europaShadow: 15, \r\n ganymedeShadow: 16, \r\n callistoShadow: 17, \r\n sunEclipsed: 18, \r\n earth: 19, \r\n custom: 20, \r\n undefined: 65536\r\n };\r\n\r\n\r\n // wwtlib.InterpolationType\r\n\r\n var InterpolationType = {\r\n linear: 0, \r\n easeIn: 1, \r\n easeOut: 2, \r\n easeInOut: 3, \r\n exponential: 4, \r\n defaultV: 5\r\n };\r\n\r\n\r\n // wwtlib.PointType\r\n\r\n var PointType = {\r\n move: 0, \r\n line: 1, \r\n dash: 2, \r\n start: 3\r\n };\r\n\r\n\r\n // wwtlib.LocationHint\r\n\r\n var LocationHint = {\r\n slash: 0, \r\n backslash: 1, \r\n top: 2\r\n };\r\n\r\n\r\n // wwtlib.FolderGroup\r\n\r\n var FolderGroup = {\r\n explorer: 0, \r\n tour: 1, \r\n search: 2, \r\n constellation: 3, \r\n view: 4, \r\n goTo: 5, \r\n community: 6, \r\n context: 7, \r\n voTable: 8, \r\n imageStack: 9\r\n };\r\n\r\n\r\n // wwtlib.FolderRefreshType\r\n\r\n var FolderRefreshType = {\r\n interval: 0, \r\n conditionalGet: 1, \r\n viewChange: 2\r\n };\r\n\r\n\r\n // wwtlib.FolderType\r\n\r\n var FolderType = {\r\n earth: 0, \r\n planet: 1, \r\n sky: 2, \r\n panorama: 3\r\n };\r\n\r\n\r\n // wwtlib.ThumbnailSize\r\n\r\n var ThumbnailSize = {\r\n small: 0, \r\n big: 1\r\n };\r\n\r\n\r\n // wwtlib.CullMode\r\n\r\n var CullMode = {\r\n none: 0, \r\n counterClockwise: 2, \r\n clockwise: 1\r\n };\r\n\r\n\r\n // wwtlib.PointScaleTypes\r\n\r\n var PointScaleTypes = {\r\n linear: 0, \r\n power: 1, \r\n log: 2, \r\n constant: 3, \r\n stellarMagnitude: 4\r\n };\r\n\r\n\r\n // wwtlib.ProjectionType\r\n\r\n var ProjectionType = {\r\n mercator: 0, \r\n equirectangular: 1, \r\n tangent: 2, \r\n tan: 2, \r\n toast: 3, \r\n spherical: 4, \r\n skyImage: 5, \r\n plotted: 6, \r\n healpix: 7\r\n };\r\n\r\n\r\n // wwtlib.ImageSetType\r\n\r\n var ImageSetType = {\r\n earth: 0, \r\n planet: 1, \r\n sky: 2, \r\n panorama: 3, \r\n solarSystem: 4, \r\n sandbox: 5\r\n };\r\n\r\n\r\n // wwtlib.BandPass\r\n\r\n var BandPass = {\r\n gamma: 0, \r\n xRay: 1, \r\n ultraviolet: 2, \r\n visible: 3, \r\n hydrogenAlpha: 4, \r\n IR: 4, \r\n microwave: 5, \r\n radio: 6, \r\n visibleNight: 6\r\n };\r\n\r\n\r\n // wwtlib.Classification\r\n\r\n var Classification = {\r\n star: 1, \r\n supernova: 2, \r\n blackHole: 4, \r\n neutronStar: 8, \r\n doubleStar: 16, \r\n multipleStars: 32, \r\n asterism: 64, \r\n constellation: 128, \r\n openCluster: 256, \r\n globularCluster: 512, \r\n nebulousCluster: 1024, \r\n nebula: 2048, \r\n emissionNebula: 4096, \r\n planetaryNebula: 8192, \r\n reflectionNebula: 16384, \r\n darkNebula: 32768, \r\n giantMolecularCloud: 65536, \r\n supernovaRemnant: 131072, \r\n interstellarDust: 262144, \r\n quasar: 524288, \r\n galaxy: 1048576, \r\n spiralGalaxy: 2097152, \r\n irregularGalaxy: 4194304, \r\n ellipticalGalaxy: 8388608, \r\n knot: 16777216, \r\n plateDefect: 33554432, \r\n clusterOfGalaxies: 67108864, \r\n otherNGC: 134217728, \r\n unidentified: 268435456, \r\n solarSystem: 536870912, \r\n unfiltered: 1073741823, \r\n stellar: 63, \r\n stellarGroupings: 2032, \r\n nebulae: 523264, \r\n galactic: 133693440, \r\n other: 436207616\r\n };\r\n\r\n\r\n // wwtlib.DataTypes\r\n\r\n var DataTypes = {\r\n byteT: 0, \r\n int16T: 1, \r\n int32T: 2, \r\n floatT: 3, \r\n doubleT: 4, \r\n none: 5\r\n };\r\n\r\n\r\n // wwtlib.AltUnits\r\n\r\n var AltUnits = {\r\n meters: 1, \r\n feet: 2, \r\n inches: 3, \r\n miles: 4, \r\n kilometers: 5, \r\n astronomicalUnits: 6, \r\n lightYears: 7, \r\n parsecs: 8, \r\n megaParsecs: 9, \r\n custom: 10\r\n };\r\n\r\n\r\n // wwtlib.FadeType\r\n\r\n var FadeType = {\r\n fadeIn: 1, \r\n fadeOut: 2, \r\n both: 3, \r\n none: 4\r\n };\r\n\r\n\r\n // wwtlib.ReferenceFrames\r\n\r\n var ReferenceFrames = {\r\n sky: 0, \r\n ecliptic: 1, \r\n galactic: 2, \r\n sun: 3, \r\n mercury: 4, \r\n venus: 5, \r\n earth: 6, \r\n mars: 7, \r\n jupiter: 8, \r\n saturn: 9, \r\n uranus: 10, \r\n neptune: 11, \r\n pluto: 12, \r\n moon: 13, \r\n io: 14, \r\n europa: 15, \r\n ganymede: 16, \r\n callisto: 17, \r\n custom: 18, \r\n identity: 19, \r\n sandbox: 20\r\n };\r\n\r\n\r\n // wwtlib.ReferenceFrameTypes\r\n\r\n var ReferenceFrameTypes = {\r\n fixedSherical: 0, \r\n orbital: 1, \r\n trajectory: 2, \r\n synodic: 3\r\n };\r\n\r\n\r\n // wwtlib.CoordinatesTypes\r\n\r\n var CoordinatesTypes = {\r\n spherical: 0, \r\n rectangular: 1, \r\n orbital: 2\r\n };\r\n\r\n\r\n // wwtlib.AltTypes\r\n\r\n var AltTypes = {\r\n depth: 0, \r\n altitude: 1, \r\n distance: 2, \r\n seaLevel: 3, \r\n terrain: 4\r\n };\r\n\r\n\r\n // wwtlib.MarkerMixes\r\n\r\n var MarkerMixes = {\r\n same_For_All: 0\r\n };\r\n\r\n\r\n // wwtlib.ColorMaps\r\n\r\n var ColorMaps = {\r\n same_For_All: 0, \r\n group_by_Values: 2, \r\n per_Column_Literal: 3\r\n };\r\n\r\n\r\n // wwtlib.PlotTypes\r\n\r\n var PlotTypes = {\r\n gaussian: 0, \r\n point: 1, \r\n circle: 2, \r\n square: 3, \r\n pushPin: 4, \r\n custom: 5\r\n };\r\n\r\n\r\n // wwtlib.MarkerScales\r\n\r\n var MarkerScales = {\r\n screen: 0, \r\n world: 1\r\n };\r\n\r\n\r\n // wwtlib.RAUnits\r\n\r\n var RAUnits = {\r\n hours: 0, \r\n degrees: 1\r\n };\r\n\r\n\r\n // wwtlib.Primitives\r\n\r\n var Primitives = {\r\n voBoolean: 1, \r\n voBit: 2, \r\n voUnsignedByte: 3, \r\n voShort: 4, \r\n voInt: 5, \r\n voLong: 6, \r\n voChar: 7, \r\n voUnicodeChar: 8, \r\n voFloat: 9, \r\n voDouble: 10, \r\n voFloatComplex: 11, \r\n voDoubleComplex: 12, \r\n voUndefined: 13\r\n };\r\n\r\n\r\n // wwtlib.Alignment\r\n\r\n var Alignment = {\r\n center: 0, \r\n left: 1\r\n };\r\n\r\n\r\n // wwtlib.StockSkyOverlayTypes\r\n\r\n var StockSkyOverlayTypes = {\r\n empty: 0, \r\n equatorialGrid: 1, \r\n equatorialGridText: 2, \r\n galacticGrid: 3, \r\n galacticGridText: 4, \r\n eclipticGrid: 5, \r\n eclipticGridText: 6, \r\n eclipticOverview: 7, \r\n eclipticOverviewText: 8, \r\n precessionChart: 9, \r\n altAzGrid: 10, \r\n altAzGridText: 11, \r\n constellationFigures: 12, \r\n constellationBoundaries: 13, \r\n constellationFocusedOnly: 14, \r\n constellationNames: 15, \r\n constellationPictures: 16, \r\n fadeToBlack: 17, \r\n fadeToLogo: 18, \r\n fadeToGradient: 19, \r\n screenBroadcast: 20, \r\n fadeRemoteOnly: 21, \r\n skyGrids: 22, \r\n constellations: 23, \r\n solarSystemStars: 24, \r\n solarSystemMilkyWay: 25, \r\n solarSystemCosmos: 26, \r\n solarSystemOrbits: 27, \r\n solarSystemPlanets: 28, \r\n solarSystemAsteroids: 29, \r\n solarSystemLighting: 30, \r\n solarSystemMinorOrbits: 31, \r\n showEarthCloudLayer: 32, \r\n showElevationModel: 33, \r\n showAtmosphere: 34, \r\n multiResSolarSystemBodies: 35, \r\n auroraBorialis: 36, \r\n earthCutAway: 37, \r\n showSolarSystem: 38, \r\n clouds8k: 39, \r\n filedOfView: 40, \r\n showISSModel: 41, \r\n solarSystemCMB: 42, \r\n mpcZone1: 43, \r\n mpcZone2: 44, \r\n mpcZone3: 45, \r\n mpcZone4: 46, \r\n mpcZone5: 47, \r\n mpcZone6: 48, \r\n mpcZone7: 49, \r\n orbitFilters: 50\r\n };\r\n\r\n\r\n // wwtlib.OverlayAnchor\r\n\r\n var OverlayAnchor = {\r\n sky: 0, \r\n screen: 1\r\n };\r\n\r\n\r\n // wwtlib.AudioType\r\n\r\n var AudioType = {\r\n music: 0, \r\n voice: 1\r\n };\r\n\r\n\r\n // wwtlib.ShapeType\r\n\r\n var ShapeType = {\r\n circle: 0, \r\n rectagle: 1, \r\n star: 2, \r\n donut: 3, \r\n arrow: 4, \r\n line: 5, \r\n openRectagle: 6\r\n };\r\n\r\n\r\n // wwtlib.LoopTypes\r\n\r\n var LoopTypes = {\r\n loop: 0, \r\n upDown: 1, \r\n down: 2, \r\n upDownOnce: 3, \r\n once: 4, \r\n begin: 5, \r\n end: 6\r\n };\r\n\r\n\r\n // wwtlib.SelectionAnchor\r\n\r\n var SelectionAnchor = {\r\n topLeft: 0, \r\n top: 1, \r\n topRight: 2, \r\n right: 3, \r\n bottomRight: 4, \r\n bottom: 5, \r\n bottomLeft: 6, \r\n left: 7, \r\n rotate: 8, \r\n move: 9, \r\n center: 10, \r\n none: 11\r\n };\r\n\r\n\r\n // wwtlib.TextBorderStyle\r\n\r\n var TextBorderStyle = {\r\n none: 0, \r\n tight: 1, \r\n small: 2, \r\n medium: 3, \r\n large: 4\r\n };\r\n\r\n\r\n // wwtlib.UserLevel\r\n\r\n var UserLevel = {\r\n beginner: 0, \r\n intermediate: 1, \r\n advanced: 2, \r\n educator: 3, \r\n professional: 4\r\n };\r\n\r\n\r\n // wwtlib.TransitionType\r\n\r\n var TransitionType = {\r\n slew: 0, \r\n crossFade: 1, \r\n crossCut: 2, \r\n fadeOutIn: 3, \r\n fadeIn: 4, \r\n fadeOut: 5\r\n };\r\n\r\n\r\n // wwtlib.Keys\r\n\r\n var Keys = {\r\n modifiers: -65536, \r\n none: 0, \r\n lButton: 1, \r\n rButton: 2, \r\n cancel: 3, \r\n mButton: 4, \r\n xButton1: 5, \r\n xButton2: 6, \r\n back: 8, \r\n tab: 9, \r\n lineFeed: 10, \r\n clearKey: 12, \r\n returnKey: 13, \r\n enter: 13, \r\n shiftKey: 16, \r\n controlKey: 17, \r\n menu: 18, \r\n pause: 19, \r\n capital: 20, \r\n capsLock: 20, \r\n kanaMode: 21, \r\n hanguelMode: 21, \r\n hangulMode: 21, \r\n junjaMode: 23, \r\n finalMode: 24, \r\n hanjaMode: 25, \r\n kanjiMode: 25, \r\n escape: 27, \r\n imeConvert: 28, \r\n imeNonconvert: 29, \r\n imeAccept: 30, \r\n imeAceept: 30, \r\n imeModeChange: 31, \r\n space: 32, \r\n prior: 33, \r\n pageUp: 33, \r\n next: 34, \r\n pageDown: 34, \r\n end: 35, \r\n home: 36, \r\n left: 37, \r\n up: 38, \r\n right: 39, \r\n down: 40, \r\n select: 41, \r\n print: 42, \r\n execute: 43, \r\n snapshot: 44, \r\n printScreen: 44, \r\n insertKey: 45, \r\n deleteKey: 46, \r\n help: 47, \r\n d0: 48, \r\n d1: 49, \r\n d2: 50, \r\n d3: 51, \r\n d4: 52, \r\n d5: 53, \r\n d6: 54, \r\n d7: 55, \r\n d8: 56, \r\n d9: 57, \r\n a: 65, \r\n b: 66, \r\n c: 67, \r\n d: 68, \r\n e: 69, \r\n f: 70, \r\n g: 71, \r\n h: 72, \r\n i: 73, \r\n j: 74, \r\n k: 75, \r\n l: 76, \r\n m: 77, \r\n n: 78, \r\n o: 79, \r\n p: 80, \r\n q: 81, \r\n r: 82, \r\n s: 83, \r\n t: 84, \r\n u: 85, \r\n v: 86, \r\n w: 87, \r\n x: 88, \r\n y: 89, \r\n z: 90, \r\n lWin: 91, \r\n rWin: 92, \r\n apps: 93, \r\n sleep: 95, \r\n numPad0: 96, \r\n numPad1: 97, \r\n numPad2: 98, \r\n numPad3: 99, \r\n numPad4: 100, \r\n numPad5: 101, \r\n numPad6: 102, \r\n numPad7: 103, \r\n numPad8: 104, \r\n numPad9: 105, \r\n multiply: 106, \r\n add: 107, \r\n separator: 108, \r\n subtract: 109, \r\n decimal: 110, \r\n divide: 111, \r\n f1: 112, \r\n f2: 113, \r\n f3: 114, \r\n f4: 115, \r\n f5: 116, \r\n f6: 117, \r\n f7: 118, \r\n f8: 119, \r\n f9: 120, \r\n f10: 121, \r\n f11: 122, \r\n f12: 123, \r\n f13: 124, \r\n f14: 125, \r\n f15: 126, \r\n f16: 127, \r\n f17: 128, \r\n f18: 129, \r\n f19: 130, \r\n f20: 131, \r\n f21: 132, \r\n f22: 133, \r\n f23: 134, \r\n f24: 135, \r\n numLock: 144, \r\n scroll: 145, \r\n lShiftKey: 160, \r\n rShiftKey: 161, \r\n lControlKey: 162, \r\n rControlKey: 163, \r\n lMenu: 164, \r\n rMenu: 165, \r\n browserBack: 166, \r\n browserForward: 167, \r\n browserRefresh: 168, \r\n browserStop: 169, \r\n browserSearch: 170, \r\n browserFavorites: 171, \r\n browserHome: 172, \r\n volumeMute: 173, \r\n volumeDown: 174, \r\n volumeUp: 175, \r\n mediaNextTrack: 176, \r\n mediaPreviousTrack: 177, \r\n mediaStop: 178, \r\n mediaPlayPause: 179, \r\n launchMail: 180, \r\n selectMedia: 181, \r\n launchApplication1: 182, \r\n launchApplication2: 183, \r\n oemSemicolon: 186, \r\n oem1: 186, \r\n oemplus: 187, \r\n oemcomma: 188, \r\n oemMinus: 189, \r\n oemPeriod: 190, \r\n oemQuestion: 191, \r\n oem2: 191, \r\n oemtilde: 192, \r\n oem3: 192, \r\n oemOpenBrackets: 219, \r\n oem4: 219, \r\n oemPipe: 220, \r\n oem5: 220, \r\n oemCloseBrackets: 221, \r\n oem6: 221, \r\n oemQuotes: 222, \r\n oem7: 222, \r\n oem8: 223, \r\n oemBackslash: 226, \r\n oem102: 226, \r\n processKey: 229, \r\n packet: 231, \r\n attn: 246, \r\n crsel: 247, \r\n exsel: 248, \r\n eraseEof: 249, \r\n play: 250, \r\n zoom: 251, \r\n noName: 252, \r\n pa1: 253, \r\n oemClear: 254, \r\n keyCode: 65535, \r\n shift: 65536, \r\n control: 131072, \r\n alt: 262144\r\n };\r\n\r\n\r\n // wwtlib.DialogResult\r\n\r\n var DialogResult = {\r\n OK: 1\r\n };\r\n\r\n\r\n // wwtlib.Formatting\r\n\r\n var Formatting = {\r\n indented: 1\r\n };\r\n\r\n\r\n // wwtlib.StateType\r\n\r\n var StateType = {\r\n pending: 0, \r\n received: 1, \r\n error: 2\r\n };\r\n\r\n\r\n // wwtlib.IFolder\r\n\r\n function IFolder() { }\r\n\r\n\r\n // wwtlib.IThumbnail\r\n\r\n function IThumbnail() { }\r\n\r\n\r\n // wwtlib.IPlace\r\n\r\n function IPlace() { }\r\n\r\n\r\n // wwtlib.IUiController\r\n\r\n function IUiController() { }\r\n\r\n\r\n // wwtlib.IViewMover\r\n\r\n function IViewMover() { }\r\n\r\n\r\n // wwtlib.IUIServicesCallbacks\r\n\r\n function IUIServicesCallbacks() { }\r\n\r\n\r\n // wwtlib.ISettings\r\n\r\n function ISettings() { }\r\n\r\n\r\n // wwtlib.IUndoStep\r\n\r\n function IUndoStep() { }\r\n\r\n\r\n // Imports\r\n\r\n function Imports() {\r\n }\r\n\r\n\r\n // GFX\r\n\r\n function GFX() {\r\n }\r\n\r\n\r\n // ABR\r\n\r\n function ABR() {\r\n }\r\n ABR.earthVelocity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var L2 = 3.1761467 + 1021.3285546 * T;\r\n var L3 = 1.7534703 + 628.3075849 * T;\r\n var L4 = 6.2034809 + 334.0612431 * T;\r\n var L5 = 0.5995465 + 52.9690965 * T;\r\n var L6 = 0.8740168 + 21.3299095 * T;\r\n var L7 = 5.4812939 + 7.4781599 * T;\r\n var L8 = 5.3118863 + 3.8133036 * T;\r\n var Ldash = 3.8103444 + 8399.6847337 * T;\r\n var D = 5.1984667 + 7771.3771486 * T;\r\n var Mdash = 2.3555559 + 8328.6914289 * T;\r\n var F = 1.6279052 + 8433.4661601 * T;\r\n var velocity = new C3D();\r\n var nAberrationCoefficients = GFX.g_ACft.length;\r\n for (var i = 0; i < nAberrationCoefficients; i++) {\r\n var Argument = GFX.g_ACft[i].l2 * L2 + GFX.g_ACft[i].l3 * L3 + GFX.g_ACft[i].l4 * L4 + GFX.g_ACft[i].l5 * L5 + GFX.g_ACft[i].l6 * L6 + GFX.g_ACft[i].l7 * L7 + GFX.g_ACft[i].l8 * L8 + GFX.g_ACft[i].ldash * Ldash + GFX.g_ACft[i].d * D + GFX.g_ACft[i].mdash * Mdash + GFX.g_ACft[i].f * F;\r\n velocity.x += (GFX.g_ACft[i].xsin + GFX.g_ACft[i].xsint * T) * Math.sin(Argument);\r\n velocity.x += (GFX.g_ACft[i].xcos + GFX.g_ACft[i].xcost * T) * Math.cos(Argument);\r\n velocity.y += (GFX.g_ACft[i].ysin + GFX.g_ACft[i].ysint * T) * Math.sin(Argument);\r\n velocity.y += (GFX.g_ACft[i].ycos + GFX.g_ACft[i].ycost * T) * Math.cos(Argument);\r\n velocity.z += (GFX.g_ACft[i].zsin + GFX.g_ACft[i].zsint * T) * Math.sin(Argument);\r\n velocity.z += (GFX.g_ACft[i].zcos + GFX.g_ACft[i].zcost * T) * Math.cos(Argument);\r\n }\r\n return velocity;\r\n };\r\n ABR.eclipticAberration = function(Lambda, Beta, JD) {\r\n var aberration = new COR();\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var e = 0.016708634 - 4.2037E-05 * T - 1.267E-07 * Tsquared;\r\n var pi = 102.93735 + 1.71946 * T + 0.00046 * Tsquared;\r\n var k = 20.49552;\r\n var SunLongitude = CAASun.geometricEclipticLongitude(JD);\r\n pi = CT.d2R(pi);\r\n Lambda = CT.d2R(Lambda);\r\n Beta = CT.d2R(Beta);\r\n SunLongitude = CT.d2R(SunLongitude);\r\n aberration.x = (-k * Math.cos(SunLongitude - Lambda) + e * k * Math.cos(pi - Lambda)) / Math.cos(Beta) / 3600;\r\n aberration.y = -k * Math.sin(Beta) * (Math.sin(SunLongitude - Lambda) - e * Math.sin(pi - Lambda)) / 3600;\r\n return aberration;\r\n };\r\n ABR.equatorialAberration = function(Alpha, Delta, JD) {\r\n Alpha = CT.d2R(Alpha * 15);\r\n Delta = CT.d2R(Delta);\r\n var cosAlpha = Math.cos(Alpha);\r\n var sinAlpha = Math.sin(Alpha);\r\n var cosDelta = Math.cos(Delta);\r\n var sinDelta = Math.sin(Delta);\r\n var velocity = ABR.earthVelocity(JD);\r\n var aberration = new COR();\r\n aberration.x = CT.r2H((velocity.y * cosAlpha - velocity.x * sinAlpha) / (17314463350 * cosDelta));\r\n aberration.y = CT.r2D(-(((velocity.x * cosAlpha + velocity.y * sinAlpha) * sinDelta - velocity.z * cosDelta) / 17314463350));\r\n return aberration;\r\n };\r\n var ABR$ = {\r\n\r\n };\r\n\r\n\r\n // ACFT\r\n\r\n function ACFT(L2, L3, L4, L5, L6, L7, L8, Ldash, D, Mdash, F, xsin, xsint, xcos, xcost, ysin, ysint, ycos, ycost, zsin, zsint, zcos, zcost) {\r\n this.l2 = 0;\r\n this.l3 = 0;\r\n this.l4 = 0;\r\n this.l5 = 0;\r\n this.l6 = 0;\r\n this.l7 = 0;\r\n this.l8 = 0;\r\n this.ldash = 0;\r\n this.d = 0;\r\n this.mdash = 0;\r\n this.f = 0;\r\n this.xsin = 0;\r\n this.xsint = 0;\r\n this.xcos = 0;\r\n this.xcost = 0;\r\n this.ysin = 0;\r\n this.ysint = 0;\r\n this.ycos = 0;\r\n this.ycost = 0;\r\n this.zsin = 0;\r\n this.zsint = 0;\r\n this.zcos = 0;\r\n this.zcost = 0;\r\n this.l2 = L2;\r\n this.l3 = L3;\r\n this.l4 = L4;\r\n this.l5 = L5;\r\n this.l6 = L6;\r\n this.l7 = L7;\r\n this.l8 = L8;\r\n this.ldash = Ldash;\r\n this.d = D;\r\n this.mdash = Mdash;\r\n this.f = F;\r\n this.xsin = xsin;\r\n this.xsint = xsint;\r\n this.xcos = xcos;\r\n this.xcost = xcost;\r\n this.ysin = ysin;\r\n this.ysint = ysint;\r\n this.ycos = ycos;\r\n this.ycost = ycost;\r\n this.zsin = zsin;\r\n this.zsint = zsint;\r\n this.zcos = zcos;\r\n this.zcost = zcost;\r\n }\r\n var ACFT$ = {\r\n\r\n };\r\n\r\n\r\n // ASEP\r\n\r\n function ASEP() {\r\n }\r\n ASEP.separation = function(Alpha1, Delta1, Alpha2, Delta2) {\r\n Delta1 = CT.d2R(Delta1);\r\n Delta2 = CT.d2R(Delta2);\r\n Alpha1 = CT.h2R(Alpha1);\r\n Alpha2 = CT.h2R(Alpha2);\r\n var x = Math.cos(Delta1) * Math.sin(Delta2) - Math.sin(Delta1) * Math.cos(Delta2) * Math.cos(Alpha2 - Alpha1);\r\n var y = Math.cos(Delta2) * Math.sin(Alpha2 - Alpha1);\r\n var z = Math.sin(Delta1) * Math.sin(Delta2) + Math.cos(Delta1) * Math.cos(Delta2) * Math.cos(Alpha2 - Alpha1);\r\n var vvalue = Math.atan2(Math.sqrt(x * x + y * y), z);\r\n vvalue = CT.r2D(vvalue);\r\n if (vvalue < 0) {\r\n vvalue += 180;\r\n }\r\n return vvalue;\r\n };\r\n ASEP.positionAngle = function(alpha1, delta1, alpha2, delta2) {\r\n var Alpha1;\r\n var Delta1;\r\n var Alpha2;\r\n var Delta2;\r\n Delta1 = CT.d2R(delta1);\r\n Delta2 = CT.d2R(delta2);\r\n Alpha1 = CT.h2R(alpha1);\r\n Alpha2 = CT.h2R(alpha2);\r\n var DeltaAlpha = Alpha1 - Alpha2;\r\n var demoninator = Math.cos(Delta2) * Math.tan(Delta1) - Math.sin(Delta2) * Math.cos(DeltaAlpha);\r\n var numerator = Math.sin(DeltaAlpha);\r\n var vvalue = Math.atan2(numerator, demoninator);\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n ASEP.distanceFromGreatArc = function(Alpha1, Delta1, Alpha2, Delta2, Alpha3, Delta3) {\r\n Delta1 = CT.d2R(Delta1);\r\n Delta2 = CT.d2R(Delta2);\r\n Delta3 = CT.d2R(Delta3);\r\n Alpha1 = CT.h2R(Alpha1);\r\n Alpha2 = CT.h2R(Alpha2);\r\n Alpha3 = CT.h2R(Alpha3);\r\n var X1 = Math.cos(Delta1) * Math.cos(Alpha1);\r\n var X2 = Math.cos(Delta2) * Math.cos(Alpha2);\r\n var Y1 = Math.cos(Delta1) * Math.sin(Alpha1);\r\n var Y2 = Math.cos(Delta2) * Math.sin(Alpha2);\r\n var Z1 = Math.sin(Delta1);\r\n var Z2 = Math.sin(Delta2);\r\n var A = Y1 * Z2 - Z1 * Y2;\r\n var B = Z1 * X2 - X1 * Z2;\r\n var C = X1 * Y2 - Y1 * X2;\r\n var m = Math.tan(Alpha3);\r\n var n = Math.tan(Delta3) / Math.cos(Alpha3);\r\n var vvalue = Math.asin((A + B * m + C * n) / (Math.sqrt(A * A + B * B + C * C) * Math.sqrt(1 + m * m + n * n)));\r\n vvalue = CT.r2D(vvalue);\r\n if (vvalue < 0) {\r\n vvalue = Math.abs(vvalue);\r\n }\r\n return vvalue;\r\n };\r\n var ASEP$ = {\r\n\r\n };\r\n\r\n\r\n // COR\r\n\r\n function COR() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.x = 0;\r\n this.y = 0;\r\n }\r\n COR.create = function(x, y) {\r\n var item = new COR();\r\n item.x = x;\r\n item.y = y;\r\n return item;\r\n };\r\n var COR$ = {\r\n\r\n };\r\n\r\n\r\n // C3D\r\n\r\n function C3D() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n }\r\n C3D.create = function(x, y, z) {\r\n var item = new C3D();\r\n item.x = x;\r\n item.y = y;\r\n item.z = z;\r\n return item;\r\n };\r\n var C3D$ = {\r\n\r\n };\r\n\r\n\r\n // CT\r\n\r\n function CT() {\r\n }\r\n CT.eq2Ec = function(Alpha, Delta, Epsilon) {\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n Epsilon = CT.d2R(Epsilon);\r\n var Ecliptic = new COR();\r\n Ecliptic.x = CT.r2D(Math.atan2(Math.sin(Alpha) * Math.cos(Epsilon) + Math.tan(Delta) * Math.sin(Epsilon), Math.cos(Alpha)));\r\n if (Ecliptic.x < 0) {\r\n Ecliptic.x += 360;\r\n }\r\n Ecliptic.y = CT.r2D(Math.asin(Math.sin(Delta) * Math.cos(Epsilon) - Math.cos(Delta) * Math.sin(Epsilon) * Math.sin(Alpha)));\r\n return Ecliptic;\r\n };\r\n CT.ec2Eq = function(Lambda, Beta, Epsilon) {\r\n Lambda = CT.d2R(Lambda);\r\n Beta = CT.d2R(Beta);\r\n Epsilon = CT.d2R(Epsilon);\r\n var Equatorial = new COR();\r\n Equatorial.x = CT.r2H(Math.atan2(Math.sin(Lambda) * Math.cos(Epsilon) - Math.tan(Beta) * Math.sin(Epsilon), Math.cos(Lambda)));\r\n if (Equatorial.x < 0) {\r\n Equatorial.x += 24;\r\n }\r\n Equatorial.y = CT.r2D(Math.asin(Math.sin(Beta) * Math.cos(Epsilon) + Math.cos(Beta) * Math.sin(Epsilon) * Math.sin(Lambda)));\r\n return Equatorial;\r\n };\r\n CT.eq2H = function(LocalHourAngle, Delta, Latitude) {\r\n LocalHourAngle = CT.h2R(LocalHourAngle);\r\n Delta = CT.d2R(Delta);\r\n Latitude = CT.d2R(Latitude);\r\n var Horizontal = new COR();\r\n Horizontal.x = CT.r2D(Math.atan2(Math.sin(LocalHourAngle), Math.cos(LocalHourAngle) * Math.sin(Latitude) - Math.tan(Delta) * Math.cos(Latitude)));\r\n if (Horizontal.x < 0) {\r\n Horizontal.x += 360;\r\n }\r\n Horizontal.y = CT.r2D(Math.asin(Math.sin(Latitude) * Math.sin(Delta) + Math.cos(Latitude) * Math.cos(Delta) * Math.cos(LocalHourAngle)));\r\n return Horizontal;\r\n };\r\n CT.h2Eq = function(Azimuth, Altitude, Latitude) {\r\n Azimuth = CT.d2R(Azimuth);\r\n Altitude = CT.d2R(Altitude);\r\n Latitude = CT.d2R(Latitude);\r\n var Equatorial = new COR();\r\n Equatorial.x = CT.r2H(Math.atan2(Math.sin(Azimuth), Math.cos(Azimuth) * Math.sin(Latitude) + Math.tan(Altitude) * Math.cos(Latitude)));\r\n if (Equatorial.x < 0) {\r\n Equatorial.x += 24;\r\n }\r\n Equatorial.y = CT.r2D(Math.asin(Math.sin(Latitude) * Math.sin(Altitude) - Math.cos(Latitude) * Math.cos(Altitude) * Math.cos(Azimuth)));\r\n return Equatorial;\r\n };\r\n CT.eq2G = function(Alpha, Delta) {\r\n Alpha = 192.25 - CT.h2D(Alpha);\r\n Alpha = CT.d2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n var Galactic = new COR();\r\n Galactic.x = CT.r2D(Math.atan2(Math.sin(Alpha), Math.cos(Alpha) * Math.sin(CT.d2R(27.4)) - Math.tan(Delta) * Math.cos(CT.d2R(27.4))));\r\n Galactic.x = 303 - Galactic.x;\r\n if (Galactic.x >= 360) {\r\n Galactic.x -= 360;\r\n }\r\n Galactic.y = CT.r2D(Math.asin(Math.sin(Delta) * Math.sin(CT.d2R(27.4)) + Math.cos(Delta) * Math.cos(CT.d2R(27.4)) * Math.cos(Alpha)));\r\n return Galactic;\r\n };\r\n CT.g2Eq = function(l, b) {\r\n l -= 123;\r\n l = CT.d2R(l);\r\n b = CT.d2R(b);\r\n var Equatorial = new COR();\r\n Equatorial.x = CT.r2D(Math.atan2(Math.sin(l), Math.cos(l) * Math.sin(CT.d2R(27.4)) - Math.tan(b) * Math.cos(CT.d2R(27.4))));\r\n Equatorial.x += 12.25;\r\n if (Equatorial.x < 0) {\r\n Equatorial.x += 360;\r\n }\r\n Equatorial.x = CT.d2H(Equatorial.x);\r\n Equatorial.y = CT.r2D(Math.asin(Math.sin(b) * Math.sin(CT.d2R(27.4)) + Math.cos(b) * Math.cos(CT.d2R(27.4)) * Math.cos(l)));\r\n return Equatorial;\r\n };\r\n CT.d2R = function(Degrees) {\r\n return Degrees * 0.0174532925199433;\r\n };\r\n CT.r2D = function(Radians) {\r\n return Radians * 57.2957795130823;\r\n };\r\n CT.r2H = function(Radians) {\r\n return Radians * 3.81971863420549;\r\n };\r\n CT.h2R = function(Hours) {\r\n return Hours * 0.261799387799149;\r\n };\r\n CT.h2D = function(Hours) {\r\n return Hours * 15;\r\n };\r\n CT.d2H = function(Degrees) {\r\n return Degrees / 15;\r\n };\r\n CT.PI = function() {\r\n return 3.14159265358979;\r\n };\r\n CT.m360 = function(Degrees) {\r\n return Degrees - Math.floor(Degrees / 360) * 360;\r\n };\r\n CT.m24 = function(HourAngle) {\r\n return HourAngle - Math.floor(HourAngle / 24) * 24;\r\n };\r\n CT.dmS2D = function(Degrees, Minutes, Seconds) {\r\n return CT.dmS2Dp(Degrees, Minutes, Seconds, true);\r\n };\r\n CT.dmS2Dp = function(Degrees, Minutes, Seconds, bPositive) {\r\n if (!bPositive) {\r\n console.assert(Degrees >= 0);\r\n console.assert(Minutes >= 0);\r\n console.assert(Seconds >= 0);\r\n }\r\n if (bPositive) {\r\n return Degrees + Minutes / 60 + Seconds / 3600;\r\n }\r\n else {\r\n return -Degrees - Minutes / 60 - Seconds / 3600;\r\n }\r\n };\r\n var CT$ = {\r\n\r\n };\r\n\r\n\r\n // CalD\r\n\r\n function CalD() {\r\n this.year = 0;\r\n this.month = 0;\r\n this.day = 0;\r\n this.year = 0;\r\n this.month = 0;\r\n this.day = 0;\r\n }\r\n CalD.create = function(year, month, day) {\r\n var item = new CalD();\r\n item.year = year;\r\n item.month = month;\r\n item.day = day;\r\n return item;\r\n };\r\n var CalD$ = {\r\n\r\n };\r\n\r\n\r\n // DT\r\n\r\n function DT() {\r\n this.m_dblJulian = 0;\r\n this.m_bGregorianCalendar = false;\r\n this.m_dblJulian = 0;\r\n this.m_bGregorianCalendar = false;\r\n }\r\n DT.create = function(Year, Month, Day, bGregorianCalendar) {\r\n var item = new DT();\r\n item.set(Year, Month, Day, 0, 0, 0, bGregorianCalendar);\r\n return item;\r\n };\r\n DT.createHMS = function(Year, Month, Day, Hour, Minute, Second, bGregorianCalendar) {\r\n var item = new DT();\r\n item.set(Year, Month, Day, Hour, Minute, Second, bGregorianCalendar);\r\n return item;\r\n };\r\n DT.createJD = function(JD, bGregorianCalendar) {\r\n var item = new DT();\r\n item.setJD(JD, bGregorianCalendar);\r\n return item;\r\n };\r\n DT.dateToJD = function(Year, Month, Day, bGregorianCalendar) {\r\n var Y = Year;\r\n var M = Month;\r\n if (M < 3) {\r\n Y = Y - 1;\r\n M = M + 12;\r\n }\r\n var A = 0;\r\n var B = 0;\r\n if (bGregorianCalendar) {\r\n A = ss.truncate((Y / 100));\r\n B = 2 - A + ss.truncate((A / 4));\r\n }\r\n return ss.truncate((365.25 * (Y + 4716))) + ss.truncate((30.6001 * (M + 1))) + Day + B - 1524.5;\r\n };\r\n DT.isLeap = function(Year, bGregorianCalendar) {\r\n if (bGregorianCalendar) {\r\n if (!(Year % 100)) {\r\n return (!(Year % 400)) ? true : false;\r\n }\r\n else {\r\n return (!(Year % 4)) ? true : false;\r\n }\r\n }\r\n else {\r\n return (!(Year % 4)) ? true : false;\r\n }\r\n };\r\n DT.afterPapalReform = function(Year, Month, Day) {\r\n return ((Year > 1582) || ((Year === 1582) && (Month > 10)) || ((Year === 1582) && (Month === 10) && (Day >= 15)));\r\n };\r\n DT.afterPapalReformJD = function(JD) {\r\n return (JD >= 2299160.5);\r\n };\r\n DT.dayOfYearJD = function(JD, Year, bGregorianCalendar) {\r\n return JD - DT.dateToJD(Year, 1, 1, bGregorianCalendar) + 1;\r\n };\r\n DT.daysInMonthForMonth = function(Month, bLeap) {\r\n console.assert(Month >= 1 && Month <= 12);\r\n var MonthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0 ];\r\n if (bLeap) {\r\n MonthLength[1]++;\r\n }\r\n return MonthLength[Month - 1];\r\n };\r\n DT.INT = function(vvalue) {\r\n if (vvalue >= 0) {\r\n return ss.truncate(vvalue);\r\n }\r\n else {\r\n return ss.truncate((vvalue - 1));\r\n }\r\n };\r\n var DT$ = {\r\n julian: function() {\r\n return this.m_dblJulian;\r\n },\r\n day: function() {\r\n var D = this.get();\r\n return ss.truncate(D[2]);\r\n },\r\n month: function() {\r\n var D = this.get();\r\n return ss.truncate(D[1]);\r\n },\r\n year: function() {\r\n var D = this.get();\r\n return ss.truncate(D[0]);\r\n },\r\n hour: function() {\r\n var D = this.get();\r\n return ss.truncate(D[3]);\r\n },\r\n minute: function() {\r\n var D = this.get();\r\n return ss.truncate(D[4]);\r\n },\r\n second: function() {\r\n var D = this.get();\r\n return ss.truncate(D[5]);\r\n },\r\n set: function(Year, Month, Day, Hour, Minute, Second, bGregorianCalendar) {\r\n var dblDay = Day + (Hour / 24) + (Minute / 1440) + (Second / 86400);\r\n this.setJD(DT.dateToJD(Year, Month, dblDay, bGregorianCalendar), bGregorianCalendar);\r\n },\r\n setJD: function(JD, bGregorianCalendar) {\r\n this.m_dblJulian = JD;\r\n this.setInGregorianCalendar(bGregorianCalendar);\r\n },\r\n setInGregorianCalendar: function(bGregorianCalendar) {\r\n var bAfterPapalReform = (this.m_dblJulian >= 2299160.5);\r\n this.m_bGregorianCalendar = bGregorianCalendar && bAfterPapalReform;\r\n },\r\n get: function() {\r\n var Year;\r\n var Month;\r\n var Day;\r\n var Hour;\r\n var Minute;\r\n var Second;\r\n var JD = this.m_dblJulian + 0.5;\r\n var tempZ = Math.floor(JD);\r\n var F = JD - tempZ;\r\n var Z = ss.truncate(tempZ);\r\n var A;\r\n if (this.m_bGregorianCalendar) {\r\n var alpha = ss.truncate(((Z - 1867216.25) / 36524.25));\r\n A = Z + 1 + alpha - ss.truncate((alpha / 4));\r\n }\r\n else {\r\n A = Z;\r\n }\r\n var B = A + 1524;\r\n var C = ss.truncate(((B - 122.1) / 365.25));\r\n var D = ss.truncate((365.25 * C));\r\n var E = ss.truncate(((B - D) / 30.6001));\r\n var dblDay = B - D - ss.truncate((30.6001 * E)) + F;\r\n Day = ss.truncate(dblDay);\r\n if (E < 14) {\r\n Month = E - 1;\r\n }\r\n else {\r\n Month = E - 13;\r\n }\r\n if (Month > 2) {\r\n Year = C - 4716;\r\n }\r\n else {\r\n Year = C - 4715;\r\n }\r\n tempZ = Math.floor(dblDay);\r\n F = dblDay - tempZ;\r\n Hour = ss.truncate((F * 24));\r\n Minute = ss.truncate(((F - Hour / 24) * 1440));\r\n Second = (F - (Hour / 24) - (Minute / 1440)) * 86400;\r\n return [ Year, Month, Day, Hour, Minute, Second ];\r\n },\r\n dayOfWeek: function() {\r\n return (ss.truncate((this.m_dblJulian + 1.5)) % 7);\r\n },\r\n dayOfYear: function() {\r\n var year = ss.truncate(this.get()[0]);\r\n return DT.dayOfYearJD(this.m_dblJulian, year, DT.afterPapalReform(year, 1, 1));\r\n },\r\n daysInMonth: function() {\r\n var D = this.get();\r\n var Year = ss.truncate(D[0]);\r\n var Month = ss.truncate(D[1]);\r\n return DT.daysInMonthForMonth(Month, DT.isLeap(Year, this.m_bGregorianCalendar));\r\n },\r\n daysInYear: function() {\r\n var D = this.get();\r\n var Year = ss.truncate(D[0]);\r\n if (DT.isLeap(Year, this.m_bGregorianCalendar)) {\r\n return 366;\r\n }\r\n else {\r\n return 365;\r\n }\r\n },\r\n leap: function() {\r\n return DT.isLeap(this.year(), this.m_bGregorianCalendar);\r\n },\r\n inGregorianCalendar: function() {\r\n return this.m_bGregorianCalendar;\r\n },\r\n fractionalYear: function() {\r\n var D = this.get();\r\n var Year = ss.truncate(D[0]);\r\n var Month = ss.truncate(D[1]);\r\n var Day = ss.truncate(D[2]);\r\n var Hour = ss.truncate(D[3]);\r\n var Minute = ss.truncate(D[4]);\r\n var Second = D[5];\r\n var DaysInYear;\r\n if (DT.isLeap(Year, this.m_bGregorianCalendar)) {\r\n DaysInYear = 366;\r\n }\r\n else {\r\n DaysInYear = 365;\r\n }\r\n return Year + ((this.m_dblJulian - DT.dateToJD(Year, 1, 1, DT.afterPapalReform(Year, 1, 1))) / DaysInYear);\r\n }\r\n };\r\n\r\n\r\n // DYT\r\n\r\n function DYT() {\r\n }\r\n DYT.deltaT = function(JD) {\r\n var date = DT.createJD(JD, DT.afterPapalReformJD(JD));\r\n var y = date.fractionalYear();\r\n var T = (y - 2000) / 100;\r\n var Delta;\r\n if (y < 948) {\r\n Delta = 2177 + (497 * T) + (44.1 * T * T);\r\n }\r\n else if (y < 1620) {\r\n Delta = 102 + (102 * T) + (25.3 * T * T);\r\n }\r\n else if (y < 1998) {\r\n var Index = ss.truncate(((y - 1620) / 2));\r\n console.assert(Index < GFX.deltaTTable.length);\r\n y = y / 2 - Index - 810;\r\n Delta = (GFX.deltaTTable[Index] + (GFX.deltaTTable[Index + 1] - GFX.deltaTTable[Index]) * y);\r\n }\r\n else if (y <= 2000) {\r\n var nLookupSize = GFX.deltaTTable.length;\r\n Delta = GFX.deltaTTable[nLookupSize - 1];\r\n }\r\n else if (y < 2100) {\r\n Delta = 102 + (102 * T) + (25.3 * T * T) + 0.37 * (y - 2100);\r\n }\r\n else {\r\n Delta = 102 + (102 * T) + (25.3 * T * T);\r\n }\r\n return Delta;\r\n };\r\n var DYT$ = {\r\n\r\n };\r\n\r\n\r\n // CAAEarth\r\n\r\n function CAAEarth() {\r\n }\r\n CAAEarth.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nL0Coefficients = GFX.g_L0EarthCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0EarthCoefficients[i].a * Math.cos(GFX.g_L0EarthCoefficients[i].b + GFX.g_L0EarthCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1EarthCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1EarthCoefficients[i].a * Math.cos(GFX.g_L1EarthCoefficients[i].b + GFX.g_L1EarthCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2EarthCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2EarthCoefficients[i].a * Math.cos(GFX.g_L2EarthCoefficients[i].b + GFX.g_L2EarthCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3EarthCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3EarthCoefficients[i].a * Math.cos(GFX.g_L3EarthCoefficients[i].b + GFX.g_L3EarthCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4EarthCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4EarthCoefficients[i].a * Math.cos(GFX.g_L4EarthCoefficients[i].b + GFX.g_L4EarthCoefficients[i].c * rho);\r\n }\r\n var nL5Coefficients = GFX.g_L5EarthCoefficients.length;\r\n var L5 = 0;\r\n for (i = 0; i < nL5Coefficients; i++) {\r\n L5 += GFX.g_L5EarthCoefficients[i].a * Math.cos(GFX.g_L5EarthCoefficients[i].b + GFX.g_L5EarthCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4 + L5 * rho5) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAEarth.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0EarthCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0EarthCoefficients[i].a * Math.cos(GFX.g_B0EarthCoefficients[i].b + GFX.g_B0EarthCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1EarthCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1EarthCoefficients[i].a * Math.cos(GFX.g_B1EarthCoefficients[i].b + GFX.g_B1EarthCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2EarthCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2EarthCoefficients[i].a * Math.cos(GFX.g_B2EarthCoefficients[i].b + GFX.g_B2EarthCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3EarthCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3EarthCoefficients[i].a * Math.cos(GFX.g_B3EarthCoefficients[i].b + GFX.g_B3EarthCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4EarthCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4EarthCoefficients[i].a * Math.cos(GFX.g_B4EarthCoefficients[i].b + GFX.g_B4EarthCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAAEarth.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nR0Coefficients = GFX.g_R0EarthCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0EarthCoefficients[i].a * Math.cos(GFX.g_R0EarthCoefficients[i].b + GFX.g_R0EarthCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1EarthCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1EarthCoefficients[i].a * Math.cos(GFX.g_R1EarthCoefficients[i].b + GFX.g_R1EarthCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2EarthCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2EarthCoefficients[i].a * Math.cos(GFX.g_R2EarthCoefficients[i].b + GFX.g_R2EarthCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3EarthCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3EarthCoefficients[i].a * Math.cos(GFX.g_R3EarthCoefficients[i].b + GFX.g_R3EarthCoefficients[i].c * rho);\r\n }\r\n var nR4Coefficients = GFX.g_R4EarthCoefficients.length;\r\n var R4 = 0;\r\n for (i = 0; i < nR4Coefficients; i++) {\r\n R4 += GFX.g_R4EarthCoefficients[i].a * Math.cos(GFX.g_R4EarthCoefficients[i].b + GFX.g_R4EarthCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed + R4 * rho4) / 100000000;\r\n };\r\n CAAEarth.sunMeanAnomaly = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(357.5291092 + 35999.0502909 * T - 0.0001536 * Tsquared + Tcubed / 24490000);\r\n };\r\n CAAEarth.eccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n return 1 - 0.002516 * T - 7.4E-06 * Tsquared;\r\n };\r\n CAAEarth.eclipticLongitudeJ2000 = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nL0Coefficients = GFX.g_L0EarthCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0EarthCoefficients[i].a * Math.cos(GFX.g_L0EarthCoefficients[i].b + GFX.g_L0EarthCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1EarthCoefficientsJ2000.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_L1EarthCoefficientsJ2000[i].b + GFX.g_L1EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2EarthCoefficientsJ2000.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_L2EarthCoefficientsJ2000[i].b + GFX.g_L2EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3EarthCoefficientsJ2000.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_L3EarthCoefficientsJ2000[i].b + GFX.g_L3EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4EarthCoefficientsJ2000.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_L4EarthCoefficientsJ2000[i].b + GFX.g_L4EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAEarth.eclipticLatitudeJ2000 = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0EarthCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0EarthCoefficients[i].a * Math.cos(GFX.g_B0EarthCoefficients[i].b + GFX.g_B0EarthCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1EarthCoefficientsJ2000.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_B1EarthCoefficientsJ2000[i].b + GFX.g_B1EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2EarthCoefficientsJ2000.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_B2EarthCoefficientsJ2000[i].b + GFX.g_B2EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3EarthCoefficientsJ2000.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_B3EarthCoefficientsJ2000[i].b + GFX.g_B3EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4EarthCoefficientsJ2000.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4EarthCoefficientsJ2000[i].a * Math.cos(GFX.g_B4EarthCoefficientsJ2000[i].b + GFX.g_B4EarthCoefficientsJ2000[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n var CAAEarth$ = {\r\n\r\n };\r\n\r\n\r\n // VSC\r\n\r\n function VSC(a, b, c) {\r\n this.a = 0;\r\n this.b = 0;\r\n this.c = 0;\r\n this.a = a;\r\n this.b = b;\r\n this.c = c;\r\n }\r\n var VSC$ = {\r\n\r\n };\r\n\r\n\r\n // CAAEclipticalElementDetails\r\n\r\n function CAAEclipticalElementDetails() {\r\n this.i = 0;\r\n this.w = 0;\r\n this.omega = 0;\r\n this.i = 0;\r\n this.w = 0;\r\n this.omega = 0;\r\n }\r\n var CAAEclipticalElementDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAAEclipticalElements\r\n\r\n function CAAEclipticalElements() {\r\n }\r\n CAAEclipticalElements.calculate = function(i0, w0, omega0, JD0, JD) {\r\n var T = (JD0 - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var t = (JD - JD0) / 36525;\r\n var tsquared = t * t;\r\n var tcubed = tsquared * t;\r\n var i0rad = CT.d2R(i0);\r\n var omega0rad = CT.d2R(omega0);\r\n var eta = (47.0029 - 0.06603 * T + 0.000598 * Tsquared) * t + (-0.03302 + 0.000598 * T) * tsquared + 6E-05 * tcubed;\r\n eta = CT.d2R(CT.dmS2D(0, 0, eta));\r\n var pi = 174.876384 * 3600 + 3289.4789 * T + 0.60622 * Tsquared - (869.8089 + 0.50491 * T) * t + 0.03536 * tsquared;\r\n pi = CT.d2R(CT.dmS2D(0, 0, pi));\r\n var p = (5029.0966 + 2.22226 * T - 4.2E-05 * Tsquared) * t + (1.11113 - 4.2E-05 * T) * tsquared - 6E-06 * tcubed;\r\n p = CT.d2R(CT.dmS2D(0, 0, p));\r\n var sini0rad = Math.sin(i0rad);\r\n var cosi0rad = Math.cos(i0rad);\r\n var sinomega0rad_pi = Math.sin(omega0rad - pi);\r\n var cosomega0rad_pi = Math.cos(omega0rad - pi);\r\n var sineta = Math.sin(eta);\r\n var coseta = Math.cos(eta);\r\n var A = sini0rad * sinomega0rad_pi;\r\n var B = -sineta * cosi0rad + coseta * sini0rad * cosomega0rad_pi;\r\n var irad = Math.asin(Math.sqrt(A * A + B * B));\r\n var details = new CAAEclipticalElementDetails();\r\n details.i = CT.r2D(irad);\r\n var cosi = cosi0rad * coseta + sini0rad * sineta * cosomega0rad_pi;\r\n if (cosi < 0) {\r\n details.i = 180 - details.i;\r\n }\r\n var phi = pi + p;\r\n details.omega = CT.m360(CT.r2D(Math.atan2(A, B) + phi));\r\n A = -sineta * sinomega0rad_pi;\r\n B = sini0rad * coseta - cosi0rad * sineta * cosomega0rad_pi;\r\n var deltaw = CT.r2D(Math.atan2(A, B));\r\n details.w = CT.m360(w0 + deltaw);\r\n return details;\r\n };\r\n CAAEclipticalElements.fK4B1950ToFK5J2000 = function(i0, w0, omega0) {\r\n var L = CT.d2R(5.19856209);\r\n var J = CT.d2R(0.00651966);\r\n var i0rad = CT.d2R(i0);\r\n var omega0rad = CT.d2R(omega0);\r\n var sini0rad = Math.sin(i0rad);\r\n var cosi0rad = Math.cos(i0rad);\r\n var cosJ = Math.cos(J);\r\n var sinJ = Math.sin(J);\r\n var W = L + omega0rad;\r\n var cosW = Math.cos(W);\r\n var sinW = Math.sin(W);\r\n var A = sinJ * sinW;\r\n var B = sini0rad * cosJ + cosi0rad * sinJ * cosW;\r\n var details = new CAAEclipticalElementDetails();\r\n details.i = CT.r2D(Math.asin(Math.sqrt(A * A + B * B)));\r\n var cosi = cosi0rad * cosJ - sini0rad * sinJ * cosW;\r\n if (cosi < 0) {\r\n details.i = 180 - details.i;\r\n }\r\n details.w = CT.m360(w0 + CT.r2D(Math.atan2(A, B)));\r\n details.omega = CT.m360(CT.r2D(Math.atan2(sini0rad * sinW, cosi0rad * sinJ + sini0rad * cosJ * cosW)) - 4.50001688);\r\n return details;\r\n };\r\n var CAAEclipticalElements$ = {\r\n\r\n };\r\n\r\n\r\n // EPO\r\n\r\n function EPO() {\r\n }\r\n EPO.mercuryMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(252.250906 + 149474.0722491 * T + 0.0003035 * Tsquared + 1.8E-08 * Tcubed);\r\n };\r\n EPO.mercurySemimajorAxis = function(UnnamedParameter1) {\r\n return 0.38709831;\r\n };\r\n EPO.mercuryEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.20563175 + 2.0407E-05 * T - 2.83E-08 * Tsquared - 1.8E-10 * Tcubed;\r\n };\r\n EPO.mercuryInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(7.004986 + 0.0018215 * T - 1.81E-05 * Tsquared + 5.6E-08 * Tcubed);\r\n };\r\n EPO.mercuryLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(48.330893 + 1.1861883 * T + 0.00017542 * Tsquared + 2.15E-07 * Tcubed);\r\n };\r\n EPO.mercuryLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(77.456119 + 1.5564776 * T + 0.00029544 * Tsquared + 9E-09 * Tcubed);\r\n };\r\n EPO.venusMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(181.979801 + 58519.2130302 * T + 0.00031014 * Tsquared + 1.5E-08 * Tcubed);\r\n };\r\n EPO.venusSemimajorAxis = function(UnnamedParameter1) {\r\n return 0.72332982;\r\n };\r\n EPO.venusEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.00677192 - 4.7765E-05 * T + 9.81E-08 * Tsquared + 4.6E-10 * Tcubed;\r\n };\r\n EPO.venusInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(3.394662 + 0.0010037 * T - 8.8E-07 * Tsquared - 7E-09 * Tcubed);\r\n };\r\n EPO.venusLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(76.67992 + 0.9011206 * T + 0.00040618 * Tsquared - 9.3E-08 * Tcubed);\r\n };\r\n EPO.venusLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(131.563703 + 1.4022288 * T - 0.00107618 * Tsquared - 5.678E-06 * Tcubed);\r\n };\r\n EPO.earthMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(100.466457 + 36000.7698278 * T + 0.00030322 * Tsquared + 2E-08 * Tcubed);\r\n };\r\n EPO.earthSemimajorAxis = function(UnnamedParameter1) {\r\n return 1.000001018;\r\n };\r\n EPO.earthEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.01670863 - 4.2037E-05 * T - 1.267E-07 * Tsquared + 1.4E-10 * Tcubed;\r\n };\r\n EPO.earthInclination = function(UnnamedParameter1) {\r\n return 0;\r\n };\r\n EPO.earthLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(102.937348 + 1.17195366 * T + 0.00045688 * Tsquared - 1.8E-08 * Tcubed);\r\n };\r\n EPO.marsMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(355.433 + 19141.6964471 * T + 0.00031052 * Tsquared + 1.6E-08 * Tcubed);\r\n };\r\n EPO.marsSemimajorAxis = function(UnnamedParameter1) {\r\n return 1.523679342;\r\n };\r\n EPO.marsEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.09340065 + 9.0484E-05 * T - 8.06E-08 * Tsquared - 2.5E-10 * Tcubed;\r\n };\r\n EPO.marsInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(1.849726 - 0.0006011 * T + 1.276E-05 * Tsquared - 7E-09 * Tcubed);\r\n };\r\n EPO.marsLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(49.588093 + 0.7720959 * T + 1.557E-05 * Tsquared + 2.267E-06 * Tcubed);\r\n };\r\n EPO.marsLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(336.060234 + 1.8410449 * T + 0.00013477 * Tsquared + 5.36E-07 * Tcubed);\r\n };\r\n EPO.jupiterMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(34.351519 + 3036.3027748 * T + 0.0002233 * Tsquared + 3.7E-08 * Tcubed);\r\n };\r\n EPO.jupiterSemimajorAxis = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n return 5.202603209 + 1.913E-07 * T;\r\n };\r\n EPO.jupiterEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.04849793 + 0.000163225 * T - 4.714E-07 * Tsquared - 2.01E-09 * Tcubed;\r\n };\r\n EPO.jupiterInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(1.303267 - 0.0054965 * T + 4.66E-06 * Tsquared - 2E-09 * Tcubed);\r\n };\r\n EPO.jupiterLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(100.464407 + 1.0209774 * T + 0.00040315 * Tsquared + 4.04E-07 * Tcubed);\r\n };\r\n EPO.jupiterLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(14.331207 + 1.6126352 * T + 0.00103042 * Tsquared - 4.464E-06 * Tcubed);\r\n };\r\n EPO.saturnMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(50.077444 + 1223.5110686 * T + 0.00051908 * Tsquared - 3E-08 * Tcubed);\r\n };\r\n EPO.saturnSemimajorAxis = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n return 9.554909192 - 2.139E-06 * T + 4E-09 * Tsquared;\r\n };\r\n EPO.saturnEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.05554814 - 0.0003446641 * T - 6.436E-07 * Tsquared + 3.4E-09 * Tcubed;\r\n };\r\n EPO.saturnInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(2.488879 - 0.0037362 * T - 1.519E-05 * Tsquared + 8.7E-08 * Tcubed);\r\n };\r\n EPO.saturnLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(113.665503 + 0.877088 * T - 0.00012176 * Tsquared - 2.249E-06 * Tcubed);\r\n };\r\n EPO.saturnLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(93.057237 + 1.19637613 * T + 0.00083753 * Tsquared + 4.928E-06 * Tcubed);\r\n };\r\n EPO.uranusMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(314.055005 + 429.8640561 * T + 0.0003039 * Tsquared + 2.6E-08 * Tcubed);\r\n };\r\n EPO.uranusSemimajorAxis = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n return 19.218446062 - 3.72E-08 * T + 9.8E-10 * Tsquared;\r\n };\r\n EPO.uranusEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.04638122 - 2.7293E-05 * T + 7.89E-08 * Tsquared + 2.4E-10 * Tcubed;\r\n };\r\n EPO.uranusInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(0.773197 + 0.0007744 * T + 3.749E-05 * Tsquared - 9.2E-08 * Tcubed);\r\n };\r\n EPO.uranusLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(74.005957 + 0.5211278 * T + 0.00133947 * Tsquared + 1.8484E-05 * Tcubed);\r\n };\r\n EPO.uranusLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(173.005291 + 1.486379 * T + 0.00021406 * Tsquared + 4.34E-07 * Tcubed);\r\n };\r\n EPO.neptuneMeanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(304.348665 + 219.8833092 * T + 0.00030882 * Tsquared + 1.8E-08 * Tcubed);\r\n };\r\n EPO.neptuneSemimajorAxis = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n return 30.110386869 - 1.663E-07 * T + 6.9E-10 * Tsquared;\r\n };\r\n EPO.neptuneEccentricity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tcubed = T * T * T;\r\n return 0.00945575 + 6.033E-06 * T - 5E-11 * Tcubed;\r\n };\r\n EPO.neptuneInclination = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(1.769953 - 0.0093082 * T - 7.08E-06 * Tsquared + 2.7E-08 * Tcubed);\r\n };\r\n EPO.neptuneLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(131.784057 + 1.1022039 * T + 0.00025952 * Tsquared - 6.37E-07 * Tcubed);\r\n };\r\n EPO.neptuneLongitudePerihelion = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(48.120276 + 1.4262957 * T + 0.00038434 * Tsquared + 2E-08 * Tcubed);\r\n };\r\n EPO.mercuryMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(252.250906 + 149472.6746358 * T - 5.36E-06 * Tsquared + 2E-09 * Tcubed);\r\n };\r\n EPO.mercuryInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(7.004986 - 0.0059516 * T + 8E-07 * Tsquared + 4.3E-08 * Tcubed);\r\n };\r\n EPO.mercuryLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(48.330893 - 0.1254227 * T - 8.833E-05 * Tsquared - 2E-07 * Tcubed);\r\n };\r\n EPO.mercuryLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(77.456119 + 0.1588643 * T - 1.342E-05 * Tsquared - 7E-09 * Tcubed);\r\n };\r\n EPO.venusMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(181.979801 + 58517.815676 * T + 1.65E-06 * Tsquared - 2E-09 * Tcubed);\r\n };\r\n EPO.venusInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(3.394662 - 0.0008568 * T - 3.244E-05 * Tsquared + 9E-09 * Tcubed);\r\n };\r\n EPO.venusLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(76.67992 - 0.2780134 * T - 0.00014257 * Tsquared - 1.64E-07 * Tcubed);\r\n };\r\n EPO.venusLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(131.563703 + 0.0048746 * T - 0.00138467 * Tsquared - 5.695E-06 * Tcubed);\r\n };\r\n EPO.earthMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(100.466457 + 35999.3728565 * T - 5.68E-06 * Tsquared - 1E-09 * Tcubed);\r\n };\r\n EPO.earthInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return 0.0130548 * T - 9.31E-06 * Tsquared - 3.4E-08 * Tcubed;\r\n };\r\n EPO.earthLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(174.873176 - 0.241098 * T + 4.262E-05 * Tsquared + 1E-09 * Tcubed);\r\n };\r\n EPO.earthLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(102.937348 + 0.3225654 * T + 0.00014799 * Tsquared - 3.9E-08 * Tcubed);\r\n };\r\n EPO.marsMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(355.433 + 19140.2993039 * T + 2.62E-06 * Tsquared - 3E-09 * Tcubed);\r\n };\r\n EPO.marsInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(1.849726 - 0.0081477 * T - 2.255E-05 * Tsquared - 2.9E-08 * Tcubed);\r\n };\r\n EPO.marsLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(49.588093 - 0.295025 * T - 0.00064048 * Tsquared - 1.964E-06 * Tcubed);\r\n };\r\n EPO.marsLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(336.060234 + 0.4439016 * T - 0.00017313 * Tsquared + 5.18E-07 * Tcubed);\r\n };\r\n EPO.jupiterMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(34.351519 + 3034.9056606 * T - 8.501E-05 * Tsquared + 1.6E-08 * Tcubed);\r\n };\r\n EPO.jupiterInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(1.303267 - 0.0019877 * T + 3.32E-05 * Tsquared + 9.7E-08 * Tcubed);\r\n };\r\n EPO.jupiterLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(100.464407 + 0.1767232 * T + 0.000907 * Tsquared - 7.272E-06 * Tcubed);\r\n };\r\n EPO.jupiterLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(14.331207 + 0.2155209 * T + 0.00072211 * Tsquared - 4.485E-06 * Tcubed);\r\n };\r\n EPO.saturnMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(50.077444 + 1222.1138488 * T + 0.00021004 * Tsquared - 4.6E-08 * Tcubed);\r\n };\r\n EPO.saturnInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(2.488879 + 0.0025514 * T - 4.906E-05 * Tsquared + 1.7E-08 * Tcubed);\r\n };\r\n EPO.saturnLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(113.665503 - 0.2566722 * T - 0.00018399 * Tsquared + 4.8E-07 * Tcubed);\r\n };\r\n EPO.saturnLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(93.057237 + 0.5665415 * T + 0.0005285 * Tsquared + 4.912E-06 * Tcubed);\r\n };\r\n EPO.uranusMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(314.055005 + 428.4669983 * T - 4.86E-06 * Tsquared + 6E-09 * Tcubed);\r\n };\r\n EPO.uranusInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(0.773197 - 0.0016869 * T + 3.49E-06 * Tsquared + 1.6E-08 * Tcubed);\r\n };\r\n EPO.uranusLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(74.005957 + 0.0741431 * T + 0.00040539 * Tsquared + 1.19E-07 * Tcubed);\r\n };\r\n EPO.uranusLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(173.005291 + 0.0893212 * T - 9.47E-05 * Tsquared + 4.14E-07 * Tcubed);\r\n };\r\n EPO.neptuneMeanLongitudeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(304.348665 + 218.4862002 * T + 5.9E-07 * Tsquared - 2E-09 * Tcubed);\r\n };\r\n EPO.neptuneInclinationJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n return CT.m360(1.769953 + 0.0002256 * T + 2.3E-07 * Tsquared);\r\n };\r\n EPO.neptuneLongitudeAscendingNodeJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n return CT.m360(131.784057 - 0.0061651 * T - 2.19E-06 * Tsquared - 7.8E-08 * Tcubed);\r\n };\r\n EPO.neptuneLongitudePerihelionJ2000 = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n return CT.m360(48.120276 + 0.0291866 * T + 7.61E-05 * Tsquared);\r\n };\r\n var EPO$ = {\r\n\r\n };\r\n\r\n\r\n // EOE\r\n\r\n function EOE() {\r\n this.a = 0;\r\n this.e = 0;\r\n this.i = 0;\r\n this.w = 0;\r\n this.omega = 0;\r\n this.jdEquinox = 0;\r\n this.t = 0;\r\n this.n = 0;\r\n this.meanAnnomolyOut = 0;\r\n this.a = 0;\r\n this.e = 0;\r\n this.i = 0;\r\n this.w = 0;\r\n this.omega = 0;\r\n this.jdEquinox = 0;\r\n this.t = 0;\r\n }\r\n EOE._create = function(br) {\r\n var tmp = new EOE();\r\n tmp.a = br.readSingle();\r\n tmp.e = br.readSingle();\r\n tmp.i = br.readSingle();\r\n tmp.w = br.readSingle();\r\n tmp.omega = br.readSingle();\r\n tmp.jdEquinox = br.readSingle();\r\n tmp.t = br.readSingle();\r\n return tmp;\r\n };\r\n var EOE$ = {\r\n\r\n };\r\n\r\n\r\n // EPD\r\n\r\n function EPD() {\r\n this.apparentGeocentricLongitude = 0;\r\n this.apparentGeocentricLatitude = 0;\r\n this.apparentGeocentricDistance = 0;\r\n this.apparentLightTime = 0;\r\n this.apparentGeocentricRA = 0;\r\n this.apparentGeocentricDeclination = 0;\r\n this.apparentGeocentricLongitude = 0;\r\n this.apparentGeocentricLatitude = 0;\r\n this.apparentGeocentricDistance = 0;\r\n this.apparentLightTime = 0;\r\n this.apparentGeocentricRA = 0;\r\n this.apparentGeocentricDeclination = 0;\r\n }\r\n var EPD$ = {\r\n\r\n };\r\n\r\n\r\n // EOD\r\n\r\n function EOD() {\r\n this.heliocentricRectangularEquatorial = new C3D();\r\n this.heliocentricRectangularEcliptical = new C3D();\r\n this.heliocentricEclipticLongitude = 0;\r\n this.heliocentricEclipticLatitude = 0;\r\n this.trueGeocentricRA = 0;\r\n this.trueGeocentricDeclination = 0;\r\n this.trueGeocentricDistance = 0;\r\n this.trueGeocentricLightTime = 0;\r\n this.astrometricGeocenticRA = 0;\r\n this.astrometricGeocentricDeclination = 0;\r\n this.astrometricGeocentricDistance = 0;\r\n this.astrometricGeocentricLightTime = 0;\r\n this.elongation = 0;\r\n this.phaseAngle = 0;\r\n this.heliocentricEclipticLongitude = 0;\r\n this.heliocentricEclipticLatitude = 0;\r\n this.trueGeocentricRA = 0;\r\n this.trueGeocentricDeclination = 0;\r\n this.trueGeocentricDistance = 0;\r\n this.trueGeocentricLightTime = 0;\r\n this.astrometricGeocenticRA = 0;\r\n this.astrometricGeocentricDeclination = 0;\r\n this.astrometricGeocentricDistance = 0;\r\n this.astrometricGeocentricLightTime = 0;\r\n this.elongation = 0;\r\n this.phaseAngle = 0;\r\n }\r\n var EOD$ = {\r\n\r\n };\r\n\r\n\r\n // ELL\r\n\r\n function ELL() {\r\n }\r\n ELL.distanceToLightTime = function(Distance) {\r\n return Distance * 0.0057755183;\r\n };\r\n ELL.calculate = function(JD, oobject) {\r\n var details = new EPD();\r\n var JD0 = JD;\r\n var L0 = 0;\r\n var B0 = 0;\r\n var R0 = 0;\r\n var cosB0 = 0;\r\n if (!!oobject) {\r\n L0 = CAAEarth.eclipticLongitude(JD0);\r\n B0 = CAAEarth.eclipticLatitude(JD0);\r\n R0 = CAAEarth.radiusVector(JD0);\r\n L0 = CT.d2R(L0);\r\n B0 = CT.d2R(B0);\r\n cosB0 = Math.cos(B0);\r\n }\r\n var L = 0;\r\n var B = 0;\r\n var R = 0;\r\n var Lrad;\r\n var Brad;\r\n var cosB;\r\n var cosL;\r\n var x;\r\n var y;\r\n var z;\r\n var bRecalc = true;\r\n var bFirstRecalc = true;\r\n var LPrevious = 0;\r\n var BPrevious = 0;\r\n var RPrevious = 0;\r\n while (bRecalc) {\r\n switch (oobject) {\r\n case 0:\r\n L = CAASun.geometricEclipticLongitude(JD0);\r\n B = CAASun.geometricEclipticLatitude(JD0);\r\n R = CAAEarth.radiusVector(JD0);\r\n break;\r\n case 1:\r\n L = CAAMercury.eclipticLongitude(JD0);\r\n B = CAAMercury.eclipticLatitude(JD0);\r\n R = CAAMercury.radiusVector(JD0);\r\n break;\r\n case 2:\r\n L = CAAVenus.eclipticLongitude(JD0);\r\n B = CAAVenus.eclipticLatitude(JD0);\r\n R = CAAVenus.radiusVector(JD0);\r\n break;\r\n case 3:\r\n L = CAAMars.eclipticLongitude(JD0);\r\n B = CAAMars.eclipticLatitude(JD0);\r\n R = CAAMars.radiusVector(JD0);\r\n break;\r\n case 4:\r\n L = CAAJupiter.eclipticLongitude(JD0);\r\n B = CAAJupiter.eclipticLatitude(JD0);\r\n R = CAAJupiter.radiusVector(JD0);\r\n break;\r\n case 5:\r\n L = CAASaturn.eclipticLongitude(JD0);\r\n B = CAASaturn.eclipticLatitude(JD0);\r\n R = CAASaturn.radiusVector(JD0);\r\n break;\r\n case 6:\r\n L = CAAUranus.eclipticLongitude(JD0);\r\n B = CAAUranus.eclipticLatitude(JD0);\r\n R = CAAUranus.radiusVector(JD0);\r\n break;\r\n case 7:\r\n L = CAANeptune.eclipticLongitude(JD0);\r\n B = CAANeptune.eclipticLatitude(JD0);\r\n R = CAANeptune.radiusVector(JD0);\r\n break;\r\n case 8:\r\n L = CAAPluto.eclipticLongitude(JD0);\r\n B = CAAPluto.eclipticLatitude(JD0);\r\n R = CAAPluto.radiusVector(JD0);\r\n break;\r\n default:\r\n console.assert(false);\r\n break;\r\n }\r\n if (!bFirstRecalc) {\r\n bRecalc = ((Math.abs(L - LPrevious) > 1E-05) || (Math.abs(B - BPrevious) > 1E-05) || (Math.abs(R - RPrevious) > 1E-06));\r\n LPrevious = L;\r\n BPrevious = B;\r\n RPrevious = R;\r\n }\r\n else {\r\n bFirstRecalc = false;\r\n }\r\n if (bRecalc) {\r\n var distance = 0;\r\n if (!!oobject) {\r\n Lrad = CT.d2R(L);\r\n Brad = CT.d2R(B);\r\n cosB = Math.cos(Brad);\r\n cosL = Math.cos(Lrad);\r\n x = R * cosB * cosL - R0 * cosB0 * Math.cos(L0);\r\n y = R * cosB * Math.sin(Lrad) - R0 * cosB0 * Math.sin(L0);\r\n z = R * Math.sin(Brad) - R0 * Math.sin(B0);\r\n distance = Math.sqrt(x * x + y * y + z * z);\r\n }\r\n else {\r\n distance = R;\r\n }\r\n JD0 = JD - ELL.distanceToLightTime(distance);\r\n }\r\n }\r\n Lrad = CT.d2R(L);\r\n Brad = CT.d2R(B);\r\n cosB = Math.cos(Brad);\r\n cosL = Math.cos(Lrad);\r\n x = R * cosB * cosL - R0 * cosB0 * Math.cos(L0);\r\n y = R * cosB * Math.sin(Lrad) - R0 * cosB0 * Math.sin(L0);\r\n z = R * Math.sin(Brad) - R0 * Math.sin(B0);\r\n var x2 = x * x;\r\n var y2 = y * y;\r\n details.apparentGeocentricLatitude = CT.r2D(Math.atan2(z, Math.sqrt(x2 + y2)));\r\n details.apparentGeocentricDistance = Math.sqrt(x2 + y2 + z * z);\r\n details.apparentGeocentricLongitude = CT.m360(CT.r2D(Math.atan2(y, x)));\r\n details.apparentLightTime = ELL.distanceToLightTime(details.apparentGeocentricDistance);\r\n var Aberration = ABR.eclipticAberration(details.apparentGeocentricLongitude, details.apparentGeocentricLatitude, JD);\r\n details.apparentGeocentricLongitude += Aberration.x;\r\n details.apparentGeocentricLatitude += Aberration.y;\r\n var DeltaLong = CAAFK5.correctionInLongitude(details.apparentGeocentricLongitude, details.apparentGeocentricLatitude, JD);\r\n details.apparentGeocentricLatitude += CAAFK5.correctionInLatitude(details.apparentGeocentricLongitude, JD);\r\n details.apparentGeocentricLongitude += DeltaLong;\r\n var NutationInLongitude = CAANutation.nutationInLongitude(JD);\r\n var Epsilon = CAANutation.trueObliquityOfEcliptic(JD);\r\n details.apparentGeocentricLongitude += CT.dmS2D(0, 0, NutationInLongitude);\r\n var ApparentEqu = CT.ec2Eq(details.apparentGeocentricLongitude, details.apparentGeocentricLatitude, Epsilon);\r\n details.apparentGeocentricRA = ApparentEqu.x;\r\n details.apparentGeocentricDeclination = ApparentEqu.y;\r\n return details;\r\n };\r\n ELL.semiMajorAxisFromPerihelionDistance = function(q, e) {\r\n return q / (1 - e);\r\n };\r\n ELL.meanMotionFromSemiMajorAxis = function(a) {\r\n return 0.9856076686 / (a * Math.sqrt(a));\r\n };\r\n ELL.calculateRectangularJD = function(JD, elements) {\r\n var JD0 = JD;\r\n var omega = CT.d2R(elements.omega);\r\n var w = CT.d2R(elements.w);\r\n var i = CT.d2R(elements.i);\r\n var sinEpsilon = 0;\r\n var cosEpsilon = 1;\r\n var sinOmega = Math.sin(omega);\r\n var cosOmega = Math.cos(omega);\r\n var cosi = Math.cos(i);\r\n var sini = Math.sin(i);\r\n var F = cosOmega;\r\n var G = sinOmega * cosEpsilon;\r\n var H = sinOmega * sinEpsilon;\r\n var P = -sinOmega * cosi;\r\n var Q = cosOmega * cosi * cosEpsilon - sini * sinEpsilon;\r\n var R = cosOmega * cosi * sinEpsilon + sini * cosEpsilon;\r\n var a = Math.sqrt(F * F + P * P);\r\n var b = Math.sqrt(G * G + Q * Q);\r\n var c = Math.sqrt(H * H + R * R);\r\n var A = Math.atan2(F, P);\r\n var B = Math.atan2(G, Q);\r\n var C = Math.atan2(H, R);\r\n var M = elements.n * (JD0 - elements.t);\r\n elements.meanAnnomolyOut = M;\r\n var E = CAAKepler.calculate(M, elements.e);\r\n E = CT.d2R(E);\r\n var v = 2 * Math.atan(Math.sqrt((1 + elements.e) / (1 - elements.e)) * Math.tan(E / 2));\r\n var r = elements.a * (1 - elements.e * Math.cos(E));\r\n var x = r * a * Math.sin(A + w + v);\r\n var y = r * b * Math.sin(B + w + v);\r\n var z = r * c * Math.sin(C + w + v);\r\n return Vector3d.create(x, z, y);\r\n };\r\n ELL.calculateRectangular = function(elements, meanAnomoly) {\r\n var omega = CT.d2R(elements.omega);\r\n var w = CT.d2R(elements.w);\r\n var i = CT.d2R(elements.i);\r\n var sinEpsilon = 0;\r\n var cosEpsilon = 1;\r\n var sinOmega = Math.sin(omega);\r\n var cosOmega = Math.cos(omega);\r\n var cosi = Math.cos(i);\r\n var sini = Math.sin(i);\r\n var F = cosOmega;\r\n var G = sinOmega * cosEpsilon;\r\n var H = sinOmega * sinEpsilon;\r\n var P = -sinOmega * cosi;\r\n var Q = cosOmega * cosi * cosEpsilon - sini * sinEpsilon;\r\n var R = cosOmega * cosi * sinEpsilon + sini * cosEpsilon;\r\n var a = Math.sqrt(F * F + P * P);\r\n var b = Math.sqrt(G * G + Q * Q);\r\n var c = Math.sqrt(H * H + R * R);\r\n var A = Math.atan2(F, P);\r\n var B = Math.atan2(G, Q);\r\n var C = Math.atan2(H, R);\r\n var n = elements.n;\r\n var M = meanAnomoly;\r\n var E = CAAKepler.calculate(M, elements.e);\r\n E = CT.d2R(E);\r\n var v = 2 * Math.atan(Math.sqrt((1 + elements.e) / (1 - elements.e)) * Math.tan(E / 2));\r\n var r = elements.a * (1 - elements.e * Math.cos(E));\r\n var x = r * a * Math.sin(A + w + v);\r\n var y = r * b * Math.sin(B + w + v);\r\n var z = r * c * Math.sin(C + w + v);\r\n return Vector3d.create(x, z, y);\r\n };\r\n ELL.calculateElements = function(JD, elements) {\r\n var Epsilon = CAANutation.meanObliquityOfEcliptic(elements.jdEquinox);\r\n var JD0 = JD;\r\n var details = new EOD();\r\n Epsilon = CT.d2R(Epsilon);\r\n var omega = CT.d2R(elements.omega);\r\n var w = CT.d2R(elements.w);\r\n var i = CT.d2R(elements.i);\r\n var sinEpsilon = Math.sin(Epsilon);\r\n var cosEpsilon = Math.cos(Epsilon);\r\n var sinOmega = Math.sin(omega);\r\n var cosOmega = Math.cos(omega);\r\n var cosi = Math.cos(i);\r\n var sini = Math.sin(i);\r\n var F = cosOmega;\r\n var G = sinOmega * cosEpsilon;\r\n var H = sinOmega * sinEpsilon;\r\n var P = -sinOmega * cosi;\r\n var Q = cosOmega * cosi * cosEpsilon - sini * sinEpsilon;\r\n var R = cosOmega * cosi * sinEpsilon + sini * cosEpsilon;\r\n var a = Math.sqrt(F * F + P * P);\r\n var b = Math.sqrt(G * G + Q * Q);\r\n var c = Math.sqrt(H * H + R * R);\r\n var A = Math.atan2(F, P);\r\n var B = Math.atan2(G, Q);\r\n var C = Math.atan2(H, R);\r\n var n = ELL.meanMotionFromSemiMajorAxis(elements.a);\r\n var SunCoord = CAASun.equatorialRectangularCoordinatesAnyEquinox(JD, elements.jdEquinox);\r\n for (var j = 0; j < 2; j++) {\r\n var M = n * (JD0 - elements.t);\r\n var E = CAAKepler.calculate(M, elements.e);\r\n E = CT.d2R(E);\r\n var v = 2 * Math.atan(Math.sqrt((1 + elements.e) / (1 - elements.e)) * Math.tan(E / 2));\r\n var r = elements.a * (1 - elements.e * Math.cos(E));\r\n var x = r * a * Math.sin(A + w + v);\r\n var y = r * b * Math.sin(B + w + v);\r\n var z = r * c * Math.sin(C + w + v);\r\n if (!j) {\r\n details.heliocentricRectangularEquatorial.x = x;\r\n details.heliocentricRectangularEquatorial.y = y;\r\n details.heliocentricRectangularEquatorial.z = z;\r\n var u = omega + v;\r\n var cosu = Math.cos(u);\r\n var sinu = Math.sin(u);\r\n details.heliocentricRectangularEcliptical.x = r * (cosOmega * cosu - sinOmega * sinu * cosi);\r\n details.heliocentricRectangularEcliptical.y = r * (sinOmega * cosu + cosOmega * sinu * cosi);\r\n details.heliocentricRectangularEcliptical.z = r * sini * sinu;\r\n details.heliocentricEclipticLongitude = Math.atan2(y, x);\r\n details.heliocentricEclipticLongitude = CT.m24(CT.r2D(details.heliocentricEclipticLongitude) / 15);\r\n details.heliocentricEclipticLatitude = Math.asin(z / r);\r\n details.heliocentricEclipticLatitude = CT.r2D(details.heliocentricEclipticLatitude);\r\n }\r\n var psi = SunCoord.x + x;\r\n var nu = SunCoord.y + y;\r\n var sigma = SunCoord.z + z;\r\n var Alpha = Math.atan2(nu, psi);\r\n Alpha = CT.r2D(Alpha);\r\n var Delta = Math.atan2(sigma, Math.sqrt(psi * psi + nu * nu));\r\n Delta = CT.r2D(Delta);\r\n var Distance = Math.sqrt(psi * psi + nu * nu + sigma * sigma);\r\n if (!j) {\r\n details.trueGeocentricRA = CT.m24(Alpha / 15);\r\n details.trueGeocentricDeclination = Delta;\r\n details.trueGeocentricDistance = Distance;\r\n details.trueGeocentricLightTime = ELL.distanceToLightTime(Distance);\r\n }\r\n else {\r\n details.astrometricGeocenticRA = CT.m24(Alpha / 15);\r\n details.astrometricGeocentricDeclination = Delta;\r\n details.astrometricGeocentricDistance = Distance;\r\n details.astrometricGeocentricLightTime = ELL.distanceToLightTime(Distance);\r\n var RES = Math.sqrt(SunCoord.x * SunCoord.x + SunCoord.y * SunCoord.y + SunCoord.z * SunCoord.z);\r\n details.elongation = Math.acos((RES * RES + Distance * Distance - r * r) / (2 * RES * Distance));\r\n details.elongation = CT.r2D(details.elongation);\r\n details.phaseAngle = Math.acos((r * r + Distance * Distance - RES * RES) / (2 * r * Distance));\r\n details.phaseAngle = CT.r2D(details.phaseAngle);\r\n }\r\n if (!j) {\r\n JD0 = JD - details.trueGeocentricLightTime;\r\n }\r\n }\r\n return details;\r\n };\r\n ELL.instantaneousVelocity = function(r, a) {\r\n return 42.1219 * Math.sqrt((1 / r) - (1 / (2 * a)));\r\n };\r\n ELL.velocityAtPerihelion = function(e, a) {\r\n return 29.7847 / Math.sqrt(a) * Math.sqrt((1 + e) / (1 - e));\r\n };\r\n ELL.velocityAtAphelion = function(e, a) {\r\n return 29.7847 / Math.sqrt(a) * Math.sqrt((1 - e) / (1 + e));\r\n };\r\n ELL.lengthOfEllipse = function(e, a) {\r\n var b = a * Math.sqrt(1 - e * e);\r\n return CT.PI() * (3 * (a + b) - Math.sqrt((a + 3 * b) * (3 * a + b)));\r\n };\r\n ELL.cometMagnitude = function(g, delta, k, r) {\r\n return g + 5 * Util.log10(delta) + k * Util.log10(r);\r\n };\r\n ELL.minorPlanetMagnitude = function(H, delta, G, r, PhaseAngle) {\r\n PhaseAngle = CT.d2R(PhaseAngle);\r\n var phi1 = Math.exp(-3.33 * Math.pow(Math.tan(PhaseAngle / 2), 0.63));\r\n var phi2 = Math.exp(-1.87 * Math.pow(Math.tan(PhaseAngle / 2), 1.22));\r\n return H + 5 * Util.log10(r * delta) - 2.5 * Util.log10((1 - G) * phi1 + G * phi2);\r\n };\r\n var ELL$ = {\r\n\r\n };\r\n\r\n\r\n // EOT\r\n\r\n function EOT() {\r\n }\r\n EOT.calculate = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var L0 = CT.m360(280.4664567 + 360007.6982779 * rho + 0.03032028 * rhosquared + rhocubed / 49931 - rho4 / 15300 - rho5 / 2000000);\r\n var SunLong = CAASun.apparentEclipticLongitude(JD);\r\n var SunLat = CAASun.apparentEclipticLatitude(JD);\r\n var epsilon = CAANutation.trueObliquityOfEcliptic(JD);\r\n var Equatorial = CT.ec2Eq(SunLong, SunLat, epsilon);\r\n epsilon = CT.d2R(epsilon);\r\n var E = L0 - 0.0057183 - Equatorial.x * 15 + CT.dmS2D(0, 0, CAANutation.nutationInLongitude(JD)) * Math.cos(epsilon);\r\n if (E > 180) {\r\n E = -(360 - E);\r\n }\r\n E *= 4;\r\n return E;\r\n };\r\n var EOT$ = {\r\n\r\n };\r\n\r\n\r\n // CAAFK5\r\n\r\n function CAAFK5() {\r\n }\r\n CAAFK5.correctionInLongitude = function(Longitude, Latitude, JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Ldash = Longitude - 1.397 * T - 0.00031 * T * T;\r\n Ldash = CT.d2R(Ldash);\r\n Longitude = CT.d2R(Longitude);\r\n Latitude = CT.d2R(Latitude);\r\n var vvalue = -0.09033 + 0.03916 * (Math.cos(Ldash) + Math.sin(Ldash)) * Math.tan(Latitude);\r\n return CT.dmS2D(0, 0, vvalue);\r\n };\r\n CAAFK5.correctionInLatitude = function(Longitude, JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Ldash = Longitude - 1.397 * T - 0.00031 * T * T;\r\n Ldash = CT.d2R(Ldash);\r\n Longitude = CT.d2R(Longitude);\r\n var vvalue = 0.03916 * (Math.cos(Ldash) - Math.sin(Ldash));\r\n return CT.dmS2D(0, 0, vvalue);\r\n };\r\n CAAFK5.convertVSOPToFK5J2000 = function(vvalue) {\r\n var result = new C3D();\r\n result.x = vvalue.x + 4.4036E-07 * vvalue.y - 1.90919E-07 * vvalue.z;\r\n result.y = -4.79966E-07 * vvalue.x + 0.917482137087 * vvalue.y - 0.397776982902 * vvalue.z;\r\n result.z = 0.397776982902 * vvalue.y + 0.917482137087 * vvalue.z;\r\n return result;\r\n };\r\n CAAFK5.convertVSOPToFK5B1950 = function(vvalue) {\r\n var result = new C3D();\r\n result.x = 0.999925702634 * vvalue.x + 0.012189716217 * vvalue.y + 1.1134016E-05 * vvalue.z;\r\n result.y = -0.011179418036 * vvalue.x + 0.917413998946 * vvalue.y - 0.397777041885 * vvalue.z;\r\n result.z = -0.004859003787 * vvalue.x + 0.397747363646 * vvalue.y + 0.917482111428 * vvalue.z;\r\n return result;\r\n };\r\n CAAFK5.convertVSOPToFK5AnyEquinox = function(vvalue, JDEquinox) {\r\n var t = (JDEquinox - 2451545) / 36525;\r\n var tsquared = t * t;\r\n var tcubed = tsquared * t;\r\n var sigma = 2306.2181 * t + 0.30188 * tsquared + 0.017988 * tcubed;\r\n sigma = CT.d2R(CT.dmS2D(0, 0, sigma));\r\n var zeta = 2306.2181 * t + 1.09468 * tsquared + 0.018203 * tcubed;\r\n zeta = CT.d2R(CT.dmS2D(0, 0, zeta));\r\n var phi = 2004.3109 * t - 0.42665 * tsquared - 0.041833 * tcubed;\r\n phi = CT.d2R(CT.dmS2D(0, 0, phi));\r\n var cossigma = Math.cos(sigma);\r\n var coszeta = Math.cos(zeta);\r\n var cosphi = Math.cos(phi);\r\n var sinsigma = Math.sin(sigma);\r\n var sinzeta = Math.sin(zeta);\r\n var sinphi = Math.sin(phi);\r\n var xx = cossigma * coszeta * cosphi - sinsigma * sinzeta;\r\n var xy = sinsigma * coszeta + cossigma * sinzeta * cosphi;\r\n var xz = cossigma * sinphi;\r\n var yx = -cossigma * sinzeta - sinsigma * coszeta * cosphi;\r\n var yy = cossigma * coszeta - sinsigma * sinzeta * cosphi;\r\n var yz = -sinsigma * sinphi;\r\n var zx = -coszeta * sinphi;\r\n var zy = -sinzeta * sinphi;\r\n var zz = cosphi;\r\n var result = new C3D();\r\n result.x = xx * vvalue.x + yx * vvalue.y + zx * vvalue.z;\r\n result.y = xy * vvalue.x + yy * vvalue.y + zy * vvalue.z;\r\n result.z = xz * vvalue.x + yz * vvalue.y + zz * vvalue.z;\r\n return result;\r\n };\r\n var CAAFK5$ = {\r\n\r\n };\r\n\r\n\r\n // GMD\r\n\r\n function GMD() {\r\n this.meanLongitude = 0;\r\n this.trueLongitude = 0;\r\n this.tropicalLongitude = 0;\r\n this.equatorialLatitude = 0;\r\n this.r = 0;\r\n this.eclipticRectangularCoordinates = new C3D();\r\n this.trueRectangularCoordinates = new C3D();\r\n this.apparentRectangularCoordinates = new C3D();\r\n this.bInTransit = false;\r\n this.bInOccultation = false;\r\n this.bInEclipse = false;\r\n this.bInShadowTransit = false;\r\n this.apparentShadowRectangularCoordinates = new C3D();\r\n this.meanLongitude = 0;\r\n this.trueLongitude = 0;\r\n this.tropicalLongitude = 0;\r\n this.equatorialLatitude = 0;\r\n this.r = 0;\r\n this.bInTransit = false;\r\n this.bInOccultation = false;\r\n this.bInEclipse = false;\r\n this.bInShadowTransit = false;\r\n }\r\n var GMD$ = {\r\n\r\n };\r\n\r\n\r\n // GMDS\r\n\r\n function GMDS() {\r\n this.satellite1 = new GMD();\r\n this.satellite2 = new GMD();\r\n this.satellite3 = new GMD();\r\n this.satellite4 = new GMD();\r\n }\r\n var GMDS$ = {\r\n\r\n };\r\n\r\n\r\n // GM\r\n\r\n function GM() {\r\n }\r\n GM.calculate = function(JD) {\r\n var sunlong = CAASun.geometricEclipticLongitude(JD);\r\n var sunlongrad = CT.d2R(sunlong);\r\n var beta = CAASun.geometricEclipticLatitude(JD);\r\n var betarad = CT.d2R(beta);\r\n var R = CAAEarth.radiusVector(JD);\r\n var DELTA = 5;\r\n var PreviousEarthLightTravelTime = 0;\r\n var EarthLightTravelTime = ELL.distanceToLightTime(DELTA);\r\n var JD1 = JD - EarthLightTravelTime;\r\n var bIterate = true;\r\n var x = 0;\r\n var y = 0;\r\n var z = 0;\r\n var l = 0;\r\n var lrad = 0;\r\n var b = 0;\r\n var brad = 0;\r\n var r = 0;\r\n while (bIterate) {\r\n l = CAAJupiter.eclipticLongitude(JD1);\r\n lrad = CT.d2R(l);\r\n b = CAAJupiter.eclipticLatitude(JD1);\r\n brad = CT.d2R(b);\r\n r = CAAJupiter.radiusVector(JD1);\r\n x = r * Math.cos(brad) * Math.cos(lrad) + R * Math.cos(sunlongrad);\r\n y = r * Math.cos(brad) * Math.sin(lrad) + R * Math.sin(sunlongrad);\r\n z = r * Math.sin(brad) + R * Math.sin(betarad);\r\n DELTA = Math.sqrt(x * x + y * y + z * z);\r\n EarthLightTravelTime = ELL.distanceToLightTime(DELTA);\r\n bIterate = (Math.abs(EarthLightTravelTime - PreviousEarthLightTravelTime) > 2E-06);\r\n if (bIterate) {\r\n JD1 = JD - EarthLightTravelTime;\r\n PreviousEarthLightTravelTime = EarthLightTravelTime;\r\n }\r\n }\r\n var details1 = GM.calculateHelper(JD, sunlongrad, betarad, R);\r\n GM.fillInPhenomenaDetails(details1.satellite1);\r\n GM.fillInPhenomenaDetails(details1.satellite2);\r\n GM.fillInPhenomenaDetails(details1.satellite3);\r\n GM.fillInPhenomenaDetails(details1.satellite4);\r\n JD1 = JD - EarthLightTravelTime;\r\n l = CAAJupiter.eclipticLongitude(JD1);\r\n lrad = CT.d2R(l);\r\n b = CAAJupiter.eclipticLatitude(JD1);\r\n brad = CT.d2R(b);\r\n r = CAAJupiter.radiusVector(JD1);\r\n x = r * Math.cos(brad) * Math.cos(lrad);\r\n y = r * Math.cos(brad) * Math.sin(lrad);\r\n z = r * Math.sin(brad);\r\n DELTA = Math.sqrt(x * x + y * y + z * z);\r\n var SunLightTravelTime = ELL.distanceToLightTime(DELTA);\r\n var details2 = GM.calculateHelper(JD + SunLightTravelTime - EarthLightTravelTime, sunlongrad, betarad, 0);\r\n GM.fillInPhenomenaDetails(details2.satellite1);\r\n GM.fillInPhenomenaDetails(details2.satellite2);\r\n GM.fillInPhenomenaDetails(details2.satellite3);\r\n GM.fillInPhenomenaDetails(details2.satellite4);\r\n details1.satellite1.bInEclipse = details2.satellite1.bInOccultation;\r\n details1.satellite2.bInEclipse = details2.satellite2.bInOccultation;\r\n details1.satellite3.bInEclipse = details2.satellite3.bInOccultation;\r\n details1.satellite4.bInEclipse = details2.satellite4.bInOccultation;\r\n details1.satellite1.bInShadowTransit = details2.satellite1.bInTransit;\r\n details1.satellite2.bInShadowTransit = details2.satellite2.bInTransit;\r\n details1.satellite3.bInShadowTransit = details2.satellite3.bInTransit;\r\n details1.satellite4.bInShadowTransit = details2.satellite4.bInTransit;\r\n details1.satellite1.apparentShadowRectangularCoordinates = details2.satellite1.apparentRectangularCoordinates;\r\n details1.satellite2.apparentShadowRectangularCoordinates = details2.satellite2.apparentRectangularCoordinates;\r\n details1.satellite3.apparentShadowRectangularCoordinates = details2.satellite3.apparentRectangularCoordinates;\r\n details1.satellite4.apparentShadowRectangularCoordinates = details2.satellite4.apparentRectangularCoordinates;\r\n return details1;\r\n };\r\n GM.calculateHelper = function(JD, sunlongrad, betarad, R) {\r\n var details = new GMDS();\r\n var DELTA = 5;\r\n var PreviousLightTravelTime = 0;\r\n var LightTravelTime = ELL.distanceToLightTime(DELTA);\r\n var x = 0;\r\n var y = 0;\r\n var z = 0;\r\n var l = 0;\r\n var lrad = 0;\r\n var b = 0;\r\n var brad = 0;\r\n var r = 0;\r\n var JD1 = JD - LightTravelTime;\r\n var bIterate = true;\r\n while (bIterate) {\r\n l = CAAJupiter.eclipticLongitude(JD1);\r\n lrad = CT.d2R(l);\r\n b = CAAJupiter.eclipticLatitude(JD1);\r\n brad = CT.d2R(b);\r\n r = CAAJupiter.radiusVector(JD1);\r\n x = r * Math.cos(brad) * Math.cos(lrad) + R * Math.cos(sunlongrad);\r\n y = r * Math.cos(brad) * Math.sin(lrad) + R * Math.sin(sunlongrad);\r\n z = r * Math.sin(brad) + R * Math.sin(betarad);\r\n DELTA = Math.sqrt(x * x + y * y + z * z);\r\n LightTravelTime = ELL.distanceToLightTime(DELTA);\r\n bIterate = (Math.abs(LightTravelTime - PreviousLightTravelTime) > 2E-06);\r\n if (bIterate) {\r\n JD1 = JD - LightTravelTime;\r\n PreviousLightTravelTime = LightTravelTime;\r\n }\r\n }\r\n var lambda0 = Math.atan2(y, x);\r\n var beta0 = Math.atan(z / Math.sqrt(x * x + y * y));\r\n var t = JD - 2443000.5 - LightTravelTime;\r\n var l1 = 106.07719 + 203.48895579 * t;\r\n var l1rad = CT.d2R(l1);\r\n var l2 = 175.73161 + 101.374724735 * t;\r\n var l2rad = CT.d2R(l2);\r\n var l3 = 120.55883 + 50.317609207 * t;\r\n var l3rad = CT.d2R(l3);\r\n var l4 = 84.44459 + 21.571071177 * t;\r\n var l4rad = CT.d2R(l4);\r\n var pi1 = CT.d2R(CT.m360(97.0881 + 0.16138586 * t));\r\n var pi2 = CT.d2R(CT.m360(154.8663 + 0.04726307 * t));\r\n var pi3 = CT.d2R(CT.m360(188.184 + 0.00712734 * t));\r\n var pi4 = CT.d2R(CT.m360(335.2868 + 0.00184 * t));\r\n var w1 = 312.3346 - 0.13279386 * t;\r\n var w1rad = CT.d2R(w1);\r\n var w2 = 100.4411 - 0.03263064 * t;\r\n var w2rad = CT.d2R(w2);\r\n var w3 = 119.1942 - 0.00717703 * t;\r\n var w3rad = CT.d2R(w3);\r\n var w4 = 322.6186 - 0.00175934 * t;\r\n var w4rad = CT.d2R(w4);\r\n var GAMMA = 0.33033 * Math.sin(CT.d2R(163.679 + 0.0010512 * t)) + 0.03439 * Math.sin(CT.d2R(34.486 - 0.0161731 * t));\r\n var philambda = CT.d2R(199.6766 + 0.1737919 * t);\r\n var psi = CT.d2R(316.5182 - 2.08E-06 * t);\r\n var G = CT.d2R(30.23756 + 0.0830925701 * t + GAMMA);\r\n var Gdash = CT.d2R(31.97853 + 0.0334597339 * t);\r\n var PI = CT.d2R(13.469942);\r\n var Sigma1 = 0.47259 * Math.sin(2 * (l1rad - l2rad)) + -0.03478 * Math.sin(pi3 - pi4) + 0.01081 * Math.sin(l2rad - 2 * l3rad + pi3) + 0.00738 * Math.sin(philambda) + 0.00713 * Math.sin(l2rad - 2 * l3rad + pi2) + -0.00674 * Math.sin(pi1 + pi3 - 2 * PI - 2 * G) + 0.00666 * Math.sin(l2rad - 2 * l3rad + pi4) + 0.00445 * Math.sin(l1rad - pi3) + -0.00354 * Math.sin(l1rad - l2rad) + -0.00317 * Math.sin(2 * psi - 2 * PI) + 0.00265 * Math.sin(l1rad - pi4) + -0.00186 * Math.sin(G) + 0.00162 * Math.sin(pi2 - pi3) + 0.00158 * Math.sin(4 * (l1rad - l2rad)) + -0.00155 * Math.sin(l1rad - l3rad) + -0.00138 * Math.sin(psi + w3rad - 2 * PI - 2 * G) + -0.00115 * Math.sin(2 * (l1rad - 2 * l2rad + w2rad)) + 0.00089 * Math.sin(pi2 - pi4) + 0.00085 * Math.sin(l1rad + pi3 - 2 * PI - 2 * G) + 0.00083 * Math.sin(w2rad - w3rad) + 0.00053 * Math.sin(psi - w2rad);\r\n var Sigma2 = 1.06476 * Math.sin(2 * (l2rad - l3rad)) + 0.04256 * Math.sin(l1rad - 2 * l2rad + pi3) + 0.03581 * Math.sin(l2rad - pi3) + 0.02395 * Math.sin(l1rad - 2 * l2rad + pi4) + 0.01984 * Math.sin(l2rad - pi4) + -0.01778 * Math.sin(philambda) + 0.01654 * Math.sin(l2rad - pi2) + 0.01334 * Math.sin(l2rad - 2 * l3rad + pi2) + 0.01294 * Math.sin(pi3 - pi4) + -0.01142 * Math.sin(l2rad - l3rad) + -0.01057 * Math.sin(G) + -0.00775 * Math.sin(2 * (psi - PI)) + 0.00524 * Math.sin(2 * (l1rad - l2rad)) + -0.0046 * Math.sin(l1rad - l3rad) + 0.00316 * Math.sin(psi - 2 * G + w3rad - 2 * PI) + -0.00203 * Math.sin(pi1 + pi3 - 2 * PI - 2 * G) + 0.00146 * Math.sin(psi - w3rad) + -0.00145 * Math.sin(2 * G) + 0.00125 * Math.sin(psi - w4rad) + -0.00115 * Math.sin(l1rad - 2 * l3rad + pi3) + -0.00094 * Math.sin(2 * (l2rad - w2rad)) + 0.00086 * Math.sin(2 * (l1rad - 2 * l2rad + w2rad)) + -0.00086 * Math.sin(5 * Gdash - 2 * G + CT.d2R(52.225)) + -0.00078 * Math.sin(l2rad - l4rad) + -0.00064 * Math.sin(3 * l3rad - 7 * l4rad + 4 * pi4) + 0.00064 * Math.sin(pi1 - pi4) + -0.00063 * Math.sin(l1rad - 2 * l3rad + pi4) + 0.00058 * Math.sin(w3rad - w4rad) + 0.00056 * Math.sin(2 * (psi - PI - G)) + 0.00056 * Math.sin(2 * (l2rad - l4rad)) + 0.00055 * Math.sin(2 * (l1rad - l3rad)) + 0.00052 * Math.sin(3 * l3rad - 7 * l4rad + pi3 + 3 * pi4) + -0.00043 * Math.sin(l1rad - pi3) + 0.00041 * Math.sin(5 * (l2rad - l3rad)) + 0.00041 * Math.sin(pi4 - PI) + 0.00032 * Math.sin(w2rad - w3rad) + 0.00032 * Math.sin(2 * (l3rad - G - PI));\r\n var Sigma3 = 0.1649 * Math.sin(l3rad - pi3) + 0.09081 * Math.sin(l3rad - pi4) + -0.06907 * Math.sin(l2rad - l3rad) + 0.03784 * Math.sin(pi3 - pi4) + 0.01846 * Math.sin(2 * (l3rad - l4rad)) + -0.0134 * Math.sin(G) + -0.01014 * Math.sin(2 * (psi - PI)) + 0.00704 * Math.sin(l2rad - 2 * l3rad + pi3) + -0.0062 * Math.sin(l2rad - 2 * l3rad + pi2) + -0.00541 * Math.sin(l3rad - l4rad) + 0.00381 * Math.sin(l2rad - 2 * l3rad + pi4) + 0.00235 * Math.sin(psi - w3rad) + 0.00198 * Math.sin(psi - w4rad) + 0.00176 * Math.sin(philambda) + 0.0013 * Math.sin(3 * (l3rad - l4rad)) + 0.00125 * Math.sin(l1rad - l3rad) + -0.00119 * Math.sin(5 * Gdash - 2 * G + CT.d2R(52.225)) + 0.00109 * Math.sin(l1rad - l2rad) + -0.001 * Math.sin(3 * l3rad - 7 * l4rad + 4 * pi4) + 0.00091 * Math.sin(w3rad - w4rad) + 0.0008 * Math.sin(3 * l3rad - 7 * l4rad + pi3 + 3 * pi4) + -0.00075 * Math.sin(2 * l2rad - 3 * l3rad + pi3) + 0.00072 * Math.sin(pi1 + pi3 - 2 * PI - 2 * G) + 0.00069 * Math.sin(pi4 - PI) + -0.00058 * Math.sin(2 * l3rad - 3 * l4rad + pi4) + -0.00057 * Math.sin(l3rad - 2 * l4rad + pi4) + 0.00056 * Math.sin(l3rad + pi3 - 2 * PI - 2 * G) + -0.00052 * Math.sin(l2rad - 2 * l3rad + pi1) + -0.0005 * Math.sin(pi2 - pi3) + 0.00048 * Math.sin(l3rad - 2 * l4rad + pi3) + -0.00045 * Math.sin(2 * l2rad - 3 * l3rad + pi4) + -0.00041 * Math.sin(pi2 - pi4) + -0.00038 * Math.sin(2 * G) + -0.00037 * Math.sin(pi3 - pi4 + w3rad - w4rad) + -0.00032 * Math.sin(3 * l3rad - 7 * l4rad + 2 * pi3 + 2 * pi4) + 0.0003 * Math.sin(4 * (l3rad - l4rad)) + 0.00029 * Math.sin(l3rad + pi4 - 2 * PI - 2 * G) + -0.00028 * Math.sin(w3rad + psi - 2 * PI - 2 * G) + 0.00026 * Math.sin(l3rad - PI - G) + 0.00024 * Math.sin(l2rad - 3 * l3rad + 2 * l4rad) + 0.00021 * Math.sin(l3rad - PI - G) + -0.00021 * Math.sin(l3rad - pi2) + 0.00017 * Math.sin(2 * (l3rad - pi3));\r\n var Sigma4 = 0.84287 * Math.sin(l4rad - pi4) + 0.03431 * Math.sin(pi4 - pi3) + -0.03305 * Math.sin(2 * (psi - PI)) + -0.03211 * Math.sin(G) + -0.01862 * Math.sin(l4rad - pi3) + 0.01186 * Math.sin(psi - w4rad) + 0.00623 * Math.sin(l4rad + pi4 - 2 * G - 2 * PI) + 0.00387 * Math.sin(2 * (l4rad - pi4)) + -0.00284 * Math.sin(5 * Gdash - 2 * G + CT.d2R(52.225)) + -0.00234 * Math.sin(2 * (psi - pi4)) + -0.00223 * Math.sin(l3rad - l4rad) + -0.00208 * Math.sin(l4rad - PI) + 0.00178 * Math.sin(psi + w4rad - 2 * pi4) + 0.00134 * Math.sin(pi4 - PI) + 0.00125 * Math.sin(2 * (l4rad - G - PI)) + -0.00117 * Math.sin(2 * G) + -0.00112 * Math.sin(2 * (l3rad - l4rad)) + 0.00107 * Math.sin(3 * l3rad - 7 * l4rad + 4 * pi4) + 0.00102 * Math.sin(l4rad - G - PI) + 0.00096 * Math.sin(2 * l4rad - psi - w4rad) + 0.00087 * Math.sin(2 * (psi - w4rad)) + -0.00085 * Math.sin(3 * l3rad - 7 * l4rad + pi3 + 3 * pi4) + 0.00085 * Math.sin(l3rad - 2 * l4rad + pi4) + -0.00081 * Math.sin(2 * (l4rad - psi)) + 0.00071 * Math.sin(l4rad + pi4 - 2 * PI - 3 * G) + 0.00061 * Math.sin(l1rad - l4rad) + -0.00056 * Math.sin(psi - w3rad) + -0.00054 * Math.sin(l3rad - 2 * l4rad + pi3) + 0.00051 * Math.sin(l2rad - l4rad) + 0.00042 * Math.sin(2 * (psi - G - PI)) + 0.00039 * Math.sin(2 * (pi4 - w4rad)) + 0.00036 * Math.sin(psi + PI - pi4 - w4rad) + 0.00035 * Math.sin(2 * Gdash - G + CT.d2R(188.37)) + -0.00035 * Math.sin(l4rad - pi4 + 2 * PI - 2 * psi) + -0.00032 * Math.sin(l4rad + pi4 - 2 * PI - G) + 0.0003 * Math.sin(2 * Gdash - 2 * G + CT.d2R(149.15)) + 0.00029 * Math.sin(3 * l3rad - 7 * l4rad + 2 * pi3 + 2 * pi4) + 0.00028 * Math.sin(l4rad - pi4 + 2 * psi - 2 * PI) + -0.00028 * Math.sin(2 * (l4rad - w4rad)) + -0.00027 * Math.sin(pi3 - pi4 + w3rad - w4rad) + -0.00026 * Math.sin(5 * Gdash - 3 * G + CT.d2R(188.37)) + 0.00025 * Math.sin(w4rad - w3rad) + -0.00025 * Math.sin(l2rad - 3 * l3rad + 2 * l4rad) + -0.00023 * Math.sin(3 * (l3rad - l4rad)) + 0.00021 * Math.sin(2 * l4rad - 2 * PI - 3 * G) + -0.00021 * Math.sin(2 * l3rad - 3 * l4rad + pi4) + 0.00019 * Math.sin(l4rad - pi4 - G) + -0.00019 * Math.sin(2 * l4rad - pi3 - pi4) + -0.00018 * Math.sin(l4rad - pi4 + G) + -0.00016 * Math.sin(l4rad + pi3 - 2 * PI - 2 * G);\r\n details.satellite1.meanLongitude = CT.m360(l1);\r\n details.satellite1.trueLongitude = CT.m360(l1 + Sigma1);\r\n var L1 = CT.d2R(details.satellite1.trueLongitude);\r\n details.satellite2.meanLongitude = CT.m360(l2);\r\n details.satellite2.trueLongitude = CT.m360(l2 + Sigma2);\r\n var L2 = CT.d2R(details.satellite2.trueLongitude);\r\n details.satellite3.meanLongitude = CT.m360(l3);\r\n details.satellite3.trueLongitude = CT.m360(l3 + Sigma3);\r\n var L3 = CT.d2R(details.satellite3.trueLongitude);\r\n details.satellite4.meanLongitude = CT.m360(l4);\r\n details.satellite4.trueLongitude = CT.m360(l4 + Sigma4);\r\n var L4 = CT.d2R(details.satellite4.trueLongitude);\r\n var B1 = Math.atan(0.0006393 * Math.sin(L1 - w1rad) + 0.0001825 * Math.sin(L1 - w2rad) + 3.29E-05 * Math.sin(L1 - w3rad) + -3.11E-05 * Math.sin(L1 - psi) + 9.3E-06 * Math.sin(L1 - w4rad) + 7.5E-06 * Math.sin(3 * L1 - 4 * l2rad - 1.9927 * Sigma1 + w2rad) + 4.6E-06 * Math.sin(L1 + psi - 2 * PI - 2 * G));\r\n details.satellite1.equatorialLatitude = CT.r2D(B1);\r\n var B2 = Math.atan(0.0081004 * Math.sin(L2 - w2rad) + 0.0004512 * Math.sin(L2 - w3rad) + -0.0003284 * Math.sin(L2 - psi) + 0.000116 * Math.sin(L2 - w4rad) + 2.72E-05 * Math.sin(l1rad - 2 * l3rad + 1.0146 * Sigma2 + w2rad) + -1.44E-05 * Math.sin(L2 - w1rad) + 1.43E-05 * Math.sin(L2 + psi - 2 * PI - 2 * G) + 3.5E-06 * Math.sin(L2 - psi + G) + -2.8E-06 * Math.sin(l1rad - 2 * l3rad + 1.0146 * Sigma2 + w3rad));\r\n details.satellite2.equatorialLatitude = CT.r2D(B2);\r\n var B3 = Math.atan(0.0032402 * Math.sin(L3 - w3rad) + -0.0016911 * Math.sin(L3 - psi) + 0.0006847 * Math.sin(L3 - w4rad) + -0.0002797 * Math.sin(L3 - w2rad) + 3.21E-05 * Math.sin(L3 + psi - 2 * PI - 2 * G) + 5.1E-06 * Math.sin(L3 - psi + G) + -4.5E-06 * Math.sin(L3 - psi - G) + -4.5E-06 * Math.sin(L3 + psi - 2 * PI) + 3.7E-06 * Math.sin(L3 + psi - 2 * PI - 3 * G) + 3E-06 * Math.sin(2 * l2rad - 3 * L3 + 4.03 * Sigma3 + w2rad) + -2.1E-06 * Math.sin(2 * l2rad - 3 * L3 + 4.03 * Sigma3 + w3rad));\r\n details.satellite3.equatorialLatitude = CT.r2D(B3);\r\n var B4 = Math.atan(-0.0076579 * Math.sin(L4 - psi) + 0.0044134 * Math.sin(L4 - w4rad) + -0.0005112 * Math.sin(L4 - w3rad) + 7.73E-05 * Math.sin(L4 + psi - 2 * PI - 2 * G) + 1.04E-05 * Math.sin(L4 - psi + G) + -1.02E-05 * Math.sin(L4 - psi - G) + 8.8E-06 * Math.sin(L4 + psi - 2 * PI - 3 * G) + -3.8E-06 * Math.sin(L4 + psi - 2 * PI - G));\r\n details.satellite4.equatorialLatitude = CT.r2D(B4);\r\n details.satellite1.r = 5.90569 * (1 + (-0.0041339 * Math.cos(2 * (l1rad - l2rad)) + -3.87E-05 * Math.cos(l1rad - pi3) + -2.14E-05 * Math.cos(l1rad - pi4) + 1.7E-05 * Math.cos(l1rad - l2rad) + -1.31E-05 * Math.cos(4 * (l1rad - l2rad)) + 1.06E-05 * Math.cos(l1rad - l3rad) + -6.6E-06 * Math.cos(l1rad + pi3 - 2 * PI - 2 * G)));\r\n details.satellite2.r = 9.39657 * (1 + (0.0093848 * Math.cos(l1rad - l2rad) + -0.0003116 * Math.cos(l2rad - pi3) + -0.0001744 * Math.cos(l2rad - pi4) + -0.0001442 * Math.cos(l2rad - pi2) + 5.53E-05 * Math.cos(l2rad - l3rad) + 5.23E-05 * Math.cos(l1rad - l3rad) + -2.9E-05 * Math.cos(2 * (l1rad - l2rad)) + 1.64E-05 * Math.cos(2 * (l2rad - w2rad)) + 1.07E-05 * Math.cos(l1rad - 2 * l3rad + pi3) + -1.02E-05 * Math.cos(l2rad - pi1) + -9.1E-06 * Math.cos(2 * (l1rad - l3rad))));\r\n details.satellite3.r = 14.98832 * (1 + (-0.0014388 * Math.cos(l3rad - pi3) + -0.0007919 * Math.cos(l3rad - pi4) + 0.0006342 * Math.cos(l2rad - l3rad) + -0.0001761 * Math.cos(2 * (l3rad - l4rad)) + 2.94E-05 * Math.cos(l3rad - l4rad) + -1.56E-05 * Math.cos(3 * (l3rad - l4rad)) + 1.56E-05 * Math.cos(l1rad - l3rad) + -1.53E-05 * Math.cos(l1rad - l2rad) + 7E-06 * Math.cos(2 * l2rad - 3 * l3rad + pi3) + -5.1E-06 * Math.cos(l3rad + pi3 - 2 * PI - 2 * G)));\r\n details.satellite4.r = 26.36273 * (1 + (-0.0073546 * Math.cos(l4rad - pi4) + 0.0001621 * Math.cos(l4rad - pi3) + 9.74E-05 * Math.cos(l3rad - l4rad) + -5.43E-05 * Math.cos(l4rad + pi4 - 2 * PI - 2 * G) + -2.71E-05 * Math.cos(2 * (l4rad - pi4)) + 1.82E-05 * Math.cos(l4rad - PI) + 1.77E-05 * Math.cos(2 * (l3rad - l4rad)) + -1.67E-05 * Math.cos(2 * l4rad - psi - w4rad) + 1.67E-05 * Math.cos(psi - w4rad) + -1.55E-05 * Math.cos(2 * (l4rad - PI - G)) + 1.42E-05 * Math.cos(2 * (l4rad - psi)) + 1.05E-05 * Math.cos(l1rad - l4rad) + 9.2E-06 * Math.cos(l2rad - l4rad) + -8.9E-06 * Math.cos(l4rad - PI - G) + -6.2E-06 * Math.cos(l4rad + pi4 - 2 * PI - 3 * G) + 4.8E-06 * Math.cos(2 * (l4rad - w4rad))));\r\n var T0 = (JD - 2433282.423) / 36525;\r\n var P = CT.d2R(1.3966626 * T0 + 0.0003088 * T0 * T0);\r\n L1 += P;\r\n details.satellite1.tropicalLongitude = CT.m360(CT.r2D(L1));\r\n L2 += P;\r\n details.satellite2.tropicalLongitude = CT.m360(CT.r2D(L2));\r\n L3 += P;\r\n details.satellite3.tropicalLongitude = CT.m360(CT.r2D(L3));\r\n L4 += P;\r\n details.satellite4.tropicalLongitude = CT.m360(CT.r2D(L4));\r\n psi += P;\r\n var T = (JD - 2415020.5) / 36525;\r\n var I = 3.120262 + 0.0006 * T;\r\n var Irad = CT.d2R(I);\r\n var X1 = details.satellite1.r * Math.cos(L1 - psi) * Math.cos(B1);\r\n var X2 = details.satellite2.r * Math.cos(L2 - psi) * Math.cos(B2);\r\n var X3 = details.satellite3.r * Math.cos(L3 - psi) * Math.cos(B3);\r\n var X4 = details.satellite4.r * Math.cos(L4 - psi) * Math.cos(B4);\r\n var X5 = 0;\r\n var Y1 = details.satellite1.r * Math.sin(L1 - psi) * Math.cos(B1);\r\n var Y2 = details.satellite2.r * Math.sin(L2 - psi) * Math.cos(B2);\r\n var Y3 = details.satellite3.r * Math.sin(L3 - psi) * Math.cos(B3);\r\n var Y4 = details.satellite4.r * Math.sin(L4 - psi) * Math.cos(B4);\r\n var Y5 = 0;\r\n var Z1 = details.satellite1.r * Math.sin(B1);\r\n var Z2 = details.satellite2.r * Math.sin(B2);\r\n var Z3 = details.satellite3.r * Math.sin(B3);\r\n var Z4 = details.satellite4.r * Math.sin(B4);\r\n var Z5 = 1;\r\n var omega = CT.d2R(EPO.jupiterLongitudeAscendingNode(JD));\r\n var i = CT.d2R(EPO.jupiterInclination(JD));\r\n var A6 = 0;\r\n var B6 = 0;\r\n var C6 = 0;\r\n var north = new C3D();\r\n var abc = GM.rotations(X5, Y5, Z5, Irad, psi, i, omega, lambda0, beta0, north);\r\n A6 = abc[0];\r\n B6 = abc[1];\r\n C6 = abc[2];\r\n var D = Math.atan2(A6, C6);\r\n abc = GM.rotations(X1, Y1, Z1, Irad, psi, i, omega, lambda0, beta0, details.satellite1.eclipticRectangularCoordinates);\r\n A6 = abc[0];\r\n B6 = abc[1];\r\n C6 = abc[2];\r\n details.satellite1.trueRectangularCoordinates.x = A6 * Math.cos(D) - C6 * Math.sin(D);\r\n details.satellite1.trueRectangularCoordinates.y = A6 * Math.sin(D) + C6 * Math.cos(D);\r\n details.satellite1.trueRectangularCoordinates.z = B6;\r\n abc = GM.rotations(X2, Y2, Z2, Irad, psi, i, omega, lambda0, beta0, details.satellite2.eclipticRectangularCoordinates);\r\n A6 = abc[0];\r\n B6 = abc[1];\r\n C6 = abc[2];\r\n details.satellite2.trueRectangularCoordinates.x = A6 * Math.cos(D) - C6 * Math.sin(D);\r\n details.satellite2.trueRectangularCoordinates.y = A6 * Math.sin(D) + C6 * Math.cos(D);\r\n details.satellite2.trueRectangularCoordinates.z = B6;\r\n abc = GM.rotations(X3, Y3, Z3, Irad, psi, i, omega, lambda0, beta0, details.satellite3.eclipticRectangularCoordinates);\r\n A6 = abc[0];\r\n B6 = abc[1];\r\n C6 = abc[2];\r\n details.satellite3.trueRectangularCoordinates.x = A6 * Math.cos(D) - C6 * Math.sin(D);\r\n details.satellite3.trueRectangularCoordinates.y = A6 * Math.sin(D) + C6 * Math.cos(D);\r\n details.satellite3.trueRectangularCoordinates.z = B6;\r\n abc = GM.rotations(X4, Y4, Z4, Irad, psi, i, omega, lambda0, beta0, details.satellite4.eclipticRectangularCoordinates);\r\n A6 = abc[0];\r\n B6 = abc[1];\r\n C6 = abc[2];\r\n details.satellite4.trueRectangularCoordinates.x = A6 * Math.cos(D) - C6 * Math.sin(D);\r\n details.satellite4.trueRectangularCoordinates.y = A6 * Math.sin(D) + C6 * Math.cos(D);\r\n details.satellite4.trueRectangularCoordinates.z = B6;\r\n details.satellite1.apparentRectangularCoordinates.x = details.satellite1.trueRectangularCoordinates.x + Math.abs(details.satellite1.trueRectangularCoordinates.z) / 17295 * Math.sqrt(1 - (details.satellite1.trueRectangularCoordinates.x / details.satellite1.r) * (details.satellite1.trueRectangularCoordinates.x / details.satellite1.r));\r\n details.satellite1.apparentRectangularCoordinates.y = details.satellite1.trueRectangularCoordinates.y;\r\n details.satellite1.apparentRectangularCoordinates.z = details.satellite1.trueRectangularCoordinates.z;\r\n details.satellite2.apparentRectangularCoordinates.x = details.satellite2.trueRectangularCoordinates.x + Math.abs(details.satellite2.trueRectangularCoordinates.z) / 21819 * Math.sqrt(1 - (details.satellite2.trueRectangularCoordinates.x / details.satellite2.r) * (details.satellite2.trueRectangularCoordinates.x / details.satellite2.r));\r\n details.satellite2.apparentRectangularCoordinates.y = details.satellite2.trueRectangularCoordinates.y;\r\n details.satellite2.apparentRectangularCoordinates.z = details.satellite2.trueRectangularCoordinates.z;\r\n details.satellite3.apparentRectangularCoordinates.x = details.satellite3.trueRectangularCoordinates.x + Math.abs(details.satellite3.trueRectangularCoordinates.z) / 27558 * Math.sqrt(1 - (details.satellite3.trueRectangularCoordinates.x / details.satellite3.r) * (details.satellite3.trueRectangularCoordinates.x / details.satellite3.r));\r\n details.satellite3.apparentRectangularCoordinates.y = details.satellite3.trueRectangularCoordinates.y;\r\n details.satellite3.apparentRectangularCoordinates.z = details.satellite3.trueRectangularCoordinates.z;\r\n details.satellite4.apparentRectangularCoordinates.x = details.satellite4.trueRectangularCoordinates.x + Math.abs(details.satellite4.trueRectangularCoordinates.z) / 36548 * Math.sqrt(1 - (details.satellite4.trueRectangularCoordinates.x / details.satellite4.r) * (details.satellite4.trueRectangularCoordinates.x / details.satellite4.r));\r\n details.satellite4.apparentRectangularCoordinates.y = details.satellite4.trueRectangularCoordinates.y;\r\n details.satellite4.apparentRectangularCoordinates.z = details.satellite4.trueRectangularCoordinates.z;\r\n var W = DELTA / (DELTA + details.satellite1.trueRectangularCoordinates.z / 2095);\r\n details.satellite1.apparentRectangularCoordinates.x *= W;\r\n details.satellite1.apparentRectangularCoordinates.y *= W;\r\n W = DELTA / (DELTA + details.satellite2.trueRectangularCoordinates.z / 2095);\r\n details.satellite2.apparentRectangularCoordinates.x *= W;\r\n details.satellite2.apparentRectangularCoordinates.y *= W;\r\n W = DELTA / (DELTA + details.satellite3.trueRectangularCoordinates.z / 2095);\r\n details.satellite3.apparentRectangularCoordinates.x *= W;\r\n details.satellite3.apparentRectangularCoordinates.y *= W;\r\n W = DELTA / (DELTA + details.satellite4.trueRectangularCoordinates.z / 2095);\r\n details.satellite4.apparentRectangularCoordinates.x *= W;\r\n details.satellite4.apparentRectangularCoordinates.y *= W;\r\n return details;\r\n };\r\n GM.rotations = function(X, Y, Z, I, psi, i, omega, lambda0, beta0, eclipticCoord) {\r\n var A6;\r\n var B6;\r\n var C6;\r\n var phi = psi - omega;\r\n var A1 = X;\r\n var B1 = Y * Math.cos(I) - Z * Math.sin(I);\r\n var C1 = Y * Math.sin(I) + Z * Math.cos(I);\r\n var A2 = A1 * Math.cos(phi) - B1 * Math.sin(phi);\r\n var B2 = A1 * Math.sin(phi) + B1 * Math.cos(phi);\r\n var C2 = C1;\r\n var A3 = A2;\r\n var B3 = B2 * Math.cos(i) - C2 * Math.sin(i);\r\n var C3 = B2 * Math.sin(i) + C2 * Math.cos(i);\r\n var A4 = A3 * Math.cos(omega) - B3 * Math.sin(omega);\r\n var B4 = A3 * Math.sin(omega) + B3 * Math.cos(omega);\r\n var C4 = C3;\r\n var JupiterRadiiToAU = 1 / 2095;\r\n eclipticCoord.x = A4 * JupiterRadiiToAU;\r\n eclipticCoord.y = B4 * JupiterRadiiToAU;\r\n eclipticCoord.z = C4 * JupiterRadiiToAU;\r\n var A5 = A4 * Math.sin(lambda0) - B4 * Math.cos(lambda0);\r\n var B5 = A4 * Math.cos(lambda0) + B4 * Math.sin(lambda0);\r\n var C5 = C4;\r\n A6 = A5;\r\n B6 = C5 * Math.sin(beta0) + B5 * Math.cos(beta0);\r\n C6 = C5 * Math.cos(beta0) - B5 * Math.sin(beta0);\r\n return [ A6, B6, C6 ];\r\n };\r\n GM.fillInPhenomenaDetails = function(detail) {\r\n var Y1 = 1.071374 * detail.apparentRectangularCoordinates.y;\r\n var r = Y1 * Y1 + detail.apparentRectangularCoordinates.x * detail.apparentRectangularCoordinates.x;\r\n if (r < 1) {\r\n if (detail.apparentRectangularCoordinates.z < 0) {\r\n detail.bInTransit = true;\r\n detail.bInOccultation = false;\r\n }\r\n else {\r\n detail.bInTransit = false;\r\n detail.bInOccultation = true;\r\n }\r\n }\r\n else {\r\n detail.bInTransit = false;\r\n detail.bInOccultation = false;\r\n }\r\n };\r\n var GM$ = {\r\n\r\n };\r\n\r\n\r\n // CAAGlobe\r\n\r\n function CAAGlobe() {\r\n }\r\n CAAGlobe.rhoSinThetaPrime = function(GeographicalLatitude, Height) {\r\n GeographicalLatitude = CT.d2R(GeographicalLatitude);\r\n var U = Math.atan(0.99664719 * Math.tan(GeographicalLatitude));\r\n return 0.99664719 * Math.sin(U) + (Height / 6378149 * Math.sin(GeographicalLatitude));\r\n };\r\n CAAGlobe.rhoCosThetaPrime = function(GeographicalLatitude, Height) {\r\n GeographicalLatitude = CT.d2R(GeographicalLatitude);\r\n var U = Math.atan(0.99664719 * Math.tan(GeographicalLatitude));\r\n return Math.cos(U) + (Height / 6378149 * Math.cos(GeographicalLatitude));\r\n };\r\n CAAGlobe.radiusOfParallelOfLatitude = function(GeographicalLatitude) {\r\n GeographicalLatitude = CT.d2R(GeographicalLatitude);\r\n var sinGeo = Math.sin(GeographicalLatitude);\r\n return (6378.14 * Math.cos(GeographicalLatitude)) / Math.sqrt(1 - 0.0066943847614084 * sinGeo * sinGeo);\r\n };\r\n CAAGlobe.radiusOfCurvature = function(GeographicalLatitude) {\r\n GeographicalLatitude = CT.d2R(GeographicalLatitude);\r\n var sinGeo = Math.sin(GeographicalLatitude);\r\n return (6378.14 * (1 - 0.0066943847614084)) / Math.pow((1 - 0.0066943847614084 * sinGeo * sinGeo), 1.5);\r\n };\r\n CAAGlobe.distanceBetweenPoints = function(GeographicalLatitude1, GeographicalLongitude1, GeographicalLatitude2, GeographicalLongitude2) {\r\n GeographicalLatitude1 = CT.d2R(GeographicalLatitude1);\r\n GeographicalLatitude2 = CT.d2R(GeographicalLatitude2);\r\n GeographicalLongitude1 = CT.d2R(GeographicalLongitude1);\r\n GeographicalLongitude2 = CT.d2R(GeographicalLongitude2);\r\n var F = (GeographicalLatitude1 + GeographicalLatitude2) / 2;\r\n var G = (GeographicalLatitude1 - GeographicalLatitude2) / 2;\r\n var lambda = (GeographicalLongitude1 - GeographicalLongitude2) / 2;\r\n var sinG = Math.sin(G);\r\n var cosG = Math.cos(G);\r\n var cosF = Math.cos(F);\r\n var sinF = Math.sin(F);\r\n var sinLambda = Math.sin(lambda);\r\n var cosLambda = Math.cos(lambda);\r\n var S = (sinG * sinG * cosLambda * cosLambda) + (cosF * cosF * sinLambda * sinLambda);\r\n var C = (cosG * cosG * cosLambda * cosLambda) + (sinF * sinF * sinLambda * sinLambda);\r\n var w = Math.atan(Math.sqrt(S / C));\r\n var R = Math.sqrt(S * C) / w;\r\n var D = 2 * w * 6378.14;\r\n var Hprime = (3 * R - 1) / (2 * C);\r\n var Hprime2 = (3 * R + 1) / (2 * S);\r\n var f = 0.00335281317789691;\r\n return D * (1 + (f * Hprime * sinF * sinF * cosG * cosG) - (f * Hprime2 * cosF * cosF * sinG * sinG));\r\n };\r\n var CAAGlobe$ = {\r\n\r\n };\r\n\r\n\r\n // IFR\r\n\r\n function IFR() {\r\n }\r\n IFR.phaseAngle = function(r, R, Delta) {\r\n return CT.m360(CT.r2D(Math.acos((r * r + Delta * Delta - R * R) / (2 * r * Delta))));\r\n };\r\n IFR.phaseAngle2 = function(R, R0, B, L, L0, Delta) {\r\n B = CT.d2R(B);\r\n L = CT.d2R(L);\r\n L0 = CT.d2R(L0);\r\n return CT.m360(CT.r2D(Math.acos((R - R0 * Math.cos(B) * Math.cos(L - L0)) / Delta)));\r\n };\r\n IFR.phaseAngleRectangular = function(x, y, z, B, L, Delta) {\r\n B = CT.d2R(B);\r\n L = CT.d2R(L);\r\n var cosB = Math.cos(B);\r\n return CT.m360(CT.r2D(Math.acos((x * cosB * Math.cos(L) + y * cosB * Math.sin(L) + z * Math.sin(B)) / Delta)));\r\n };\r\n IFR.illuminatedFraction = function(PhaseAngle) {\r\n PhaseAngle = CT.d2R(PhaseAngle);\r\n return (1 + Math.cos(PhaseAngle)) / 2;\r\n };\r\n IFR.illuminatedFraction2 = function(r, R, Delta) {\r\n return (((r + Delta) * (r + Delta) - R * R) / (4 * r * Delta));\r\n };\r\n IFR.mercuryMagnitudeMuller = function(r, Delta, i) {\r\n var I_50 = i - 50;\r\n return 1.16 + 5 * Util.log10(r * Delta) + 0.02838 * I_50 + 0.0001023 * I_50 * I_50;\r\n };\r\n IFR.venusMagnitudeMuller = function(r, Delta, i) {\r\n return -4 + 5 * Util.log10(r * Delta) + 0.01322 * i + 4.247E-07 * i * i * i;\r\n };\r\n IFR.marsMagnitudeMuller = function(r, Delta, i) {\r\n return -1.3 + 5 * Util.log10(r * Delta) + 0.01486 * i;\r\n };\r\n IFR.jupiterMagnitudeMuller = function(r, Delta) {\r\n return -8.93 + 5 * Util.log10(r * Delta);\r\n };\r\n IFR.saturnMagnitudeMuller = function(r, Delta, DeltaU, B) {\r\n B = CT.d2R(B);\r\n var sinB = Math.sin(B);\r\n return -8.68 + 5 * Util.log10(r * Delta) + 0.044 * Math.abs(DeltaU) - 2.6 * Math.sin(Math.abs(B)) + 1.25 * sinB * sinB;\r\n };\r\n IFR.uranusMagnitudeMuller = function(r, Delta) {\r\n return -6.85 + 5 * Util.log10(r * Delta);\r\n };\r\n IFR.neptuneMagnitudeMuller = function(r, Delta) {\r\n return -7.05 + 5 * Util.log10(r * Delta);\r\n };\r\n IFR.mercuryMagnitudeAA = function(r, Delta, i) {\r\n var i2 = i * i;\r\n var i3 = i2 * i;\r\n return -0.42 + 5 * Util.log10(r * Delta) + 0.038 * i - 0.000273 * i2 + 2E-06 * i3;\r\n };\r\n IFR.venusMagnitudeAA = function(r, Delta, i) {\r\n var i2 = i * i;\r\n var i3 = i2 * i;\r\n return -4.4 + 5 * Util.log10(r * Delta) + 0.0009 * i + 0.000239 * i2 - 6.5E-07 * i3;\r\n };\r\n IFR.marsMagnitudeAA = function(r, Delta, i) {\r\n return -1.52 + 5 * Util.log10(r * Delta) + 0.016 * i;\r\n };\r\n IFR.jupiterMagnitudeAA = function(r, Delta, i) {\r\n return -9.4 + 5 * Util.log10(r * Delta) + 0.005 * i;\r\n };\r\n IFR.saturnMagnitudeAA = function(r, Delta, DeltaU, B) {\r\n B = CT.d2R(B);\r\n var sinB = Math.sin(B);\r\n return -8.88 + 5 * Util.log10(r * Delta) + 0.044 * Math.abs(DeltaU) - 2.6 * Math.sin(Math.abs(B)) + 1.25 * sinB * sinB;\r\n };\r\n IFR.uranusMagnitudeAA = function(r, Delta) {\r\n return -7.19 + 5 * Util.log10(r * Delta);\r\n };\r\n IFR.neptuneMagnitudeAA = function(r, Delta) {\r\n return -6.87 + 5 * Util.log10(r * Delta);\r\n };\r\n IFR.plutoMagnitudeAA = function(r, Delta) {\r\n return -1 + 5 * Util.log10(r * Delta);\r\n };\r\n var IFR$ = {\r\n\r\n };\r\n\r\n\r\n // INTP\r\n\r\n function INTP() {\r\n }\r\n INTP.interpolate = function(n, Y1, Y2, Y3) {\r\n var a = Y2 - Y1;\r\n var b = Y3 - Y2;\r\n var c = Y1 + Y3 - 2 * Y2;\r\n return Y2 + n / 2 * (a + b + n * c);\r\n };\r\n INTP.interpolate2 = function(n, Y1, Y2, Y3, Y4, Y5) {\r\n var A = Y2 - Y1;\r\n var B = Y3 - Y2;\r\n var C = Y4 - Y3;\r\n var D = Y5 - Y4;\r\n var E = B - A;\r\n var F = C - B;\r\n var G = D - C;\r\n var H = F - E;\r\n var J = G - F;\r\n var K = J - H;\r\n var N2 = n * n;\r\n var N3 = N2 * n;\r\n var N4 = N3 * n;\r\n return Y3 + n * ((B + C) / 2 - (H + J) / 12) + N2 * (F / 2 - K / 24) + N3 * ((H + J) / 12) + N4 * (K / 24);\r\n };\r\n INTP.interpolateToHalves = function(Y1, Y2, Y3, Y4) {\r\n return (9 * (Y2 + Y3) - Y1 - Y4) / 16;\r\n };\r\n INTP.lagrangeInterpolate = function(X, n, pX, pY) {\r\n var V = 0;\r\n for (var i = 1; i <= n; i++) {\r\n var C = 1;\r\n for (var j = 1; j <= n; j++) {\r\n if (j !== i) {\r\n C = C * (X - pX[j - 1]) / (pX[i - 1] - pX[j - 1]);\r\n }\r\n }\r\n V += C * pY[i - 1];\r\n }\r\n return V;\r\n };\r\n INTP.zero = function(Y1, Y2, Y3) {\r\n var a = Y2 - Y1;\r\n var b = Y3 - Y2;\r\n var c = Y1 + Y3 - 2 * Y2;\r\n var bRecalc = true;\r\n var n0prev = 0;\r\n var n0 = n0prev;\r\n while (bRecalc) {\r\n n0 = -2 * Y2 / (a + b + c * n0prev);\r\n bRecalc = (Math.abs(n0 - n0prev) > 1E-12);\r\n if (bRecalc) {\r\n n0prev = n0;\r\n }\r\n }\r\n return n0;\r\n };\r\n INTP.zeroB = function(Y1, Y2, Y3, Y4, Y5) {\r\n var A = Y2 - Y1;\r\n var B = Y3 - Y2;\r\n var C = Y4 - Y3;\r\n var D = Y5 - Y4;\r\n var E = B - A;\r\n var F = C - B;\r\n var G = D - C;\r\n var H = F - E;\r\n var J = G - F;\r\n var K = J - H;\r\n var bRecalc = true;\r\n var n0prev = 0;\r\n var n0 = n0prev;\r\n while (bRecalc) {\r\n var n0prev2 = n0prev * n0prev;\r\n var n0prev3 = n0prev2 * n0prev;\r\n var n0prev4 = n0prev3 * n0prev;\r\n n0 = (-24 * Y3 + n0prev2 * (K - 12 * F) - 2 * n0prev3 * (H + J) - n0prev4 * K) / (2 * (6 * B + 6 * C - H - J));\r\n bRecalc = (Math.abs(n0 - n0prev) > 1E-12);\r\n if (bRecalc) {\r\n n0prev = n0;\r\n }\r\n }\r\n return n0;\r\n };\r\n INTP.zero2 = function(Y1, Y2, Y3) {\r\n var a = Y2 - Y1;\r\n var b = Y3 - Y2;\r\n var c = Y1 + Y3 - 2 * Y2;\r\n var bRecalc = true;\r\n var n0prev = 0;\r\n var n0 = n0prev;\r\n while (bRecalc) {\r\n var deltan0 = -(2 * Y2 + n0prev * (a + b + c * n0prev)) / (a + b + 2 * c * n0prev);\r\n n0 = n0prev + deltan0;\r\n bRecalc = (Math.abs(deltan0) > 1E-12);\r\n if (bRecalc) {\r\n n0prev = n0;\r\n }\r\n }\r\n return n0;\r\n };\r\n INTP.zero2B = function(Y1, Y2, Y3, Y4, Y5) {\r\n var A = Y2 - Y1;\r\n var B = Y3 - Y2;\r\n var C = Y4 - Y3;\r\n var D = Y5 - Y4;\r\n var E = B - A;\r\n var F = C - B;\r\n var G = D - C;\r\n var H = F - E;\r\n var J = G - F;\r\n var K = J - H;\r\n var M = K / 24;\r\n var N = (H + J) / 12;\r\n var P = F / 2 - M;\r\n var Q = (B + C) / 2 - N;\r\n var bRecalc = true;\r\n var n0prev = 0;\r\n var n0 = n0prev;\r\n while (bRecalc) {\r\n var n0prev2 = n0prev * n0prev;\r\n var n0prev3 = n0prev2 * n0prev;\r\n var n0prev4 = n0prev3 * n0prev;\r\n var deltan0 = -(M * n0prev4 + N * n0prev3 + P * n0prev2 + Q * n0prev + Y3) / (4 * M * n0prev3 + 3 * N * n0prev2 + 2 * P * n0prev + Q);\r\n n0 = n0prev + deltan0;\r\n bRecalc = (Math.abs(deltan0) > 1E-12);\r\n if (bRecalc) {\r\n n0prev = n0;\r\n }\r\n }\r\n return n0;\r\n };\r\n var INTP$ = {\r\n\r\n };\r\n\r\n\r\n // CAAJupiter\r\n\r\n function CAAJupiter() {\r\n }\r\n CAAJupiter.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nL0Coefficients = GFX.g_L0JupiterCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0JupiterCoefficients[i].a * Math.cos(GFX.g_L0JupiterCoefficients[i].b + GFX.g_L0JupiterCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1JupiterCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1JupiterCoefficients[i].a * Math.cos(GFX.g_L1JupiterCoefficients[i].b + GFX.g_L1JupiterCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2JupiterCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2JupiterCoefficients[i].a * Math.cos(GFX.g_L2JupiterCoefficients[i].b + GFX.g_L2JupiterCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3JupiterCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3JupiterCoefficients[i].a * Math.cos(GFX.g_L3JupiterCoefficients[i].b + GFX.g_L3JupiterCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4JupiterCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4JupiterCoefficients[i].a * Math.cos(GFX.g_L4JupiterCoefficients[i].b + GFX.g_L4JupiterCoefficients[i].c * rho);\r\n }\r\n var nL5Coefficients = GFX.g_L5JupiterCoefficients.length;\r\n var L5 = 0;\r\n for (i = 0; i < nL5Coefficients; i++) {\r\n L5 += GFX.g_L5JupiterCoefficients[i].a * Math.cos(GFX.g_L5JupiterCoefficients[i].b + GFX.g_L5JupiterCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4 + L5 * rho5) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAJupiter.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nB0Coefficients = GFX.g_B0JupiterCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0JupiterCoefficients[i].a * Math.cos(GFX.g_B0JupiterCoefficients[i].b + GFX.g_B0JupiterCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1JupiterCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1JupiterCoefficients[i].a * Math.cos(GFX.g_B1JupiterCoefficients[i].b + GFX.g_B1JupiterCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2JupiterCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2JupiterCoefficients[i].a * Math.cos(GFX.g_B2JupiterCoefficients[i].b + GFX.g_B2JupiterCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3JupiterCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3JupiterCoefficients[i].a * Math.cos(GFX.g_B3JupiterCoefficients[i].b + GFX.g_B3JupiterCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4JupiterCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4JupiterCoefficients[i].a * Math.cos(GFX.g_B4JupiterCoefficients[i].b + GFX.g_B4JupiterCoefficients[i].c * rho);\r\n }\r\n var nB5Coefficients = GFX.g_B5JupiterCoefficients.length;\r\n var B5 = 0;\r\n for (i = 0; i < nB5Coefficients; i++) {\r\n B5 += GFX.g_B5JupiterCoefficients[i].a * Math.cos(GFX.g_B5JupiterCoefficients[i].b + GFX.g_B5JupiterCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4 + B5 * rho5) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAAJupiter.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nR0Coefficients = GFX.g_R0JupiterCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0JupiterCoefficients[i].a * Math.cos(GFX.g_R0JupiterCoefficients[i].b + GFX.g_R0JupiterCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1JupiterCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1JupiterCoefficients[i].a * Math.cos(GFX.g_R1JupiterCoefficients[i].b + GFX.g_R1JupiterCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2JupiterCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2JupiterCoefficients[i].a * Math.cos(GFX.g_R2JupiterCoefficients[i].b + GFX.g_R2JupiterCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3JupiterCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3JupiterCoefficients[i].a * Math.cos(GFX.g_R3JupiterCoefficients[i].b + GFX.g_R3JupiterCoefficients[i].c * rho);\r\n }\r\n var nR4Coefficients = GFX.g_R4JupiterCoefficients.length;\r\n var R4 = 0;\r\n for (i = 0; i < nR4Coefficients; i++) {\r\n R4 += GFX.g_R4JupiterCoefficients[i].a * Math.cos(GFX.g_R4JupiterCoefficients[i].b + GFX.g_R4JupiterCoefficients[i].c * rho);\r\n }\r\n var nR5Coefficients = GFX.g_R5JupiterCoefficients.length;\r\n var R5 = 0;\r\n for (i = 0; i < nR5Coefficients; i++) {\r\n R5 += GFX.g_R5JupiterCoefficients[i].a * Math.cos(GFX.g_R5JupiterCoefficients[i].b + GFX.g_R5JupiterCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed + R4 * rho4 + R5 * rho5) / 100000000;\r\n };\r\n var CAAJupiter$ = {\r\n\r\n };\r\n\r\n\r\n // CAAKepler\r\n\r\n function CAAKepler() {\r\n }\r\n CAAKepler.calculate = function(M, e) {\r\n return CAAKepler.calculateIter(M, e, 53);\r\n };\r\n CAAKepler.calculateIter = function(M, e, nIterations) {\r\n M = CT.d2R(M);\r\n var PI = CT.PI();\r\n var F = 1;\r\n if (M < 0) {\r\n F = -1;\r\n }\r\n M = Math.abs(M) / (2 * PI);\r\n M = (M - ss.truncate(M)) * 2 * PI * F;\r\n if (M < 0) {\r\n M += 2 * PI;\r\n }\r\n F = 1;\r\n if (M > PI) {\r\n F = -1;\r\n }\r\n if (M > PI) {\r\n M = 2 * PI - M;\r\n }\r\n var E = PI / 2;\r\n var scale = PI / 4;\r\n for (var i = 0; i < nIterations; i++) {\r\n var R = E - e * Math.sin(E);\r\n if (M > R) {\r\n E += scale;\r\n }\r\n else {\r\n E -= scale;\r\n }\r\n scale /= 2;\r\n }\r\n return CT.r2D(E) * F;\r\n };\r\n var CAAKepler$ = {\r\n\r\n };\r\n\r\n\r\n // CAAMars\r\n\r\n function CAAMars() {\r\n }\r\n CAAMars.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nL0Coefficients = GFX.g_L0MarsCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0MarsCoefficients[i].a * Math.cos(GFX.g_L0MarsCoefficients[i].b + GFX.g_L0MarsCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1MarsCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1MarsCoefficients[i].a * Math.cos(GFX.g_L1MarsCoefficients[i].b + GFX.g_L1MarsCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2MarsCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2MarsCoefficients[i].a * Math.cos(GFX.g_L2MarsCoefficients[i].b + GFX.g_L2MarsCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3MarsCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3MarsCoefficients[i].a * Math.cos(GFX.g_L3MarsCoefficients[i].b + GFX.g_L3MarsCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4MarsCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4MarsCoefficients[i].a * Math.cos(GFX.g_L4MarsCoefficients[i].b + GFX.g_L4MarsCoefficients[i].c * rho);\r\n }\r\n var nL5Coefficients = GFX.g_L5MarsCoefficients.length;\r\n var L5 = 0;\r\n for (i = 0; i < nL5Coefficients; i++) {\r\n L5 += GFX.g_L5MarsCoefficients[i].a * Math.cos(GFX.g_L5MarsCoefficients[i].b + GFX.g_L5MarsCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4 + L5 * rho5) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAMars.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0MarsCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0MarsCoefficients[i].a * Math.cos(GFX.g_B0MarsCoefficients[i].b + GFX.g_B0MarsCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1MarsCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1MarsCoefficients[i].a * Math.cos(GFX.g_B1MarsCoefficients[i].b + GFX.g_B1MarsCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2MarsCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2MarsCoefficients[i].a * Math.cos(GFX.g_B2MarsCoefficients[i].b + GFX.g_B2MarsCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3MarsCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3MarsCoefficients[i].a * Math.cos(GFX.g_B3MarsCoefficients[i].b + GFX.g_B3MarsCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4MarsCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4MarsCoefficients[i].a * Math.cos(GFX.g_B4MarsCoefficients[i].b + GFX.g_B4MarsCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAAMars.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nR0Coefficients = GFX.g_R0MarsCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0MarsCoefficients[i].a * Math.cos(GFX.g_R0MarsCoefficients[i].b + GFX.g_R0MarsCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1MarsCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1MarsCoefficients[i].a * Math.cos(GFX.g_R1MarsCoefficients[i].b + GFX.g_R1MarsCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2MarsCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2MarsCoefficients[i].a * Math.cos(GFX.g_R2MarsCoefficients[i].b + GFX.g_R2MarsCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3MarsCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3MarsCoefficients[i].a * Math.cos(GFX.g_R3MarsCoefficients[i].b + GFX.g_R3MarsCoefficients[i].c * rho);\r\n }\r\n var nR4Coefficients = GFX.g_R4MarsCoefficients.length;\r\n var R4 = 0;\r\n for (i = 0; i < nR4Coefficients; i++) {\r\n R4 += GFX.g_R4MarsCoefficients[i].a * Math.cos(GFX.g_R4MarsCoefficients[i].b + GFX.g_R4MarsCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed + R4 * rho4) / 100000000;\r\n };\r\n var CAAMars$ = {\r\n\r\n };\r\n\r\n\r\n // CAAMercury\r\n\r\n function CAAMercury() {\r\n }\r\n CAAMercury.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nL0Coefficients = GFX.g_L0MercuryCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0MercuryCoefficients[i].a * Math.cos(GFX.g_L0MercuryCoefficients[i].b + GFX.g_L0MercuryCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1MercuryCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1MercuryCoefficients[i].a * Math.cos(GFX.g_L1MercuryCoefficients[i].b + GFX.g_L1MercuryCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2MercuryCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2MercuryCoefficients[i].a * Math.cos(GFX.g_L2MercuryCoefficients[i].b + GFX.g_L2MercuryCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3MercuryCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3MercuryCoefficients[i].a * Math.cos(GFX.g_L3MercuryCoefficients[i].b + GFX.g_L3MercuryCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4MercuryCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4MercuryCoefficients[i].a * Math.cos(GFX.g_L4MercuryCoefficients[i].b + GFX.g_L4MercuryCoefficients[i].c * rho);\r\n }\r\n var nL5Coefficients = GFX.g_L5MercuryCoefficients.length;\r\n var L5 = 0;\r\n for (i = 0; i < nL5Coefficients; i++) {\r\n L5 += GFX.g_L5MercuryCoefficients[i].a * Math.cos(GFX.g_L5MercuryCoefficients[i].b + GFX.g_L5MercuryCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4 + L5 * rho5) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAMercury.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0MercuryCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0MercuryCoefficients[i].a * Math.cos(GFX.g_B0MercuryCoefficients[i].b + GFX.g_B0MercuryCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1MercuryCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1MercuryCoefficients[i].a * Math.cos(GFX.g_B1MercuryCoefficients[i].b + GFX.g_B1MercuryCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2MercuryCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2MercuryCoefficients[i].a * Math.cos(GFX.g_B2MercuryCoefficients[i].b + GFX.g_B2MercuryCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3MercuryCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3MercuryCoefficients[i].a * Math.cos(GFX.g_B3MercuryCoefficients[i].b + GFX.g_B3MercuryCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4MercuryCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4MercuryCoefficients[i].a * Math.cos(GFX.g_B4MercuryCoefficients[i].b + GFX.g_B4MercuryCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAAMercury.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var nR0Coefficients = GFX.g_R0MercuryCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0MercuryCoefficients[i].a * Math.cos(GFX.g_R0MercuryCoefficients[i].b + GFX.g_R0MercuryCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1MercuryCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1MercuryCoefficients[i].a * Math.cos(GFX.g_R1MercuryCoefficients[i].b + GFX.g_R1MercuryCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2MercuryCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2MercuryCoefficients[i].a * Math.cos(GFX.g_R2MercuryCoefficients[i].b + GFX.g_R2MercuryCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3MercuryCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3MercuryCoefficients[i].a * Math.cos(GFX.g_R3MercuryCoefficients[i].b + GFX.g_R3MercuryCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed) / 100000000;\r\n };\r\n var CAAMercury$ = {\r\n\r\n };\r\n\r\n\r\n // CAAMoon\r\n\r\n function CAAMoon() {\r\n }\r\n CAAMoon.meanLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return CT.m360(218.3164477 + 481267.88123421 * T - 0.0015786 * Tsquared + Tcubed / 538841 - T4 / 65194000);\r\n };\r\n CAAMoon.meanElongation = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return CT.m360(297.8501921 + 445267.1114034 * T - 0.0018819 * Tsquared + Tcubed / 545868 - T4 / 113065000);\r\n };\r\n CAAMoon.meanAnomaly = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return CT.m360(134.9633964 + 477198.8675055 * T + 0.0087414 * Tsquared + Tcubed / 69699 - T4 / 14712000);\r\n };\r\n CAAMoon.argumentOfLatitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return CT.m360(93.272095 + 483202.0175233 * T - 0.0036539 * Tsquared - Tcubed / 3526000 + T4 / 863310000);\r\n };\r\n CAAMoon.meanLongitudeAscendingNode = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return CT.m360(125.0445479 - 1934.1362891 * T + 0.0020754 * Tsquared + Tcubed / 467441 - T4 / 60616000);\r\n };\r\n CAAMoon.meanLongitudePerigee = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return CT.m360(83.3532465 + 4069.0137287 * T - 0.01032 * Tsquared - Tcubed / 80053 + T4 / 18999000);\r\n };\r\n CAAMoon.trueLongitudeAscendingNode = function(JD) {\r\n var TrueAscendingNode = CAAMoon.meanLongitudeAscendingNode(JD);\r\n var D = CAAMoon.meanElongation(JD);\r\n D = CT.d2R(D);\r\n var M = CAAEarth.sunMeanAnomaly(JD);\r\n M = CT.d2R(M);\r\n var Mdash = CAAMoon.meanAnomaly(JD);\r\n Mdash = CT.d2R(Mdash);\r\n var F = CAAMoon.argumentOfLatitude(JD);\r\n F = CT.d2R(F);\r\n TrueAscendingNode -= 1.4979 * Math.sin(2 * (D - F));\r\n TrueAscendingNode -= 0.15 * Math.sin(M);\r\n TrueAscendingNode -= 0.1226 * Math.sin(2 * D);\r\n TrueAscendingNode += 0.1176 * Math.sin(2 * F);\r\n TrueAscendingNode -= 0.0801 * Math.sin(2 * (Mdash - F));\r\n return CT.m360(TrueAscendingNode);\r\n };\r\n CAAMoon.eclipticLongitude = function(JD) {\r\n var Ldash = CAAMoon.meanLongitude(JD);\r\n var LdashDegrees = Ldash;\r\n Ldash = CT.d2R(Ldash);\r\n var D = CAAMoon.meanElongation(JD);\r\n D = CT.d2R(D);\r\n var M = CAAEarth.sunMeanAnomaly(JD);\r\n M = CT.d2R(M);\r\n var Mdash = CAAMoon.meanAnomaly(JD);\r\n Mdash = CT.d2R(Mdash);\r\n var F = CAAMoon.argumentOfLatitude(JD);\r\n F = CT.d2R(F);\r\n var E = CAAEarth.eccentricity(JD);\r\n var T = (JD - 2451545) / 36525;\r\n var A1 = CT.m360(119.75 + 131.849 * T);\r\n A1 = CT.d2R(A1);\r\n var A2 = CT.m360(53.09 + 479264.29 * T);\r\n A2 = CT.d2R(A2);\r\n var A3 = CT.m360(313.45 + 481266.484 * T);\r\n A3 = CT.d2R(A3);\r\n var nLCoefficients = GFX.g_MoonCoefficients1.length;\r\n console.assert(GFX.g_MoonCoefficients2.length === nLCoefficients);\r\n var SigmaL = 0;\r\n for (var i = 0; i < nLCoefficients; i++) {\r\n var ThisSigma = GFX.g_MoonCoefficients2[i].a * Math.sin(GFX.g_MoonCoefficients1[i].d * D + GFX.g_MoonCoefficients1[i].m * M + GFX.g_MoonCoefficients1[i].mdash * Mdash + GFX.g_MoonCoefficients1[i].f * F);\r\n if (!!GFX.g_MoonCoefficients1[i].m) {\r\n ThisSigma *= E;\r\n }\r\n SigmaL += ThisSigma;\r\n }\r\n SigmaL += 3958 * Math.sin(A1);\r\n SigmaL += 1962 * Math.sin(Ldash - F);\r\n SigmaL += 318 * Math.sin(A2);\r\n var NutationInLong = CAANutation.nutationInLongitude(JD);\r\n return CT.m360(LdashDegrees + SigmaL / 1000000 + NutationInLong / 3600);\r\n };\r\n CAAMoon.eclipticLatitude = function(JD) {\r\n var Ldash = CAAMoon.meanLongitude(JD);\r\n Ldash = CT.d2R(Ldash);\r\n var D = CAAMoon.meanElongation(JD);\r\n D = CT.d2R(D);\r\n var M = CAAEarth.sunMeanAnomaly(JD);\r\n M = CT.d2R(M);\r\n var Mdash = CAAMoon.meanAnomaly(JD);\r\n Mdash = CT.d2R(Mdash);\r\n var F = CAAMoon.argumentOfLatitude(JD);\r\n F = CT.d2R(F);\r\n var E = CAAEarth.eccentricity(JD);\r\n var T = (JD - 2451545) / 36525;\r\n var A1 = CT.m360(119.75 + 131.849 * T);\r\n A1 = CT.d2R(A1);\r\n var A2 = CT.m360(53.09 + 479264.29 * T);\r\n A2 = CT.d2R(A2);\r\n var A3 = CT.m360(313.45 + 481266.484 * T);\r\n A3 = CT.d2R(A3);\r\n var nBCoefficients = GFX.g_MoonCoefficients3.length;\r\n console.assert(GFX.g_MoonCoefficients4.length === nBCoefficients);\r\n var SigmaB = 0;\r\n for (var i = 0; i < nBCoefficients; i++) {\r\n var ThisSigma = GFX.g_MoonCoefficients4[i] * Math.sin(GFX.g_MoonCoefficients3[i].d * D + GFX.g_MoonCoefficients3[i].m * M + GFX.g_MoonCoefficients3[i].mdash * Mdash + GFX.g_MoonCoefficients3[i].f * F);\r\n if (!!GFX.g_MoonCoefficients3[i].m) {\r\n ThisSigma *= E;\r\n }\r\n SigmaB += ThisSigma;\r\n }\r\n SigmaB -= 2235 * Math.sin(Ldash);\r\n SigmaB += 382 * Math.sin(A3);\r\n SigmaB += 175 * Math.sin(A1 - F);\r\n SigmaB += 175 * Math.sin(A1 + F);\r\n SigmaB += 127 * Math.sin(Ldash - Mdash);\r\n SigmaB -= 115 * Math.sin(Ldash + Mdash);\r\n return SigmaB / 1000000;\r\n };\r\n CAAMoon.radiusVector = function(JD) {\r\n var Ldash = CAAMoon.meanLongitude(JD);\r\n Ldash = CT.d2R(Ldash);\r\n var D = CAAMoon.meanElongation(JD);\r\n D = CT.d2R(D);\r\n var M = CAAEarth.sunMeanAnomaly(JD);\r\n M = CT.d2R(M);\r\n var Mdash = CAAMoon.meanAnomaly(JD);\r\n Mdash = CT.d2R(Mdash);\r\n var F = CAAMoon.argumentOfLatitude(JD);\r\n F = CT.d2R(F);\r\n var E = CAAEarth.eccentricity(JD);\r\n var T = (JD - 2451545) / 36525;\r\n var A1 = CT.m360(119.75 + 131.849 * T);\r\n A1 = CT.d2R(A1);\r\n var A2 = CT.m360(53.09 + 479264.29 * T);\r\n A2 = CT.d2R(A2);\r\n var A3 = CT.m360(313.45 + 481266.484 * T);\r\n A3 = CT.d2R(A3);\r\n var nRCoefficients = GFX.g_MoonCoefficients1.length;\r\n console.assert(GFX.g_MoonCoefficients2.length === nRCoefficients);\r\n var SigmaR = 0;\r\n for (var i = 0; i < nRCoefficients; i++) {\r\n var ThisSigma = GFX.g_MoonCoefficients2[i].b * Math.cos(GFX.g_MoonCoefficients1[i].d * D + GFX.g_MoonCoefficients1[i].m * M + GFX.g_MoonCoefficients1[i].mdash * Mdash + GFX.g_MoonCoefficients1[i].f * F);\r\n if (!!GFX.g_MoonCoefficients1[i].m) {\r\n ThisSigma *= E;\r\n }\r\n SigmaR += ThisSigma;\r\n }\r\n return 385000.56 + SigmaR / 1000;\r\n };\r\n CAAMoon.radiusVectorToHorizontalParallax = function(RadiusVector) {\r\n return CT.r2D(Math.asin(6378.14 / RadiusVector));\r\n };\r\n CAAMoon.horizontalParallaxToRadiusVector = function(Parallax) {\r\n return 6378.14 / Math.sin(CT.d2R(Parallax));\r\n };\r\n var CAAMoon$ = {\r\n\r\n };\r\n\r\n\r\n // MoonCoefficient1\r\n\r\n function MoonCoefficient1(d, m, mdash, f) {\r\n this.d = 0;\r\n this.m = 0;\r\n this.mdash = 0;\r\n this.f = 0;\r\n this.d = d;\r\n this.m = m;\r\n this.mdash = mdash;\r\n this.f = f;\r\n }\r\n var MoonCoefficient1$ = {\r\n\r\n };\r\n\r\n\r\n // MoonCoefficient2\r\n\r\n function MoonCoefficient2(a, b) {\r\n this.a = 0;\r\n this.b = 0;\r\n this.a = a;\r\n this.b = b;\r\n }\r\n var MoonCoefficient2$ = {\r\n\r\n };\r\n\r\n\r\n // MIFR\r\n\r\n function MIFR() {\r\n }\r\n MIFR.geocentricElongation = function(ObjectAlpha, ObjectDelta, SunAlpha, SunDelta) {\r\n ObjectAlpha = CT.d2R(ObjectAlpha * 15);\r\n SunAlpha = CT.d2R(SunAlpha * 15);\r\n ObjectDelta = CT.d2R(ObjectDelta);\r\n SunDelta = CT.d2R(SunDelta);\r\n return CT.r2D(Math.acos(Math.sin(SunDelta) * Math.sin(ObjectDelta) + Math.cos(SunDelta) * Math.cos(ObjectDelta) * Math.cos(SunAlpha - ObjectAlpha)));\r\n };\r\n MIFR.phaseAngle = function(GeocentricElongation, EarthObjectDistance, EarthSunDistance) {\r\n GeocentricElongation = CT.d2R(GeocentricElongation);\r\n return CT.m360(CT.r2D(Math.atan2(EarthSunDistance * Math.sin(GeocentricElongation), EarthObjectDistance - EarthSunDistance * Math.cos(GeocentricElongation))));\r\n };\r\n MIFR.illuminatedFraction = function(PhaseAngle) {\r\n PhaseAngle = CT.d2R(PhaseAngle);\r\n return (1 + Math.cos(PhaseAngle)) / 2;\r\n };\r\n MIFR.positionAngle = function(Alpha0, Delta0, Alpha, Delta) {\r\n Alpha0 = CT.h2R(Alpha0);\r\n Alpha = CT.h2R(Alpha);\r\n Delta0 = CT.d2R(Delta0);\r\n Delta = CT.d2R(Delta);\r\n return CT.m360(CT.r2D(Math.atan2(Math.cos(Delta0) * Math.sin(Alpha0 - Alpha), Math.sin(Delta0) * Math.cos(Delta) - Math.cos(Delta0) * Math.sin(Delta) * Math.cos(Alpha0 - Alpha))));\r\n };\r\n var MIFR$ = {\r\n\r\n };\r\n\r\n\r\n // CAAMoonNodes\r\n\r\n function CAAMoonNodes() {\r\n }\r\n CAAMoonNodes.k = function(Year) {\r\n return 13.4223 * (Year - 2000.05);\r\n };\r\n CAAMoonNodes.passageThroNode = function(k) {\r\n var T = k / 1342.23;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n var D = CT.m360(183.638 + 331.73735682 * k + 0.0014852 * Tsquared + 2.09E-06 * Tcubed - 1E-08 * T4);\r\n var M = CT.m360(17.4006 + 26.8203725 * k + 0.0001186 * Tsquared + 6E-08 * Tcubed);\r\n var Mdash = CT.m360(38.3776 + 355.52747313 * k + 0.0123499 * Tsquared + 1.4627E-05 * Tcubed - 6.9E-08 * T4);\r\n var omega = CT.m360(123.9767 - 1.44098956 * k + 0.0020608 * Tsquared + 2.14E-06 * Tcubed - 1.6E-08 * T4);\r\n var V = CT.m360(299.75 + 132.85 * T - 0.009173 * Tsquared);\r\n var P = CT.m360(omega + 272.75 - 2.3 * T);\r\n var E = 1 - 0.002516 * T - 7.4E-06 * Tsquared;\r\n D = CT.d2R(D);\r\n var D2 = 2 * D;\r\n var D4 = D2 * D2;\r\n M = CT.d2R(M);\r\n Mdash = CT.d2R(Mdash);\r\n var Mdash2 = 2 * Mdash;\r\n omega = CT.d2R(omega);\r\n V = CT.d2R(V);\r\n P = CT.d2R(P);\r\n var JD = 2451565.1619 + 27.212220817 * k + 0.0002762 * Tsquared + 2.1E-08 * Tcubed - 8.8E-11 * T4 - 0.4721 * Math.sin(Mdash) - 0.1649 * Math.sin(D2) - 0.0868 * Math.sin(D2 - Mdash) + 0.0084 * Math.sin(D2 + Mdash) - E * 0.0083 * Math.sin(D2 - M) - E * 0.0039 * Math.sin(D2 - M - Mdash) + 0.0034 * Math.sin(Mdash2) - 0.0031 * Math.sin(D2 - Mdash2) + E * 0.003 * Math.sin(D2 + M) + E * 0.0028 * Math.sin(M - Mdash) + E * 0.0026 * Math.sin(M) + 0.0025 * Math.sin(D4) + 0.0024 * Math.sin(D) + E * 0.0022 * Math.sin(M + Mdash) + 0.0017 * Math.sin(omega) + 0.0014 * Math.sin(D4 - Mdash) + E * 0.0005 * Math.sin(D2 + M - Mdash) + E * 0.0004 * Math.sin(D2 - M + Mdash) - E * 0.0003 * Math.sin(D2 - M * M) + E * 0.0003 * Math.sin(D4 - M) + 0.0003 * Math.sin(V) + 0.0003 * Math.sin(P);\r\n return JD;\r\n };\r\n var CAAMoonNodes$ = {\r\n\r\n };\r\n\r\n\r\n // CAAMoonPerigeeApogee\r\n\r\n function CAAMoonPerigeeApogee() {\r\n }\r\n CAAMoonPerigeeApogee.k = function(Year) {\r\n return 13.2555 * (Year - 1999.97);\r\n };\r\n CAAMoonPerigeeApogee.meanPerigee = function(k) {\r\n var T = k / 1325.55;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n return 2451534.6698 + 27.55454989 * k - 0.0006691 * Tsquared - 1.098E-06 * Tcubed + 5.2E-09 * T4;\r\n };\r\n CAAMoonPerigeeApogee.meanApogee = function(k) {\r\n return CAAMoonPerigeeApogee.meanPerigee(k);\r\n };\r\n CAAMoonPerigeeApogee.truePerigee = function(k) {\r\n var MeanJD = CAAMoonPerigeeApogee.meanPerigee(k);\r\n var T = k / 1325.55;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n var D = CT.m360(171.9179 + 335.9106046 * k - 0.0100383 * Tsquared - 1.156E-05 * Tcubed + 5.5E-08 * T4);\r\n D = CT.d2R(D);\r\n var M = CT.m360(347.3477 + 27.1577721 * k - 0.000813 * Tsquared - 1E-06 * Tcubed);\r\n M = CT.d2R(M);\r\n var F = CT.m360(316.6109 + 364.5287911 * k - 0.0125053 * Tsquared - 1.48E-05 * Tcubed);\r\n F = CT.d2R(F);\r\n var nPerigeeCoefficients = GFX.g_MoonPerigeeApogeeCoefficients1.length;\r\n var Sigma = 0;\r\n for (var i = 0; i < nPerigeeCoefficients; i++) {\r\n Sigma += GFX.g_MoonPerigeeApogeeCoefficients1[i].c * Math.sin(D * GFX.g_MoonPerigeeApogeeCoefficients1[i].d + M * GFX.g_MoonPerigeeApogeeCoefficients1[i].m + F * GFX.g_MoonPerigeeApogeeCoefficients1[i].f + T * GFX.g_MoonPerigeeApogeeCoefficients1[i].t);\r\n }\r\n return MeanJD + Sigma;\r\n };\r\n CAAMoonPerigeeApogee.trueApogee = function(k) {\r\n var MeanJD = CAAMoonPerigeeApogee.meanApogee(k);\r\n var T = k / 1325.55;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n var D = CT.m360(171.9179 + 335.9106046 * k - 0.0100383 * Tsquared - 1.156E-05 * Tcubed + 5.5E-08 * T4);\r\n D = CT.d2R(D);\r\n var M = CT.m360(347.3477 + 27.1577721 * k - 0.000813 * Tsquared - 1E-06 * Tcubed);\r\n M = CT.d2R(M);\r\n var F = CT.m360(316.6109 + 364.5287911 * k - 0.0125053 * Tsquared - 1.48E-05 * Tcubed);\r\n F = CT.d2R(F);\r\n var nApogeeCoefficients = GFX.g_MoonPerigeeApogeeCoefficients2.length;\r\n var Sigma = 0;\r\n for (var i = 0; i < nApogeeCoefficients; i++) {\r\n Sigma += (GFX.g_MoonPerigeeApogeeCoefficients2[i].c + T * GFX.g_MoonPerigeeApogeeCoefficients2[i].t) * Math.sin(D * GFX.g_MoonPerigeeApogeeCoefficients2[i].d + M * GFX.g_MoonPerigeeApogeeCoefficients2[i].m + F * GFX.g_MoonPerigeeApogeeCoefficients2[i].f);\r\n }\r\n return MeanJD + Sigma;\r\n };\r\n CAAMoonPerigeeApogee.perigeeParallax = function(k) {\r\n var T = k / 1325.55;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n var D = CT.m360(171.9179 + 335.9106046 * k - 0.0100383 * Tsquared - 1.156E-05 * Tcubed + 5.5E-08 * T4);\r\n D = CT.d2R(D);\r\n var M = CT.m360(347.3477 + 27.1577721 * k - 0.000813 * Tsquared - 1E-06 * Tcubed);\r\n M = CT.d2R(M);\r\n var F = CT.m360(316.6109 + 364.5287911 * k - 0.0125053 * Tsquared - 1.48E-05 * Tcubed);\r\n F = CT.d2R(F);\r\n var nPerigeeCoefficients = GFX.g_MoonPerigeeApogeeCoefficients3.length;\r\n var Parallax = 3629.215;\r\n for (var i = 0; i < nPerigeeCoefficients; i++) {\r\n Parallax += (GFX.g_MoonPerigeeApogeeCoefficients3[i].c + T * GFX.g_MoonPerigeeApogeeCoefficients3[i].t) * Math.cos(D * GFX.g_MoonPerigeeApogeeCoefficients3[i].d + M * GFX.g_MoonPerigeeApogeeCoefficients3[i].m + F * GFX.g_MoonPerigeeApogeeCoefficients3[i].f);\r\n }\r\n return Parallax / 3600;\r\n };\r\n CAAMoonPerigeeApogee.apogeeParallax = function(k) {\r\n var T = k / 1325.55;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var T4 = Tcubed * T;\r\n var D = CT.m360(171.9179 + 335.9106046 * k - 0.0100383 * Tsquared - 1.156E-05 * Tcubed + 5.5E-08 * T4);\r\n D = CT.d2R(D);\r\n var M = CT.m360(347.3477 + 27.1577721 * k - 0.000813 * Tsquared - 1E-06 * Tcubed);\r\n M = CT.d2R(M);\r\n var F = CT.m360(316.6109 + 364.5287911 * k - 0.0125053 * Tsquared - 1.48E-05 * Tcubed);\r\n F = CT.d2R(F);\r\n var nApogeeCoefficients = GFX.g_MoonPerigeeApogeeCoefficients4.length;\r\n var Parallax = 3245.251;\r\n for (var i = 0; i < nApogeeCoefficients; i++) {\r\n Parallax += (GFX.g_MoonPerigeeApogeeCoefficients4[i].c + T * GFX.g_MoonPerigeeApogeeCoefficients4[i].t) * Math.cos(D * GFX.g_MoonPerigeeApogeeCoefficients4[i].d + M * GFX.g_MoonPerigeeApogeeCoefficients4[i].m + F * GFX.g_MoonPerigeeApogeeCoefficients4[i].f);\r\n }\r\n return Parallax / 3600;\r\n };\r\n var CAAMoonPerigeeApogee$ = {\r\n\r\n };\r\n\r\n\r\n // MPAC\r\n\r\n function MPAC(D, M, F, C, T) {\r\n this.d = 0;\r\n this.m = 0;\r\n this.f = 0;\r\n this.c = 0;\r\n this.t = 0;\r\n this.d = D;\r\n this.m = M;\r\n this.f = F;\r\n this.c = C;\r\n this.t = T;\r\n }\r\n var MPAC$ = {\r\n\r\n };\r\n\r\n\r\n // CAAMoonPhases\r\n\r\n function CAAMoonPhases() {\r\n }\r\n CAAMoonPhases.k = function(Year) {\r\n return 12.3685 * (Year - 2000);\r\n };\r\n CAAMoonPhases.meanPhase = function(k) {\r\n var T = k / 1236.85;\r\n var T2 = T * T;\r\n var T3 = T2 * T;\r\n var T4 = T3 * T;\r\n return 2451550.09766 + 29.530588861 * k + 0.00015437 * T2 - 1.5E-07 * T3 + 7.3E-10 * T4;\r\n };\r\n CAAMoonPhases.truePhase = function(k) {\r\n var JD = CAAMoonPhases.meanPhase(k);\r\n var T = k / 1236.85;\r\n var T2 = T * T;\r\n var T3 = T2 * T;\r\n var T4 = T3 * T;\r\n var E = 1 - 0.002516 * T - 7.4E-06 * T2;\r\n var E2 = E * E;\r\n var M = CT.m360(2.5534 + 29.1053567 * k - 1.4E-06 * T2 - 1.1E-07 * T3);\r\n M = CT.d2R(M);\r\n var Mdash = CT.m360(201.5643 + 385.81693528 * k + 0.0107582 * T2 + 1.238E-05 * T3 - 5.8E-08 * T4);\r\n Mdash = CT.d2R(Mdash);\r\n var F = CT.m360(160.7108 + 390.67050284 * k - 0.0016118 * T2 - 2.27E-06 * T3 + 1E-08 * T4);\r\n F = CT.d2R(F);\r\n var omega = CT.m360(124.7746 - 1.56375588 * k + 0.0020672 * T2 + 2.15E-06 * T3);\r\n omega = CT.d2R(omega);\r\n var A1 = CT.m360(299.77 + 0.107408 * k - 0.009173 * T2);\r\n A1 = CT.d2R(A1);\r\n var A2 = CT.m360(251.88 + 0.016321 * k);\r\n A2 = CT.d2R(A2);\r\n var A3 = CT.m360(251.83 + 26.651886 * k);\r\n A3 = CT.d2R(A3);\r\n var A4 = CT.m360(349.42 + 36.412478 * k);\r\n A4 = CT.d2R(A4);\r\n var A5 = CT.m360(84.66 + 18.206239 * k);\r\n A5 = CT.d2R(A5);\r\n var A6 = CT.m360(141.74 + 53.303771 * k);\r\n A6 = CT.d2R(A6);\r\n var A7 = CT.m360(207.14 + 2.453732 * k);\r\n A7 = CT.d2R(A7);\r\n var A8 = CT.m360(154.84 + 7.30686 * k);\r\n A8 = CT.d2R(A8);\r\n var A9 = CT.m360(34.52 + 27.261239 * k);\r\n A9 = CT.d2R(A9);\r\n var A10 = CT.m360(207.19 + 0.121824 * k);\r\n A10 = CT.d2R(A10);\r\n var A11 = CT.m360(291.34 + 1.844379 * k);\r\n A11 = CT.d2R(A11);\r\n var A12 = CT.m360(161.72 + 24.198154 * k);\r\n A12 = CT.d2R(A12);\r\n var A13 = CT.m360(239.56 + 25.513099 * k);\r\n A13 = CT.d2R(A13);\r\n var A14 = CT.m360(331.55 + 3.592518 * k);\r\n A14 = CT.d2R(A14);\r\n var kint = Math.floor(k);\r\n var kfrac = k - kint;\r\n if (kfrac < 0) {\r\n kfrac = 1 + kfrac;\r\n }\r\n if (!kfrac) {\r\n var DeltaJD = -0.4072 * Math.sin(Mdash) + 0.17241 * E * Math.sin(M) + 0.01608 * Math.sin(2 * Mdash) + 0.01039 * Math.sin(2 * F) + 0.00739 * E * Math.sin(Mdash - M) + -0.00514 * E * Math.sin(Mdash + M) + 0.00208 * E2 * Math.sin(2 * M) + -0.00111 * Math.sin(Mdash - 2 * F) + -0.00057 * Math.sin(Mdash + 2 * F) + 0.00056 * E * Math.sin(2 * Mdash + M) + -0.00042 * Math.sin(3 * Mdash) + 0.00042 * E * Math.sin(M + 2 * F) + 0.00038 * E * Math.sin(M - 2 * F) + -0.00024 * E * Math.sin(2 * Mdash - M) + -0.00017 * Math.sin(omega) + -7E-05 * Math.sin(Mdash + 2 * M) + 4E-05 * Math.sin(2 * Mdash - 2 * F) + 4E-05 * Math.sin(3 * M) + 3E-05 * Math.sin(Mdash + M - 2 * F) + 3E-05 * Math.sin(2 * Mdash + 2 * F) + -3E-05 * Math.sin(Mdash + M + 2 * F) + 3E-05 * Math.sin(Mdash - M + 2 * F) + -2E-05 * Math.sin(Mdash - M - 2 * F) + -2E-05 * Math.sin(3 * Mdash + M) + 2E-05 * Math.sin(4 * Mdash);\r\n JD += DeltaJD;\r\n }\r\n else if ((kfrac === 0.25) || (kfrac === 0.75)) {\r\n var DeltaJD = -0.62801 * Math.sin(Mdash) + 0.17172 * E * Math.sin(M) + -0.01183 * E * Math.sin(Mdash + M) + 0.00862 * Math.sin(2 * Mdash) + 0.00804 * Math.sin(2 * F) + 0.00454 * E * Math.sin(Mdash - M) + 0.00204 * E2 * Math.sin(2 * M) + -0.0018 * Math.sin(Mdash - 2 * F) + -0.0007 * Math.sin(Mdash + 2 * F) + -0.0004 * Math.sin(3 * Mdash) + -0.00034 * E * Math.sin(2 * Mdash - M) + 0.00032 * E * Math.sin(M + 2 * F) + 0.00032 * E * Math.sin(M - 2 * F) + -0.00028 * E2 * Math.sin(Mdash + 2 * M) + 0.00027 * E * Math.sin(2 * Mdash + M) + -0.00017 * Math.sin(omega) + -5E-05 * Math.sin(Mdash - M - 2 * F) + 4E-05 * Math.sin(2 * Mdash + 2 * F) + -4E-05 * Math.sin(Mdash + M + 2 * F) + 4E-05 * Math.sin(Mdash - 2 * M) + 3E-05 * Math.sin(Mdash + M - 2 * F) + 3E-05 * Math.sin(3 * M) + 2E-05 * Math.sin(2 * Mdash - 2 * F) + 2E-05 * Math.sin(Mdash - M + 2 * F) + -2E-05 * Math.sin(3 * Mdash + M);\r\n JD += DeltaJD;\r\n var W = 0.00306 - 0.00038 * E * Math.cos(M) + 0.00026 * Math.cos(Mdash) - 2E-05 * Math.cos(Mdash - M) + 2E-05 * Math.cos(Mdash + M) + 2E-05 * Math.cos(2 * F);\r\n if (kfrac === 0.25) {\r\n JD += W;\r\n }\r\n else {\r\n JD -= W;\r\n }\r\n }\r\n else if (kfrac === 0.5) {\r\n var DeltaJD = -0.40614 * Math.sin(Mdash) + 0.17302 * E * Math.sin(M) + 0.01614 * Math.sin(2 * Mdash) + 0.01043 * Math.sin(2 * F) + 0.00734 * E * Math.sin(Mdash - M) + -0.00514 * E * Math.sin(Mdash + M) + 0.00209 * E2 * Math.sin(2 * M) + -0.00111 * Math.sin(Mdash - 2 * F) + -0.00057 * Math.sin(Mdash + 2 * F) + 0.00056 * E * Math.sin(2 * Mdash + M) + -0.00042 * Math.sin(3 * Mdash) + 0.00042 * E * Math.sin(M + 2 * F) + 0.00038 * E * Math.sin(M - 2 * F) + -0.00024 * E * Math.sin(2 * Mdash - M) + -0.00017 * Math.sin(omega) + -7E-05 * Math.sin(Mdash + 2 * M) + 4E-05 * Math.sin(2 * Mdash - 2 * F) + 4E-05 * Math.sin(3 * M) + 3E-05 * Math.sin(Mdash + M - 2 * F) + 3E-05 * Math.sin(2 * Mdash + 2 * F) + -3E-05 * Math.sin(Mdash + M + 2 * F) + 3E-05 * Math.sin(Mdash - M + 2 * F) + -2E-05 * Math.sin(Mdash - M - 2 * F) + -2E-05 * Math.sin(3 * Mdash + M) + 2E-05 * Math.sin(4 * Mdash);\r\n JD += DeltaJD;\r\n }\r\n else {\r\n console.assert(false);\r\n }\r\n var DeltaJD2 = 0.000325 * Math.sin(A1) + 0.000165 * Math.sin(A2) + 0.000164 * Math.sin(A3) + 0.000126 * Math.sin(A4) + 0.00011 * Math.sin(A5) + 6.2E-05 * Math.sin(A6) + 6E-05 * Math.sin(A7) + 5.6E-05 * Math.sin(A8) + 4.7E-05 * Math.sin(A9) + 4.2E-05 * Math.sin(A10) + 4E-05 * Math.sin(A11) + 3.7E-05 * Math.sin(A12) + 3.5E-05 * Math.sin(A13) + 2.3E-05 * Math.sin(A14);\r\n JD += DeltaJD2;\r\n return JD;\r\n };\r\n var CAAMoonPhases$ = {\r\n\r\n };\r\n\r\n\r\n // CAANeptune\r\n\r\n function CAANeptune() {\r\n }\r\n CAANeptune.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nL0Coefficients = GFX.g_L0NC.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0NC[i].a * Math.cos(GFX.g_L0NC[i].b + GFX.g_L0NC[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1NC.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1NC[i].a * Math.cos(GFX.g_L1NC[i].b + GFX.g_L1NC[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2NC.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2NC[i].a * Math.cos(GFX.g_L2NC[i].b + GFX.g_L2NC[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3NC.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3NC[i].a * Math.cos(GFX.g_L3NC[i].b + GFX.g_L3NC[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4NC.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4NC[i].a * Math.cos(GFX.g_L4NC[i].b + GFX.g_L4NC[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAANeptune.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0NC.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0NC[i].a * Math.cos(GFX.g_B0NC[i].b + GFX.g_B0NC[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1NC.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1NC[i].a * Math.cos(GFX.g_B1NC[i].b + GFX.g_B1NC[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2NC.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2NC[i].a * Math.cos(GFX.g_B2NC[i].b + GFX.g_B2NC[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3NC.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3NC[i].a * Math.cos(GFX.g_B3NC[i].b + GFX.g_B3NC[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4NC.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4NC[i].a * Math.cos(GFX.g_B4NC[i].b + GFX.g_B4NC[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAANeptune.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var nR0Coefficients = GFX.g_R0NC.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0NC[i].a * Math.cos(GFX.g_R0NC[i].b + GFX.g_R0NC[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1NC.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1NC[i].a * Math.cos(GFX.g_R1NC[i].b + GFX.g_R1NC[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2NC.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2NC[i].a * Math.cos(GFX.g_R2NC[i].b + GFX.g_R2NC[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3NC.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3NC[i].a * Math.cos(GFX.g_R3NC[i].b + GFX.g_R3NC[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed) / 100000000;\r\n };\r\n var CAANeptune$ = {\r\n\r\n };\r\n\r\n\r\n // CAANutation\r\n\r\n function CAANutation() {\r\n }\r\n CAANutation.nutationInLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var D = 297.85036 + 445267.11148 * T - 0.0019142 * Tsquared + Tcubed / 189474;\r\n D = CT.m360(D);\r\n var M = 357.52772 + 35999.05034 * T - 0.0001603 * Tsquared - Tcubed / 300000;\r\n M = CT.m360(M);\r\n var Mprime = 134.96298 + 477198.867398 * T + 0.0086972 * Tsquared + Tcubed / 56250;\r\n Mprime = CT.m360(Mprime);\r\n var F = 93.27191 + 483202.017538 * T - 0.0036825 * Tsquared + Tcubed / 327270;\r\n F = CT.m360(F);\r\n var omega = 125.04452 - 1934.136261 * T + 0.0020708 * Tsquared + Tcubed / 450000;\r\n omega = CT.m360(omega);\r\n var nCoefficients = GFX.g_NuC.length;\r\n var vvalue = 0;\r\n for (var i = 0; i < nCoefficients; i++) {\r\n var argument = GFX.g_NuC[i].d * D + GFX.g_NuC[i].m * M + GFX.g_NuC[i].mprime * Mprime + GFX.g_NuC[i].f * F + GFX.g_NuC[i].omega * omega;\r\n var radargument = CT.d2R(argument);\r\n vvalue += (GFX.g_NuC[i].sincoeff1 + GFX.g_NuC[i].sincoeff2 * T) * Math.sin(radargument) * 0.0001;\r\n }\r\n return vvalue;\r\n };\r\n CAANutation.nutationInObliquity = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var Tcubed = Tsquared * T;\r\n var D = 297.85036 + 445267.11148 * T - 0.0019142 * Tsquared + Tcubed / 189474;\r\n D = CT.m360(D);\r\n var M = 357.52772 + 35999.05034 * T - 0.0001603 * Tsquared - Tcubed / 300000;\r\n M = CT.m360(M);\r\n var Mprime = 134.96298 + 477198.867398 * T + 0.0086972 * Tsquared + Tcubed / 56250;\r\n Mprime = CT.m360(Mprime);\r\n var F = 93.27191 + 483202.017538 * T - 0.0036825 * Tsquared + Tcubed / 327270;\r\n F = CT.m360(F);\r\n var omega = 125.04452 - 1934.136261 * T + 0.0020708 * Tsquared + Tcubed / 450000;\r\n omega = CT.m360(omega);\r\n var nCoefficients = GFX.g_NuC.length;\r\n var vvalue = 0;\r\n for (var i = 0; i < nCoefficients; i++) {\r\n var argument = GFX.g_NuC[i].d * D + GFX.g_NuC[i].m * M + GFX.g_NuC[i].mprime * Mprime + GFX.g_NuC[i].f * F + GFX.g_NuC[i].omega * omega;\r\n var radargument = CT.d2R(argument);\r\n vvalue += (GFX.g_NuC[i].coscoeff1 + GFX.g_NuC[i].coscoeff2 * T) * Math.cos(radargument) * 0.0001;\r\n }\r\n return vvalue;\r\n };\r\n CAANutation.nutationInRightAscension = function(Alpha, Delta, Obliquity, NutationInLongitude, NutationInObliquity) {\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n Obliquity = CT.d2R(Obliquity);\r\n return (Math.cos(Obliquity) + Math.sin(Obliquity) * Math.sin(Alpha) * Math.tan(Delta)) * NutationInLongitude - Math.cos(Alpha) * Math.tan(Delta) * NutationInObliquity;\r\n };\r\n CAANutation.nutationInDeclination = function(Alpha, Delta, Obliquity, NutationInLongitude, NutationInObliquity) {\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n Obliquity = CT.d2R(Obliquity);\r\n return Math.sin(Obliquity) * Math.cos(Alpha) * NutationInLongitude + Math.sin(Alpha) * NutationInObliquity;\r\n };\r\n CAANutation.meanObliquityOfEcliptic = function(JD) {\r\n var U = (JD - 2451545) / 3652500;\r\n var Usquared = U * U;\r\n var Ucubed = Usquared * U;\r\n var U4 = Ucubed * U;\r\n var U5 = U4 * U;\r\n var U6 = U5 * U;\r\n var U7 = U6 * U;\r\n var U8 = U7 * U;\r\n var U9 = U8 * U;\r\n var U10 = U9 * U;\r\n return CT.dmS2D(23, 26, 21.448) - CT.dmS2D(0, 0, 4680.93) * U - CT.dmS2D(0, 0, 1.55) * Usquared + CT.dmS2D(0, 0, 1999.25) * Ucubed - CT.dmS2D(0, 0, 51.38) * U4 - CT.dmS2D(0, 0, 249.67) * U5 - CT.dmS2D(0, 0, 39.05) * U6 + CT.dmS2D(0, 0, 7.12) * U7 + CT.dmS2D(0, 0, 27.87) * U8 + CT.dmS2D(0, 0, 5.79) * U9 + CT.dmS2D(0, 0, 2.45) * U10;\r\n };\r\n CAANutation.trueObliquityOfEcliptic = function(JD) {\r\n return CAANutation.meanObliquityOfEcliptic(JD) + CT.dmS2D(0, 0, CAANutation.nutationInObliquity(JD));\r\n };\r\n var CAANutation$ = {\r\n\r\n };\r\n\r\n\r\n // NUC\r\n\r\n function NUC(D, M, Mprime, F, omega, sincoeff1, sincoeff2, coscoeff1, coscoeff2) {\r\n this.d = 0;\r\n this.m = 0;\r\n this.mprime = 0;\r\n this.f = 0;\r\n this.omega = 0;\r\n this.sincoeff1 = 0;\r\n this.sincoeff2 = 0;\r\n this.coscoeff1 = 0;\r\n this.coscoeff2 = 0;\r\n this.d = D;\r\n this.m = M;\r\n this.mprime = Mprime;\r\n this.f = F;\r\n this.omega = omega;\r\n this.sincoeff1 = sincoeff1;\r\n this.sincoeff2 = sincoeff2;\r\n this.coscoeff1 = coscoeff1;\r\n this.coscoeff2 = coscoeff2;\r\n }\r\n var NUC$ = {\r\n\r\n };\r\n\r\n\r\n // CAATopocentricEclipticDetails\r\n\r\n function CAATopocentricEclipticDetails() {\r\n this.lambda = 0;\r\n this.beta = 0;\r\n this.semidiameter = 0;\r\n this.lambda = 0;\r\n this.beta = 0;\r\n this.semidiameter = 0;\r\n }\r\n var CAATopocentricEclipticDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAAParallax\r\n\r\n function CAAParallax() {\r\n }\r\n CAAParallax.equatorial2TopocentricDelta = function(Alpha, Delta, Distance, Longitude, Latitude, Height, JD) {\r\n var RhoSinThetaPrime = CAAGlobe.rhoSinThetaPrime(Latitude, Height);\r\n var RhoCosThetaPrime = CAAGlobe.rhoCosThetaPrime(Latitude, Height);\r\n var theta = CAASidereal.apparentGreenwichSiderealTime(JD);\r\n Delta = CT.d2R(Delta);\r\n var cosDelta = Math.cos(Delta);\r\n var pi = Math.asin(GFX.g_AAParallax_C1 / Distance);\r\n var H = CT.h2R(theta - Longitude / 15 - Alpha);\r\n var cosH = Math.cos(H);\r\n var sinH = Math.sin(H);\r\n var DeltaTopocentric = new COR();\r\n DeltaTopocentric.x = CT.r2H(-pi * RhoCosThetaPrime * sinH / cosDelta);\r\n DeltaTopocentric.y = CT.r2D(-pi * (RhoSinThetaPrime * cosDelta - RhoCosThetaPrime * cosH * Math.sin(Delta)));\r\n return DeltaTopocentric;\r\n };\r\n CAAParallax.equatorial2Topocentric = function(Alpha, Delta, Distance, Longitude, Latitude, Height, JD) {\r\n var RhoSinThetaPrime = CAAGlobe.rhoSinThetaPrime(Latitude, Height);\r\n var RhoCosThetaPrime = CAAGlobe.rhoCosThetaPrime(Latitude, Height);\r\n var theta = CAASidereal.apparentGreenwichSiderealTime(JD);\r\n Delta = CT.d2R(Delta);\r\n var cosDelta = Math.cos(Delta);\r\n var pi = Math.asin(GFX.g_AAParallax_C1 / Distance);\r\n var sinpi = Math.sin(pi);\r\n var H = CT.h2R(theta - Longitude / 15 - Alpha);\r\n var cosH = Math.cos(H);\r\n var sinH = Math.sin(H);\r\n var DeltaAlpha = Math.atan2(-RhoCosThetaPrime * sinpi * sinH, cosDelta - RhoCosThetaPrime * sinpi * cosH);\r\n var Topocentric = new COR();\r\n Topocentric.x = CT.m24(Alpha + CT.r2H(DeltaAlpha));\r\n Topocentric.y = CT.r2D(Math.atan2((Math.sin(Delta) - RhoSinThetaPrime * sinpi) * Math.cos(DeltaAlpha), cosDelta - RhoCosThetaPrime * sinpi * cosH));\r\n return Topocentric;\r\n };\r\n CAAParallax.ecliptic2Topocentric = function(Lambda, Beta, Semidiameter, Distance, Epsilon, Longitude, Latitude, Height, JD) {\r\n var S = CAAGlobe.rhoSinThetaPrime(Latitude, Height);\r\n var C = CAAGlobe.rhoCosThetaPrime(Latitude, Height);\r\n Lambda = CT.d2R(Lambda);\r\n Beta = CT.d2R(Beta);\r\n Epsilon = CT.d2R(Epsilon);\r\n Longitude = CT.d2R(Longitude);\r\n Latitude = CT.d2R(Latitude);\r\n Semidiameter = CT.d2R(Semidiameter);\r\n var sine = Math.sin(Epsilon);\r\n var cose = Math.cos(Epsilon);\r\n var cosBeta = Math.cos(Beta);\r\n var sinBeta = Math.sin(Beta);\r\n var theta = CAASidereal.apparentGreenwichSiderealTime(JD);\r\n theta = CT.h2R(theta);\r\n var sintheta = Math.sin(theta);\r\n var pi = Math.asin(GFX.g_AAParallax_C1 / Distance);\r\n var sinpi = Math.sin(pi);\r\n var N = Math.cos(Lambda) * cosBeta - C * sinpi * Math.cos(theta);\r\n var Topocentric = new CAATopocentricEclipticDetails();\r\n Topocentric.lambda = Math.atan2(Math.sin(Lambda) * cosBeta - sinpi * (S * sine + C * cose * sintheta), N);\r\n var cosTopocentricLambda = Math.cos(Topocentric.lambda);\r\n Topocentric.beta = Math.atan(cosTopocentricLambda * (sinBeta - sinpi * (S * cose - C * sine * sintheta)) / N);\r\n Topocentric.semidiameter = Math.asin(cosTopocentricLambda * Math.cos(Topocentric.beta) * Math.sin(Semidiameter) / N);\r\n Topocentric.semidiameter = CT.r2D(Topocentric.semidiameter);\r\n Topocentric.lambda = CT.m360(CT.r2D(Topocentric.lambda));\r\n Topocentric.beta = CT.r2D(Topocentric.beta);\r\n return Topocentric;\r\n };\r\n CAAParallax.parallaxToDistance = function(Parallax) {\r\n return GFX.g_AAParallax_C1 / Math.sin(CT.d2R(Parallax));\r\n };\r\n CAAParallax.distanceToParallax = function(Distance) {\r\n var pi = Math.asin(GFX.g_AAParallax_C1 / Distance);\r\n return CT.r2D(pi);\r\n };\r\n var CAAParallax$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPhysicalJupiterDetails\r\n\r\n function CAAPhysicalJupiterDetails() {\r\n this.DE = 0;\r\n this.DS = 0;\r\n this.geometricw1 = 0;\r\n this.geometricw2 = 0;\r\n this.apparentw1 = 0;\r\n this.apparentw2 = 0;\r\n this.p = 0;\r\n this.DE = 0;\r\n this.DS = 0;\r\n this.geometricw1 = 0;\r\n this.geometricw2 = 0;\r\n this.apparentw1 = 0;\r\n this.apparentw2 = 0;\r\n this.p = 0;\r\n }\r\n var CAAPhysicalJupiterDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPhysicalJupiter\r\n\r\n function CAAPhysicalJupiter() {\r\n }\r\n CAAPhysicalJupiter.calculate = function(JD) {\r\n var details = new CAAPhysicalJupiterDetails();\r\n var d = JD - 2433282.5;\r\n var T1 = d / 36525;\r\n var alpha0 = 268 + 0.1061 * T1;\r\n var alpha0rad = CT.d2R(alpha0);\r\n var delta0 = 64.5 - 0.0164 * T1;\r\n var delta0rad = CT.d2R(delta0);\r\n var W1 = CT.m360(17.71 + 877.90003539 * d);\r\n var W2 = CT.m360(16.838 + 870.27003539 * d);\r\n var l0 = CAAEarth.eclipticLongitude(JD);\r\n var l0rad = CT.d2R(l0);\r\n var b0 = CAAEarth.eclipticLatitude(JD);\r\n var b0rad = CT.d2R(b0);\r\n var R = CAAEarth.radiusVector(JD);\r\n var l = CAAJupiter.eclipticLongitude(JD);\r\n var lrad = CT.d2R(l);\r\n var b = CAAJupiter.eclipticLatitude(JD);\r\n var brad = CT.d2R(b);\r\n var r = CAAJupiter.radiusVector(JD);\r\n var x = r * Math.cos(brad) * Math.cos(lrad) - R * Math.cos(l0rad);\r\n var y = r * Math.cos(brad) * Math.sin(lrad) - R * Math.sin(l0rad);\r\n var z = r * Math.sin(brad) - R * Math.sin(b0rad);\r\n var DELTA = Math.sqrt(x * x + y * y + z * z);\r\n l -= 0.01299 * DELTA / (r * r);\r\n lrad = CT.d2R(l);\r\n x = r * Math.cos(brad) * Math.cos(lrad) - R * Math.cos(l0rad);\r\n y = r * Math.cos(brad) * Math.sin(lrad) - R * Math.sin(l0rad);\r\n z = r * Math.sin(brad) - R * Math.sin(b0rad);\r\n DELTA = Math.sqrt(x * x + y * y + z * z);\r\n var e0 = CAANutation.meanObliquityOfEcliptic(JD);\r\n var e0rad = CT.d2R(e0);\r\n var alphas = Math.atan2(Math.cos(e0rad) * Math.sin(lrad) - Math.sin(e0rad) * Math.tan(brad), Math.cos(lrad));\r\n var deltas = Math.asin(Math.cos(e0rad) * Math.sin(brad) + Math.sin(e0rad) * Math.cos(brad) * Math.sin(lrad));\r\n details.DS = CT.r2D(Math.asin(-Math.sin(delta0rad) * Math.sin(deltas) - Math.cos(delta0rad) * Math.cos(deltas) * Math.cos(alpha0rad - alphas)));\r\n var u = y * Math.cos(e0rad) - z * Math.sin(e0rad);\r\n var v = y * Math.sin(e0rad) + z * Math.cos(e0rad);\r\n var alpharad = Math.atan2(u, x);\r\n var alpha = CT.r2D(alpharad);\r\n var deltarad = Math.atan2(v, Math.sqrt(x * x + u * u));\r\n var delta = CT.r2D(deltarad);\r\n var xi = Math.atan2(Math.sin(delta0rad) * Math.cos(deltarad) * Math.cos(alpha0rad - alpharad) - Math.sin(deltarad) * Math.cos(delta0rad), Math.cos(deltarad) * Math.sin(alpha0rad - alpharad));\r\n details.DE = CT.r2D(Math.asin(-Math.sin(delta0rad) * Math.sin(deltarad) - Math.cos(delta0rad) * Math.cos(deltarad) * Math.cos(alpha0rad - alpharad)));\r\n details.geometricw1 = CT.m360(W1 - CT.r2D(xi) - 5.07033 * DELTA);\r\n details.geometricw2 = CT.m360(W2 - CT.r2D(xi) - 5.02626 * DELTA);\r\n var C = 57.2958 * (2 * r * DELTA + R * R - r * r - DELTA * DELTA) / (4 * r * DELTA);\r\n if (Math.sin(lrad - l0rad) > 0) {\r\n details.apparentw1 = CT.m360(details.geometricw1 + C);\r\n details.apparentw2 = CT.m360(details.geometricw2 + C);\r\n }\r\n else {\r\n details.apparentw1 = CT.m360(details.geometricw1 - C);\r\n details.apparentw2 = CT.m360(details.geometricw2 - C);\r\n }\r\n var NutationInLongitude = CAANutation.nutationInLongitude(JD);\r\n var NutationInObliquity = CAANutation.nutationInObliquity(JD);\r\n e0 += NutationInObliquity / 3600;\r\n e0rad = CT.d2R(e0);\r\n alpha += 0.005693 * (Math.cos(alpharad) * Math.cos(l0rad) * Math.cos(e0rad) + Math.sin(alpharad) * Math.sin(l0rad)) / Math.cos(deltarad);\r\n alpha = CT.m360(alpha);\r\n alpharad = CT.d2R(alpha);\r\n delta += 0.005693 * (Math.cos(l0rad) * Math.cos(e0rad) * (Math.tan(e0rad) * Math.cos(deltarad) - Math.sin(alpharad) * Math.sin(deltarad)) + Math.cos(alpharad) * Math.sin(deltarad) * Math.sin(l0rad));\r\n deltarad = CT.d2R(delta);\r\n var NutationRA = CAANutation.nutationInRightAscension(alpha / 15, delta, e0, NutationInLongitude, NutationInObliquity);\r\n var alphadash = alpha + NutationRA / 3600;\r\n var alphadashrad = CT.d2R(alphadash);\r\n var NutationDec = CAANutation.nutationInDeclination(alpha / 15, delta, e0, NutationInLongitude, NutationInObliquity);\r\n var deltadash = delta + NutationDec / 3600;\r\n var deltadashrad = CT.d2R(deltadash);\r\n NutationRA = CAANutation.nutationInRightAscension(alpha0 / 15, delta0, e0, NutationInLongitude, NutationInObliquity);\r\n var alpha0dash = alpha0 + NutationRA / 3600;\r\n var alpha0dashrad = CT.d2R(alpha0dash);\r\n NutationDec = CAANutation.nutationInDeclination(alpha0 / 15, delta0, e0, NutationInLongitude, NutationInObliquity);\r\n var delta0dash = delta0 + NutationDec / 3600;\r\n var delta0dashrad = CT.d2R(delta0dash);\r\n details.p = CT.m360(CT.r2D(Math.atan2(Math.cos(delta0dashrad) * Math.sin(alpha0dashrad - alphadashrad), Math.sin(delta0dashrad) * Math.cos(deltadashrad) - Math.cos(delta0dashrad) * Math.sin(deltadashrad) * Math.cos(alpha0dashrad - alphadashrad))));\r\n return details;\r\n };\r\n var CAAPhysicalJupiter$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPhysicalMarsDetails\r\n\r\n function CAAPhysicalMarsDetails() {\r\n this.DE = 0;\r\n this.DS = 0;\r\n this.w = 0;\r\n this.p = 0;\r\n this.x = 0;\r\n this.k = 0;\r\n this.q = 0;\r\n this.d = 0;\r\n this.DE = 0;\r\n this.DS = 0;\r\n this.w = 0;\r\n this.p = 0;\r\n this.x = 0;\r\n this.k = 0;\r\n this.q = 0;\r\n this.d = 0;\r\n }\r\n var CAAPhysicalMarsDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPhysicalMars\r\n\r\n function CAAPhysicalMars() {\r\n }\r\n CAAPhysicalMars.calculate = function(JD) {\r\n var details = new CAAPhysicalMarsDetails();\r\n var T = (JD - 2451545) / 36525;\r\n var Lambda0 = 352.9065 + 1.1733 * T;\r\n var Lambda0rad = CT.d2R(Lambda0);\r\n var Beta0 = 63.2818 - 0.00394 * T;\r\n var Beta0rad = CT.d2R(Beta0);\r\n var l0 = CAAEarth.eclipticLongitude(JD);\r\n var l0rad = CT.d2R(l0);\r\n var b0 = CAAEarth.eclipticLatitude(JD);\r\n var b0rad = CT.d2R(b0);\r\n var R = CAAEarth.radiusVector(JD);\r\n var PreviousLightTravelTime = 0;\r\n var LightTravelTime = 0;\r\n var x = 0;\r\n var y = 0;\r\n var z = 0;\r\n var bIterate = true;\r\n var DELTA = 0;\r\n var l = 0;\r\n var lrad = 0;\r\n var b = 0;\r\n var brad = 0;\r\n var r = 0;\r\n while (bIterate) {\r\n var JD2 = JD - LightTravelTime;\r\n l = CAAMars.eclipticLongitude(JD2);\r\n lrad = CT.d2R(l);\r\n b = CAAMars.eclipticLatitude(JD2);\r\n brad = CT.d2R(b);\r\n r = CAAMars.radiusVector(JD2);\r\n x = r * Math.cos(brad) * Math.cos(lrad) - R * Math.cos(l0rad);\r\n y = r * Math.cos(brad) * Math.sin(lrad) - R * Math.sin(l0rad);\r\n z = r * Math.sin(brad) - R * Math.sin(b0rad);\r\n DELTA = Math.sqrt(x * x + y * y + z * z);\r\n LightTravelTime = ELL.distanceToLightTime(DELTA);\r\n bIterate = (Math.abs(LightTravelTime - PreviousLightTravelTime) > 2E-06);\r\n if (bIterate) {\r\n PreviousLightTravelTime = LightTravelTime;\r\n }\r\n }\r\n var lambdarad = Math.atan2(y, x);\r\n var lambda = CT.r2D(lambdarad);\r\n var betarad = Math.atan2(z, Math.sqrt(x * x + y * y));\r\n var beta = CT.r2D(betarad);\r\n details.DE = CT.r2D(Math.asin(-Math.sin(Beta0rad) * Math.sin(betarad) - Math.cos(Beta0rad) * Math.cos(betarad) * Math.cos(Lambda0rad - lambdarad)));\r\n var N = 49.5581 + 0.7721 * T;\r\n var Nrad = CT.d2R(N);\r\n var ldash = l - 0.00697 / r;\r\n var ldashrad = CT.d2R(ldash);\r\n var bdash = b - 0.000225 * (Math.cos(lrad - Nrad) / r);\r\n var bdashrad = CT.d2R(bdash);\r\n details.DS = CT.r2D(Math.asin(-Math.sin(Beta0rad) * Math.sin(bdashrad) - Math.cos(Beta0rad) * Math.cos(bdashrad) * Math.cos(Lambda0rad - ldashrad)));\r\n var W = CT.m360(11.504 + 350.89200025 * (JD - LightTravelTime - 2433282.5));\r\n var e0 = CAANutation.meanObliquityOfEcliptic(JD);\r\n var e0rad = CT.d2R(e0);\r\n var PoleEquatorial = CT.ec2Eq(Lambda0, Beta0, e0);\r\n var alpha0rad = CT.h2R(PoleEquatorial.x);\r\n var delta0rad = CT.d2R(PoleEquatorial.y);\r\n var u = y * Math.cos(e0rad) - z * Math.sin(e0rad);\r\n var v = y * Math.sin(e0rad) + z * Math.cos(e0rad);\r\n var alpharad = Math.atan2(u, x);\r\n var alpha = CT.r2H(alpharad);\r\n var deltarad = Math.atan2(v, Math.sqrt(x * x + u * u));\r\n var delta = CT.r2D(deltarad);\r\n var xi = Math.atan2(Math.sin(delta0rad) * Math.cos(deltarad) * Math.cos(alpha0rad - alpharad) - Math.sin(deltarad) * Math.cos(delta0rad), Math.cos(deltarad) * Math.sin(alpha0rad - alpharad));\r\n details.w = CT.m360(W - CT.r2D(xi));\r\n var NutationInLongitude = CAANutation.nutationInLongitude(JD);\r\n var NutationInObliquity = CAANutation.nutationInObliquity(JD);\r\n lambda += 0.005693 * Math.cos(l0rad - lambdarad) / Math.cos(betarad);\r\n beta += 0.005693 * Math.sin(l0rad - lambdarad) * Math.sin(betarad);\r\n Lambda0 += NutationInLongitude / 3600;\r\n Lambda0rad = CT.d2R(Lambda0);\r\n lambda += NutationInLongitude / 3600;\r\n lambdarad = CT.d2R(lambda);\r\n e0 += NutationInObliquity / 3600;\r\n e0rad = CT.d2R(e0rad);\r\n var ApparentPoleEquatorial = CT.ec2Eq(Lambda0, Beta0, e0);\r\n var alpha0dash = CT.h2R(ApparentPoleEquatorial.x);\r\n var delta0dash = CT.d2R(ApparentPoleEquatorial.y);\r\n var ApparentMars = CT.ec2Eq(lambda, beta, e0);\r\n var alphadash = CT.h2R(ApparentMars.x);\r\n var deltadash = CT.d2R(ApparentMars.y);\r\n details.p = CT.m360(CT.r2D(Math.atan2(Math.cos(delta0dash) * Math.sin(alpha0dash - alphadash), Math.sin(delta0dash) * Math.cos(deltadash) - Math.cos(delta0dash) * Math.sin(deltadash) * Math.cos(alpha0dash - alphadash))));\r\n var SunLambda = CAASun.geometricEclipticLongitude(JD);\r\n var SunBeta = CAASun.geometricEclipticLatitude(JD);\r\n var SunEquatorial = CT.ec2Eq(SunLambda, SunBeta, e0);\r\n details.x = MIFR.positionAngle(SunEquatorial.x, SunEquatorial.y, alpha, delta);\r\n details.d = 9.36 / DELTA;\r\n details.k = IFR.illuminatedFraction2(r, R, DELTA);\r\n details.q = (1 - details.k) * details.d;\r\n return details;\r\n };\r\n var CAAPhysicalMars$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPhysicalSunDetails\r\n\r\n function CAAPhysicalSunDetails() {\r\n this.p = 0;\r\n this.b0 = 0;\r\n this.l0 = 0;\r\n this.p = 0;\r\n this.b0 = 0;\r\n this.l0 = 0;\r\n }\r\n var CAAPhysicalSunDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPhysicalSun\r\n\r\n function CAAPhysicalSun() {\r\n }\r\n CAAPhysicalSun.calculate = function(JD) {\r\n var theta = CT.m360((JD - 2398220) * 360 / 25.38);\r\n var I = 7.25;\r\n var K = 73.6667 + 1.3958333 * (JD - 2396758) / 36525;\r\n var L = CAAEarth.eclipticLongitude(JD);\r\n var R = CAAEarth.radiusVector(JD);\r\n var SunLong = L + 180 - CT.dmS2D(0, 0, 20.4898 / R);\r\n var SunLongDash = SunLong + CT.dmS2D(0, 0, CAANutation.nutationInLongitude(JD));\r\n var epsilon = CAANutation.trueObliquityOfEcliptic(JD);\r\n epsilon = CT.d2R(epsilon);\r\n SunLong = CT.d2R(SunLong);\r\n SunLongDash = CT.d2R(SunLongDash);\r\n K = CT.d2R(K);\r\n I = CT.d2R(I);\r\n theta = CT.d2R(theta);\r\n var x = Math.atan(-Math.cos(SunLong) * Math.tan(epsilon));\r\n var y = Math.atan(-Math.cos(SunLong - K) * Math.tan(I));\r\n var details = new CAAPhysicalSunDetails();\r\n details.p = CT.r2D(x + y);\r\n details.b0 = CT.r2D(Math.asin(Math.sin(SunLong - K) * Math.sin(I)));\r\n var eta = Math.atan(Math.tan(SunLong - K) * Math.cos(I));\r\n details.l0 = CT.m360(CT.r2D(eta - theta));\r\n return details;\r\n };\r\n CAAPhysicalSun.timeOfStartOfRotation = function(C) {\r\n var JED = 2398140.227 + 27.2752316 * C;\r\n var M = CT.m360(281.96 + 26.882476 * C);\r\n M = CT.d2R(M);\r\n JED += (0.1454 * Math.sin(M) - 0.0085 * Math.sin(2 * M) - 0.0141 * Math.cos(2 * M));\r\n return JED;\r\n };\r\n var CAAPhysicalSun$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPluto\r\n\r\n function CAAPluto() {\r\n }\r\n CAAPluto.eclipticLongitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var J = 34.35 + 3034.9057 * T;\r\n var S = 50.08 + 1222.1138 * T;\r\n var P = 238.96 + 144.96 * T;\r\n var L = 0;\r\n var nPlutoCoefficients = GFX.g_PlutoArgumentCoefficients.length;\r\n for (var i = 0; i < nPlutoCoefficients; i++) {\r\n var Alpha = GFX.g_PlutoArgumentCoefficients[i].j * J + GFX.g_PlutoArgumentCoefficients[i].s * S + GFX.g_PlutoArgumentCoefficients[i].p * P;\r\n Alpha = CT.d2R(Alpha);\r\n L += ((GFX.g_PlutoLongitudeCoefficients[i].a * Math.sin(Alpha)) + (GFX.g_PlutoLongitudeCoefficients[i].b * Math.cos(Alpha)));\r\n }\r\n L = L / 1000000;\r\n L += (238.958116 + 144.96 * T);\r\n L = CT.m360(L);\r\n return L;\r\n };\r\n CAAPluto.eclipticLatitude = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var J = 34.35 + 3034.9057 * T;\r\n var S = 50.08 + 1222.1138 * T;\r\n var P = 238.96 + 144.96 * T;\r\n var L = 0;\r\n var nPlutoCoefficients = GFX.g_PlutoArgumentCoefficients.length;\r\n for (var i = 0; i < nPlutoCoefficients; i++) {\r\n var Alpha = GFX.g_PlutoArgumentCoefficients[i].j * J + GFX.g_PlutoArgumentCoefficients[i].s * S + GFX.g_PlutoArgumentCoefficients[i].p * P;\r\n Alpha = CT.d2R(Alpha);\r\n L += ((GFX.g_PlutoLatitudeCoefficients[i].a * Math.sin(Alpha)) + (GFX.g_PlutoLatitudeCoefficients[i].b * Math.cos(Alpha)));\r\n }\r\n L = L / 1000000;\r\n L += -3.908239;\r\n return L;\r\n };\r\n CAAPluto.radiusVector = function(JD) {\r\n var T = (JD - 2451545) / 36525;\r\n var J = 34.35 + 3034.9057 * T;\r\n var S = 50.08 + 1222.1138 * T;\r\n var P = 238.96 + 144.96 * T;\r\n var R = 0;\r\n var nPlutoCoefficients = GFX.g_PlutoArgumentCoefficients.length;\r\n for (var i = 0; i < nPlutoCoefficients; i++) {\r\n var Alpha = GFX.g_PlutoArgumentCoefficients[i].j * J + GFX.g_PlutoArgumentCoefficients[i].s * S + GFX.g_PlutoArgumentCoefficients[i].p * P;\r\n Alpha = CT.d2R(Alpha);\r\n R += ((GFX.g_PlutoRadiusCoefficients[i].a * Math.sin(Alpha)) + (GFX.g_PlutoRadiusCoefficients[i].b * Math.cos(Alpha)));\r\n }\r\n R = R / 10000000;\r\n R += 40.7241346;\r\n return R;\r\n };\r\n var CAAPluto$ = {\r\n\r\n };\r\n\r\n\r\n // PlutoCoefficient1\r\n\r\n function PlutoCoefficient1(j, s, p) {\r\n this.j = 0;\r\n this.s = 0;\r\n this.p = 0;\r\n this.j = j;\r\n this.s = s;\r\n this.p = p;\r\n }\r\n var PlutoCoefficient1$ = {\r\n\r\n };\r\n\r\n\r\n // PlutoCoefficient2\r\n\r\n function PlutoCoefficient2(a, b) {\r\n this.a = 0;\r\n this.b = 0;\r\n this.a = a;\r\n this.b = b;\r\n }\r\n var PlutoCoefficient2$ = {\r\n\r\n };\r\n\r\n\r\n // CAAPrecession\r\n\r\n function CAAPrecession() {\r\n }\r\n CAAPrecession.precessEquatorial = function(Alpha, Delta, JD0, JD) {\r\n var T = (JD0 - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var t = (JD - JD0) / 36525;\r\n var tsquared = t * t;\r\n var tcubed = tsquared * t;\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n var sigma = (2306.2181 + 1.39656 * T - 0.000139 * Tsquared) * t + (0.30188 - 3.44E-05 * T) * tsquared + 0.017988 * tcubed;\r\n sigma = CT.d2R(CT.dmS2D(0, 0, sigma));\r\n var zeta = (2306.2181 + 1.39656 * T - 0.000138 * Tsquared) * t + (1.09468 + 6.6E-05 * T) * tsquared + 0.018203 * tcubed;\r\n zeta = CT.d2R(CT.dmS2D(0, 0, zeta));\r\n var phi = (2004.3109 - 0.8533 * T - 0.000217 * Tsquared) * t - (0.42665 + 0.000217 * T) * tsquared - 0.041833 * tcubed;\r\n phi = CT.d2R(CT.dmS2D(0, 0, phi));\r\n var A = Math.cos(Delta) * Math.sin(Alpha + sigma);\r\n var B = Math.cos(phi) * Math.cos(Delta) * Math.cos(Alpha + sigma) - Math.sin(phi) * Math.sin(Delta);\r\n var C = Math.sin(phi) * Math.cos(Delta) * Math.cos(Alpha + sigma) + Math.cos(phi) * Math.sin(Delta);\r\n var vvalue = new COR();\r\n vvalue.x = CT.r2H(Math.atan2(A, B) + zeta);\r\n if (vvalue.x < 0) {\r\n vvalue.x += 24;\r\n }\r\n vvalue.y = CT.r2D(Math.asin(C));\r\n return vvalue;\r\n };\r\n CAAPrecession.precessEquatorialFK4 = function(Alpha, Delta, JD0, JD) {\r\n var T = (JD0 - 2415020.3135) / 36524.2199;\r\n var t = (JD - JD0) / 36524.2199;\r\n var tsquared = t * t;\r\n var tcubed = tsquared * t;\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n var sigma = (2304.25 + 1.396 * T) * t + 0.302 * tsquared + 0.018 * tcubed;\r\n sigma = CT.d2R(CT.dmS2D(0, 0, sigma));\r\n var zeta = 0.791 * tsquared + 0.001 * tcubed;\r\n zeta = CT.d2R(CT.dmS2D(0, 0, zeta));\r\n zeta += sigma;\r\n var phi = (2004.682 - 0.853 * T) * t - 0.426 * tsquared - 0.042 * tcubed;\r\n phi = CT.d2R(CT.dmS2D(0, 0, phi));\r\n var A = Math.cos(Delta) * Math.sin(Alpha + sigma);\r\n var B = Math.cos(phi) * Math.cos(Delta) * Math.cos(Alpha + sigma) - Math.sin(phi) * Math.sin(Delta);\r\n var C = Math.sin(phi) * Math.cos(Delta) * Math.cos(Alpha + sigma) + Math.cos(phi) * Math.sin(Delta);\r\n var vvalue = new COR();\r\n vvalue.x = CT.r2H(Math.atan2(A, B) + zeta);\r\n if (vvalue.x < 0) {\r\n vvalue.x += 24;\r\n }\r\n vvalue.y = CT.r2D(Math.asin(C));\r\n return vvalue;\r\n };\r\n CAAPrecession.precessEcliptic = function(Lambda, Beta, JD0, JD) {\r\n var T = (JD0 - 2451545) / 36525;\r\n var Tsquared = T * T;\r\n var t = (JD - JD0) / 36525;\r\n var tsquared = t * t;\r\n var tcubed = tsquared * t;\r\n Lambda = CT.d2R(Lambda);\r\n Beta = CT.d2R(Beta);\r\n var eta = (47.0029 - 0.06603 * T + 0.000598 * Tsquared) * t + (-0.03302 + 0.000598 * T) * tsquared + 6E-05 * tcubed;\r\n eta = CT.d2R(CT.dmS2D(0, 0, eta));\r\n var pi = 174.876384 * 3600 + 3289.4789 * T + 0.60622 * Tsquared - (869.8089 + 0.50491 * T) * t + 0.03536 * tsquared;\r\n pi = CT.d2R(CT.dmS2D(0, 0, pi));\r\n var p = (5029.0966 + 2.22226 * T - 4.2E-05 * Tsquared) * t + (1.11113 - 4.2E-05 * T) * tsquared - 6E-06 * tcubed;\r\n p = CT.d2R(CT.dmS2D(0, 0, p));\r\n var A = Math.cos(eta) * Math.cos(Beta) * Math.sin(pi - Lambda) - Math.sin(eta) * Math.sin(Beta);\r\n var B = Math.cos(Beta) * Math.cos(pi - Lambda);\r\n var C = Math.cos(eta) * Math.sin(Beta) + Math.sin(eta) * Math.cos(Beta) * Math.sin(pi - Lambda);\r\n var vvalue = new COR();\r\n vvalue.x = CT.r2D(p + pi - Math.atan2(A, B));\r\n if (vvalue.x < 0) {\r\n vvalue.x += 360;\r\n }\r\n vvalue.y = CT.r2D(Math.asin(C));\r\n return vvalue;\r\n };\r\n CAAPrecession.equatorialPMToEcliptic = function(Alpha, Delta, Beta, PMAlpha, PMDelta, Epsilon) {\r\n Epsilon = CT.d2R(Epsilon);\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n Beta = CT.d2R(Beta);\r\n var cosb = Math.cos(Beta);\r\n var sinEpsilon = Math.sin(Epsilon);\r\n var vvalue = new COR();\r\n vvalue.x = (PMDelta * sinEpsilon * Math.cos(Alpha) + PMAlpha * Math.cos(Delta) * (Math.cos(Epsilon) * Math.cos(Delta) + sinEpsilon * Math.sin(Delta) * Math.sin(Alpha))) / (cosb * cosb);\r\n vvalue.y = (PMDelta * (Math.cos(Epsilon) * Math.cos(Delta) + sinEpsilon * Math.sin(Delta) * Math.sin(Alpha)) - PMAlpha * sinEpsilon * Math.cos(Alpha) * Math.cos(Delta)) / cosb;\r\n return vvalue;\r\n };\r\n CAAPrecession.adjustPositionUsingUniformProperMotion = function(t, Alpha, Delta, PMAlpha, PMDelta) {\r\n var vvalue = new COR();\r\n vvalue.x = Alpha + (PMAlpha * t / 3600);\r\n vvalue.y = Delta + (PMDelta * t / 3600);\r\n return vvalue;\r\n };\r\n CAAPrecession.adjustPositionUsingMotionInSpace = function(r, DeltaR, t, Alpha, Delta, PMAlpha, PMDelta) {\r\n DeltaR /= 977792;\r\n PMAlpha /= 13751;\r\n PMDelta /= 206265;\r\n Alpha = CT.h2R(Alpha);\r\n Delta = CT.d2R(Delta);\r\n var x = r * Math.cos(Delta) * Math.cos(Alpha);\r\n var y = r * Math.cos(Delta) * Math.sin(Alpha);\r\n var z = r * Math.sin(Delta);\r\n var DeltaX = x / r * DeltaR - z * PMDelta * Math.cos(Alpha) - y * PMAlpha;\r\n var DeltaY = y / r * DeltaR - z * PMDelta * Math.sin(Alpha) + x * PMAlpha;\r\n var DeltaZ = z / r * DeltaR + r * PMDelta * Math.cos(Delta);\r\n x += t * DeltaX;\r\n y += t * DeltaY;\r\n z += t * DeltaZ;\r\n var vvalue = new COR();\r\n vvalue.x = CT.r2H(Math.atan2(y, x));\r\n if (vvalue.x < 0) {\r\n vvalue.x += 24;\r\n }\r\n vvalue.y = CT.r2D(Math.atan2(z, Math.sqrt(x * x + y * y)));\r\n return vvalue;\r\n };\r\n var CAAPrecession$ = {\r\n\r\n };\r\n\r\n\r\n // CAARiseTransitSetDetails\r\n\r\n function CAARiseTransitSetDetails() {\r\n this.bValid = false;\r\n this.rise = 0;\r\n this.transit = 0;\r\n this.set = 0;\r\n this.bValid = false;\r\n this.rise = 0;\r\n this.transit = 0;\r\n this.set = 0;\r\n }\r\n var CAARiseTransitSetDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAARiseTransitSet\r\n\r\n function CAARiseTransitSet() {\r\n }\r\n CAARiseTransitSet.rise = function(JD, Alpha1, Delta1, Alpha2, Delta2, Alpha3, Delta3, Longitude, Latitude, h0) {\r\n var details = new CAARiseTransitSetDetails();\r\n details.bValid = false;\r\n var theta0 = CAASidereal.apparentGreenwichSiderealTime(JD);\r\n theta0 *= 15;\r\n var deltaT = DYT.deltaT(JD);\r\n var Delta2Rad = CT.d2R(Delta2);\r\n var LatitudeRad = CT.d2R(Latitude);\r\n var h0Rad = CT.d2R(h0);\r\n var cosH0 = (Math.sin(h0Rad) - Math.sin(LatitudeRad) * Math.sin(Delta2Rad)) / (Math.cos(LatitudeRad) * Math.cos(Delta2Rad));\r\n if ((cosH0 > 1) || (cosH0 < -1)) {\r\n return details;\r\n }\r\n var H0 = Math.acos(cosH0);\r\n H0 = CT.r2D(H0);\r\n var M0 = (Alpha2 * 15 + Longitude - theta0) / 360;\r\n var M1 = M0 - H0 / 360;\r\n var M2 = M0 + H0 / 360;\r\n if (M0 > 1) {\r\n M0 -= 1;\r\n }\r\n else if (M0 < 0) {\r\n M0 += 1;\r\n }\r\n if (M1 > 1) {\r\n M1 -= 1;\r\n }\r\n else if (M1 < 0) {\r\n M1 += 1;\r\n }\r\n if (M2 > 1) {\r\n M2 -= 1;\r\n }\r\n else if (M2 < 0) {\r\n M2 += 1;\r\n }\r\n for (var i = 0; i < 2; i++) {\r\n var theta1 = theta0 + 360.985647 * M1;\r\n theta1 = CT.m360(theta1);\r\n var n = M1 + deltaT / 86400;\r\n var Alpha = INTP.interpolate(n, Alpha1, Alpha2, Alpha3);\r\n var Delta = INTP.interpolate(n, Delta1, Delta2, Delta3);\r\n var H = theta1 - Longitude - Alpha * 15;\r\n var Horizontal = CT.eq2H(H / 15, Delta, Latitude);\r\n var DeltaM = (Horizontal.y - h0) / (360 * Math.cos(CT.d2R(Delta)) * Math.cos(LatitudeRad) * Math.sin(CT.d2R(H)));\r\n M1 += DeltaM;\r\n theta1 = theta0 + 360.985647 * M0;\r\n theta1 = CT.m360(theta1);\r\n n = M0 + deltaT / 86400;\r\n Alpha = INTP.interpolate(n, Alpha1, Alpha2, Alpha3);\r\n H = theta1 - Longitude - Alpha * 15;\r\n if (H < -180) {\r\n H += 360;\r\n }\r\n DeltaM = -H / 360;\r\n M0 += DeltaM;\r\n theta1 = theta0 + 360.985647 * M2;\r\n theta1 = CT.m360(theta1);\r\n n = M2 + deltaT / 86400;\r\n Alpha = INTP.interpolate(n, Alpha1, Alpha2, Alpha3);\r\n Delta = INTP.interpolate(n, Delta1, Delta2, Delta3);\r\n H = theta1 - Longitude - Alpha * 15;\r\n Horizontal = CT.eq2H(H / 15, Delta, Latitude);\r\n DeltaM = (Horizontal.y - h0) / (360 * Math.cos(CT.d2R(Delta)) * Math.cos(LatitudeRad) * Math.sin(CT.d2R(H)));\r\n M2 += DeltaM;\r\n }\r\n details.bValid = true;\r\n details.rise = M1 * 24;\r\n details.set = M2 * 24;\r\n details.transit = M0 * 24;\r\n return details;\r\n };\r\n var CAARiseTransitSet$ = {\r\n\r\n };\r\n\r\n\r\n // CAASaturn\r\n\r\n function CAASaturn() {\r\n }\r\n CAASaturn.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nL0Coefficients = GFX.g_L0SaturnCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0SaturnCoefficients[i].a * Math.cos(GFX.g_L0SaturnCoefficients[i].b + GFX.g_L0SaturnCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1SaturnCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1SaturnCoefficients[i].a * Math.cos(GFX.g_L1SaturnCoefficients[i].b + GFX.g_L1SaturnCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2SaturnCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2SaturnCoefficients[i].a * Math.cos(GFX.g_L2SaturnCoefficients[i].b + GFX.g_L2SaturnCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3SaturnCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3SaturnCoefficients[i].a * Math.cos(GFX.g_L3SaturnCoefficients[i].b + GFX.g_L3SaturnCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4SaturnCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4SaturnCoefficients[i].a * Math.cos(GFX.g_L4SaturnCoefficients[i].b + GFX.g_L4SaturnCoefficients[i].c * rho);\r\n }\r\n var nL5Coefficients = GFX.g_L5SaturnCoefficients.length;\r\n var L5 = 0;\r\n for (i = 0; i < nL5Coefficients; i++) {\r\n L5 += GFX.g_L5SaturnCoefficients[i].a * Math.cos(GFX.g_L5SaturnCoefficients[i].b + GFX.g_L5SaturnCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4 + L5 * rho5) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAASaturn.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nB0Coefficients = GFX.g_B0SaturnCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0SaturnCoefficients[i].a * Math.cos(GFX.g_B0SaturnCoefficients[i].b + GFX.g_B0SaturnCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1SaturnCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1SaturnCoefficients[i].a * Math.cos(GFX.g_B1SaturnCoefficients[i].b + GFX.g_B1SaturnCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2SaturnCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2SaturnCoefficients[i].a * Math.cos(GFX.g_B2SaturnCoefficients[i].b + GFX.g_B2SaturnCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3SaturnCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3SaturnCoefficients[i].a * Math.cos(GFX.g_B3SaturnCoefficients[i].b + GFX.g_B3SaturnCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4SaturnCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4SaturnCoefficients[i].a * Math.cos(GFX.g_B4SaturnCoefficients[i].b + GFX.g_B4SaturnCoefficients[i].c * rho);\r\n }\r\n var nB5Coefficients = GFX.g_B5SaturnCoefficients.length;\r\n var B5 = 0;\r\n for (i = 0; i < nB5Coefficients; i++) {\r\n B5 += GFX.g_B5SaturnCoefficients[i].a * Math.cos(GFX.g_B5SaturnCoefficients[i].b + GFX.g_B5SaturnCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4 + B5 * rho5) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAASaturn.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nR0Coefficients = GFX.g_R0SaturnCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0SaturnCoefficients[i].a * Math.cos(GFX.g_R0SaturnCoefficients[i].b + GFX.g_R0SaturnCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1SaturnCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1SaturnCoefficients[i].a * Math.cos(GFX.g_R1SaturnCoefficients[i].b + GFX.g_R1SaturnCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2SaturnCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2SaturnCoefficients[i].a * Math.cos(GFX.g_R2SaturnCoefficients[i].b + GFX.g_R2SaturnCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3SaturnCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3SaturnCoefficients[i].a * Math.cos(GFX.g_R3SaturnCoefficients[i].b + GFX.g_R3SaturnCoefficients[i].c * rho);\r\n }\r\n var nR4Coefficients = GFX.g_R4SaturnCoefficients.length;\r\n var R4 = 0;\r\n for (i = 0; i < nR4Coefficients; i++) {\r\n R4 += GFX.g_R4SaturnCoefficients[i].a * Math.cos(GFX.g_R4SaturnCoefficients[i].b + GFX.g_R4SaturnCoefficients[i].c * rho);\r\n }\r\n var nR5Coefficients = GFX.g_R5SaturnCoefficients.length;\r\n var R5 = 0;\r\n for (i = 0; i < nR5Coefficients; i++) {\r\n R5 += GFX.g_R5SaturnCoefficients[i].a * Math.cos(GFX.g_R5SaturnCoefficients[i].b + GFX.g_R5SaturnCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed + R4 * rho4 + R5 * rho5) / 100000000;\r\n };\r\n var CAASaturn$ = {\r\n\r\n };\r\n\r\n\r\n // CAASaturnRingDetails\r\n\r\n function CAASaturnRingDetails() {\r\n this.b = 0;\r\n this.bdash = 0;\r\n this.p = 0;\r\n this.a = 0;\r\n this.b = 0;\r\n this.deltaU = 0;\r\n this.b = 0;\r\n this.bdash = 0;\r\n this.p = 0;\r\n this.a = 0;\r\n this.b = 0;\r\n this.deltaU = 0;\r\n }\r\n var CAASaturnRingDetails$ = {\r\n\r\n };\r\n\r\n\r\n // CAASaturnRings\r\n\r\n function CAASaturnRings() {\r\n }\r\n CAASaturnRings.calculate = function(JD) {\r\n var details = new CAASaturnRingDetails();\r\n var T = (JD - 2451545) / 36525;\r\n var T2 = T * T;\r\n var i = 28.075216 - 0.012998 * T + 4E-06 * T2;\r\n var irad = CT.d2R(i);\r\n var omega = 169.50847 + 1.394681 * T + 0.000412 * T2;\r\n var omegarad = CT.d2R(omega);\r\n var l0 = CAAEarth.eclipticLongitude(JD);\r\n var b0 = CAAEarth.eclipticLatitude(JD);\r\n l0 += CAAFK5.correctionInLongitude(l0, b0, JD);\r\n var l0rad = CT.d2R(l0);\r\n b0 += CAAFK5.correctionInLatitude(l0, JD);\r\n var b0rad = CT.d2R(b0);\r\n var R = CAAEarth.radiusVector(JD);\r\n var DELTA = 9;\r\n var PreviousEarthLightTravelTime = 0;\r\n var EarthLightTravelTime = ELL.distanceToLightTime(DELTA);\r\n var JD1 = JD - EarthLightTravelTime;\r\n var bIterate = true;\r\n var x = 0;\r\n var y = 0;\r\n var z = 0;\r\n var l = 0;\r\n var b = 0;\r\n var r = 0;\r\n while (bIterate) {\r\n l = CAASaturn.eclipticLongitude(JD1);\r\n b = CAASaturn.eclipticLatitude(JD1);\r\n l += CAAFK5.correctionInLongitude(l, b, JD1);\r\n b += CAAFK5.correctionInLatitude(l, JD1);\r\n var lrad = CT.d2R(l);\r\n var brad = CT.d2R(b);\r\n r = CAASaturn.radiusVector(JD1);\r\n x = r * Math.cos(brad) * Math.cos(lrad) - R * Math.cos(l0rad);\r\n y = r * Math.cos(brad) * Math.sin(lrad) - R * Math.sin(l0rad);\r\n z = r * Math.sin(brad) - R * Math.sin(b0rad);\r\n DELTA = Math.sqrt(x * x + y * y + z * z);\r\n EarthLightTravelTime = ELL.distanceToLightTime(DELTA);\r\n bIterate = (Math.abs(EarthLightTravelTime - PreviousEarthLightTravelTime) > 2E-06);\r\n if (bIterate) {\r\n JD1 = JD - EarthLightTravelTime;\r\n PreviousEarthLightTravelTime = EarthLightTravelTime;\r\n }\r\n }\r\n var lambda = Math.atan2(y, x);\r\n var beta = Math.atan2(z, Math.sqrt(x * x + y * y));\r\n details.b = Math.asin(Math.sin(irad) * Math.cos(beta) * Math.sin(lambda - omegarad) - Math.cos(irad) * Math.sin(beta));\r\n details.a = 375.35 / DELTA;\r\n details.b = details.a * Math.sin(Math.abs(details.b));\r\n details.b = CT.r2D(details.b);\r\n var N = 113.6655 + 0.8771 * T;\r\n var Nrad = CT.d2R(N);\r\n var ldash = l - 0.01759 / r;\r\n var ldashrad = CT.d2R(ldash);\r\n var bdash = b - 0.000764 * Math.cos(ldashrad - Nrad) / r;\r\n var bdashrad = CT.d2R(bdash);\r\n details.bdash = CT.r2D(Math.asin(Math.sin(irad) * Math.cos(bdashrad) * Math.sin(ldashrad - omegarad) - Math.cos(irad) * Math.sin(bdashrad)));\r\n var U1 = Math.atan2(Math.sin(irad) * Math.sin(bdashrad) + Math.cos(irad) * Math.cos(bdashrad) * Math.sin(ldashrad - omegarad), Math.cos(bdashrad) * Math.cos(ldashrad - omegarad));\r\n var U2 = Math.atan2(Math.sin(irad) * Math.sin(beta) + Math.cos(irad) * Math.cos(beta) * Math.sin(lambda - omegarad), Math.cos(beta) * Math.cos(lambda - omegarad));\r\n details.deltaU = CT.r2D(Math.abs(U1 - U2));\r\n var Obliquity = CAANutation.trueObliquityOfEcliptic(JD);\r\n var NutationInLongitude = CAANutation.nutationInLongitude(JD);\r\n var lambda0 = omega - 90;\r\n var beta0 = 90 - i;\r\n lambda += CT.d2R(0.005693 * Math.cos(l0rad - lambda) / Math.cos(beta));\r\n beta += CT.d2R(0.005693 * Math.sin(l0rad - lambda) * Math.sin(beta));\r\n lambda = CT.r2D(lambda);\r\n lambda += NutationInLongitude / 3600;\r\n lambda = CT.m360(lambda);\r\n lambda0 += NutationInLongitude / 3600;\r\n lambda0 = CT.m360(lambda0);\r\n beta = CT.r2D(beta);\r\n var GeocentricEclipticSaturn = CT.ec2Eq(lambda, beta, Obliquity);\r\n var alpha = CT.h2R(GeocentricEclipticSaturn.x);\r\n var delta = CT.d2R(GeocentricEclipticSaturn.y);\r\n var GeocentricEclipticNorthPole = CT.ec2Eq(lambda0, beta0, Obliquity);\r\n var alpha0 = CT.h2R(GeocentricEclipticNorthPole.x);\r\n var delta0 = CT.d2R(GeocentricEclipticNorthPole.y);\r\n details.p = CT.r2D(Math.atan2(Math.cos(delta0) * Math.sin(alpha0 - alpha), Math.sin(delta0) * Math.cos(delta) - Math.cos(delta0) * Math.sin(delta) * Math.cos(alpha0 - alpha)));\r\n return details;\r\n };\r\n var CAASaturnRings$ = {\r\n\r\n };\r\n\r\n\r\n // CAASidereal\r\n\r\n function CAASidereal() {\r\n }\r\n CAASidereal.meanGreenwichSiderealTime = function(JD) {\r\n var date = new DT();\r\n date.setJD(JD, DT.afterPapalReformJD(JD));\r\n var D = date.get();\r\n var Year = ss.truncate(D[0]);\r\n var Month = ss.truncate(D[1]);\r\n var Day = ss.truncate(D[2]);\r\n var Hour = ss.truncate(D[3]);\r\n var Minute = ss.truncate(D[4]);\r\n var Second = D[5];\r\n date.set(Year, Month, Day, 0, 0, 0, date.inGregorianCalendar());\r\n var JDMidnight = date.julian();\r\n var T = (JDMidnight - 2451545) / 36525;\r\n var TSquared = T * T;\r\n var TCubed = TSquared * T;\r\n var Value = 100.46061837 + (36000.770053608 * T) + (0.000387933 * TSquared) - (TCubed / 38710000);\r\n Value += (((Hour * 15) + (Minute * 0.25) + (Second * 0.00416666666666667)) * 1.00273790935);\r\n Value = CT.d2H(Value);\r\n return CT.m24(Value);\r\n };\r\n CAASidereal.apparentGreenwichSiderealTime = function(JD) {\r\n var MeanObliquity = CAANutation.meanObliquityOfEcliptic(JD);\r\n var TrueObliquity = MeanObliquity + CAANutation.nutationInObliquity(JD) / 3600;\r\n var NutationInLongitude = CAANutation.nutationInLongitude(JD);\r\n var Value = CAASidereal.meanGreenwichSiderealTime(JD) + (NutationInLongitude * Math.cos(CT.d2R(TrueObliquity)) / 54000);\r\n return CT.m24(Value);\r\n };\r\n var CAASidereal$ = {\r\n\r\n };\r\n\r\n\r\n // CAAStellarMagnitudes\r\n\r\n function CAAStellarMagnitudes() {\r\n }\r\n CAAStellarMagnitudes.combinedMagnitude = function(m1, m2) {\r\n var x = 0.4 * (m2 - m1);\r\n return m2 - 2.5 * Util.log10(Math.pow(10, x) + 1);\r\n };\r\n CAAStellarMagnitudes.combinedMagnitude2 = function(Magnitudes, pMagnitudes) {\r\n var vvalue = 0;\r\n for (var i = 0; i < Magnitudes; i++) {\r\n vvalue += Math.pow(10, -0.4 * pMagnitudes[i]);\r\n }\r\n return -2.5 * Util.log10(vvalue);\r\n };\r\n CAAStellarMagnitudes.brightnessRatio = function(m1, m2) {\r\n var x = 0.4 * (m2 - m1);\r\n return Math.pow(10, x);\r\n };\r\n CAAStellarMagnitudes.magnitudeDifference = function(brightnessRatio) {\r\n return 2.5 * Util.log10(brightnessRatio);\r\n };\r\n var CAAStellarMagnitudes$ = {\r\n\r\n };\r\n\r\n\r\n // CAASun\r\n\r\n function CAASun() {\r\n }\r\n CAASun.geometricEclipticLongitude = function(JD) {\r\n return CT.m360(CAAEarth.eclipticLongitude(JD) + 180);\r\n };\r\n CAASun.geometricEclipticLatitude = function(JD) {\r\n return -CAAEarth.eclipticLatitude(JD);\r\n };\r\n CAASun.geometricEclipticLongitudeJ2000 = function(JD) {\r\n return CT.m360(CAAEarth.eclipticLongitudeJ2000(JD) + 180);\r\n };\r\n CAASun.geometricEclipticLatitudeJ2000 = function(JD) {\r\n return -CAAEarth.eclipticLatitudeJ2000(JD);\r\n };\r\n CAASun.geometricFK5EclipticLongitude = function(JD) {\r\n var Longitude = CAASun.geometricEclipticLongitude(JD);\r\n var Latitude = CAASun.geometricEclipticLatitude(JD);\r\n Longitude += CAAFK5.correctionInLongitude(Longitude, Latitude, JD);\r\n return Longitude;\r\n };\r\n CAASun.geometricFK5EclipticLatitude = function(JD) {\r\n var Longitude = CAASun.geometricEclipticLongitude(JD);\r\n var Latitude = CAASun.geometricEclipticLatitude(JD);\r\n var SunLatCorrection = CAAFK5.correctionInLatitude(Longitude, JD);\r\n Latitude += SunLatCorrection;\r\n return Latitude;\r\n };\r\n CAASun.apparentEclipticLongitude = function(JD) {\r\n var Longitude = CAASun.geometricFK5EclipticLongitude(JD);\r\n Longitude += CT.dmS2D(0, 0, CAANutation.nutationInLongitude(JD));\r\n var R = CAAEarth.radiusVector(JD);\r\n Longitude -= CT.dmS2D(0, 0, 20.4898 / R);\r\n return Longitude;\r\n };\r\n CAASun.apparentEclipticLatitude = function(JD) {\r\n return CAASun.geometricFK5EclipticLatitude(JD);\r\n };\r\n CAASun.eclipticRectangularCoordinatesMeanEquinox = function(JD) {\r\n var Longitude = CT.d2R(CAASun.geometricFK5EclipticLongitude(JD));\r\n var Latitude = CT.d2R(CAASun.geometricFK5EclipticLatitude(JD));\r\n var R = CAAEarth.radiusVector(JD);\r\n var epsilon = CT.d2R(CAANutation.meanObliquityOfEcliptic(JD));\r\n var vvalue = new C3D();\r\n vvalue.x = R * Math.cos(Latitude) * Math.cos(Longitude);\r\n vvalue.y = R * (Math.cos(Latitude) * Math.sin(Longitude) * Math.cos(epsilon) - Math.sin(Latitude) * Math.sin(epsilon));\r\n vvalue.z = R * (Math.cos(Latitude) * Math.sin(Longitude) * Math.sin(epsilon) + Math.sin(Latitude) * Math.cos(epsilon));\r\n return vvalue;\r\n };\r\n CAASun.eclipticRectangularCoordinatesJ2000 = function(JD) {\r\n var Longitude = CAASun.geometricEclipticLongitudeJ2000(JD);\r\n Longitude = CT.d2R(Longitude);\r\n var Latitude = CAASun.geometricEclipticLatitudeJ2000(JD);\r\n Latitude = CT.d2R(Latitude);\r\n var R = CAAEarth.radiusVector(JD);\r\n var vvalue = new C3D();\r\n var coslatitude = Math.cos(Latitude);\r\n vvalue.x = R * coslatitude * Math.cos(Longitude);\r\n vvalue.y = R * coslatitude * Math.sin(Longitude);\r\n vvalue.z = R * Math.sin(Latitude);\r\n return vvalue;\r\n };\r\n CAASun.equatorialRectangularCoordinatesJ2000 = function(JD) {\r\n var vvalue = CAASun.eclipticRectangularCoordinatesJ2000(JD);\r\n vvalue = CAAFK5.convertVSOPToFK5J2000(vvalue);\r\n return vvalue;\r\n };\r\n CAASun.equatorialRectangularCoordinatesB1950 = function(JD) {\r\n var vvalue = CAASun.eclipticRectangularCoordinatesJ2000(JD);\r\n vvalue = CAAFK5.convertVSOPToFK5B1950(vvalue);\r\n return vvalue;\r\n };\r\n CAASun.equatorialRectangularCoordinatesAnyEquinox = function(JD, JDEquinox) {\r\n var vvalue = CAASun.equatorialRectangularCoordinatesJ2000(JD);\r\n vvalue = CAAFK5.convertVSOPToFK5AnyEquinox(vvalue, JDEquinox);\r\n return vvalue;\r\n };\r\n var CAASun$ = {\r\n\r\n };\r\n\r\n\r\n // CAAUranus\r\n\r\n function CAAUranus() {\r\n }\r\n CAAUranus.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nL0Coefficients = GFX.g_L0UranusCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0UranusCoefficients[i].a * Math.cos(GFX.g_L0UranusCoefficients[i].b + GFX.g_L0UranusCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1UranusCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1UranusCoefficients[i].a * Math.cos(GFX.g_L1UranusCoefficients[i].b + GFX.g_L1UranusCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2UranusCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2UranusCoefficients[i].a * Math.cos(GFX.g_L2UranusCoefficients[i].b + GFX.g_L2UranusCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3UranusCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3UranusCoefficients[i].a * Math.cos(GFX.g_L3UranusCoefficients[i].b + GFX.g_L3UranusCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4UranusCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4UranusCoefficients[i].a * Math.cos(GFX.g_L4UranusCoefficients[i].b + GFX.g_L4UranusCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAUranus.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0UranusCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0UranusCoefficients[i].a * Math.cos(GFX.g_B0UranusCoefficients[i].b + GFX.g_B0UranusCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1UranusCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1UranusCoefficients[i].a * Math.cos(GFX.g_B1UranusCoefficients[i].b + GFX.g_B1UranusCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2UranusCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2UranusCoefficients[i].a * Math.cos(GFX.g_B2UranusCoefficients[i].b + GFX.g_B2UranusCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3UranusCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3UranusCoefficients[i].a * Math.cos(GFX.g_B3UranusCoefficients[i].b + GFX.g_B3UranusCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4UranusCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4UranusCoefficients[i].a * Math.cos(GFX.g_B4UranusCoefficients[i].b + GFX.g_B4UranusCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAAUranus.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nR0Coefficients = GFX.g_R0UranusCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0UranusCoefficients[i].a * Math.cos(GFX.g_R0UranusCoefficients[i].b + GFX.g_R0UranusCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1UranusCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1UranusCoefficients[i].a * Math.cos(GFX.g_R1UranusCoefficients[i].b + GFX.g_R1UranusCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2UranusCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2UranusCoefficients[i].a * Math.cos(GFX.g_R2UranusCoefficients[i].b + GFX.g_R2UranusCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3UranusCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3UranusCoefficients[i].a * Math.cos(GFX.g_R3UranusCoefficients[i].b + GFX.g_R3UranusCoefficients[i].c * rho);\r\n }\r\n var nR4Coefficients = GFX.g_R4UranusCoefficients.length;\r\n var R4 = 0;\r\n for (i = 0; i < nR4Coefficients; i++) {\r\n R4 += GFX.g_R4UranusCoefficients[i].a * Math.cos(GFX.g_R4UranusCoefficients[i].b + GFX.g_R4UranusCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed + R4 * rho4) / 100000000;\r\n };\r\n var CAAUranus$ = {\r\n\r\n };\r\n\r\n\r\n // CAAVenus\r\n\r\n function CAAVenus() {\r\n }\r\n CAAVenus.eclipticLongitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var rho5 = rho4 * rho;\r\n var nL0Coefficients = GFX.g_L0VenusCoefficients.length;\r\n var L0 = 0;\r\n var i;\r\n for (i = 0; i < nL0Coefficients; i++) {\r\n L0 += GFX.g_L0VenusCoefficients[i].a * Math.cos(GFX.g_L0VenusCoefficients[i].b + GFX.g_L0VenusCoefficients[i].c * rho);\r\n }\r\n var nL1Coefficients = GFX.g_L1VenusCoefficients.length;\r\n var L1 = 0;\r\n for (i = 0; i < nL1Coefficients; i++) {\r\n L1 += GFX.g_L1VenusCoefficients[i].a * Math.cos(GFX.g_L1VenusCoefficients[i].b + GFX.g_L1VenusCoefficients[i].c * rho);\r\n }\r\n var nL2Coefficients = GFX.g_L2VenusCoefficients.length;\r\n var L2 = 0;\r\n for (i = 0; i < nL2Coefficients; i++) {\r\n L2 += GFX.g_L2VenusCoefficients[i].a * Math.cos(GFX.g_L2VenusCoefficients[i].b + GFX.g_L2VenusCoefficients[i].c * rho);\r\n }\r\n var nL3Coefficients = GFX.g_L3VenusCoefficients.length;\r\n var L3 = 0;\r\n for (i = 0; i < nL3Coefficients; i++) {\r\n L3 += GFX.g_L3VenusCoefficients[i].a * Math.cos(GFX.g_L3VenusCoefficients[i].b + GFX.g_L3VenusCoefficients[i].c * rho);\r\n }\r\n var nL4Coefficients = GFX.g_L4VenusCoefficients.length;\r\n var L4 = 0;\r\n for (i = 0; i < nL4Coefficients; i++) {\r\n L4 += GFX.g_L4VenusCoefficients[i].a * Math.cos(GFX.g_L4VenusCoefficients[i].b + GFX.g_L4VenusCoefficients[i].c * rho);\r\n }\r\n var nL5Coefficients = GFX.g_L5VenusCoefficients.length;\r\n var L5 = 0;\r\n for (i = 0; i < nL5Coefficients; i++) {\r\n L5 += GFX.g_L5VenusCoefficients[i].a * Math.cos(GFX.g_L5VenusCoefficients[i].b + GFX.g_L5VenusCoefficients[i].c * rho);\r\n }\r\n var vvalue = (L0 + L1 * rho + L2 * rhosquared + L3 * rhocubed + L4 * rho4 + L5 * rho5) / 100000000;\r\n vvalue = CT.m360(CT.r2D(vvalue));\r\n return vvalue;\r\n };\r\n CAAVenus.eclipticLatitude = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nB0Coefficients = GFX.g_B0VenusCoefficients.length;\r\n var B0 = 0;\r\n var i;\r\n for (i = 0; i < nB0Coefficients; i++) {\r\n B0 += GFX.g_B0VenusCoefficients[i].a * Math.cos(GFX.g_B0VenusCoefficients[i].b + GFX.g_B0VenusCoefficients[i].c * rho);\r\n }\r\n var nB1Coefficients = GFX.g_B1VenusCoefficients.length;\r\n var B1 = 0;\r\n for (i = 0; i < nB1Coefficients; i++) {\r\n B1 += GFX.g_B1VenusCoefficients[i].a * Math.cos(GFX.g_B1VenusCoefficients[i].b + GFX.g_B1VenusCoefficients[i].c * rho);\r\n }\r\n var nB2Coefficients = GFX.g_B2VenusCoefficients.length;\r\n var B2 = 0;\r\n for (i = 0; i < nB2Coefficients; i++) {\r\n B2 += GFX.g_B2VenusCoefficients[i].a * Math.cos(GFX.g_B2VenusCoefficients[i].b + GFX.g_B2VenusCoefficients[i].c * rho);\r\n }\r\n var nB3Coefficients = GFX.g_B3VenusCoefficients.length;\r\n var B3 = 0;\r\n for (i = 0; i < nB3Coefficients; i++) {\r\n B3 += GFX.g_B3VenusCoefficients[i].a * Math.cos(GFX.g_B3VenusCoefficients[i].b + GFX.g_B3VenusCoefficients[i].c * rho);\r\n }\r\n var nB4Coefficients = GFX.g_B4VenusCoefficients.length;\r\n var B4 = 0;\r\n for (i = 0; i < nB4Coefficients; i++) {\r\n B4 += GFX.g_B4VenusCoefficients[i].a * Math.cos(GFX.g_B4VenusCoefficients[i].b + GFX.g_B4VenusCoefficients[i].c * rho);\r\n }\r\n var vvalue = (B0 + B1 * rho + B2 * rhosquared + B3 * rhocubed + B4 * rho4) / 100000000;\r\n vvalue = CT.r2D(vvalue);\r\n return vvalue;\r\n };\r\n CAAVenus.radiusVector = function(JD) {\r\n var rho = (JD - 2451545) / 365250;\r\n var rhosquared = rho * rho;\r\n var rhocubed = rhosquared * rho;\r\n var rho4 = rhocubed * rho;\r\n var nR0Coefficients = GFX.g_R0VenusCoefficients.length;\r\n var R0 = 0;\r\n var i;\r\n for (i = 0; i < nR0Coefficients; i++) {\r\n R0 += GFX.g_R0VenusCoefficients[i].a * Math.cos(GFX.g_R0VenusCoefficients[i].b + GFX.g_R0VenusCoefficients[i].c * rho);\r\n }\r\n var nR1Coefficients = GFX.g_R1VenusCoefficients.length;\r\n var R1 = 0;\r\n for (i = 0; i < nR1Coefficients; i++) {\r\n R1 += GFX.g_R1VenusCoefficients[i].a * Math.cos(GFX.g_R1VenusCoefficients[i].b + GFX.g_R1VenusCoefficients[i].c * rho);\r\n }\r\n var nR2Coefficients = GFX.g_R2VenusCoefficients.length;\r\n var R2 = 0;\r\n for (i = 0; i < nR2Coefficients; i++) {\r\n R2 += GFX.g_R2VenusCoefficients[i].a * Math.cos(GFX.g_R2VenusCoefficients[i].b + GFX.g_R2VenusCoefficients[i].c * rho);\r\n }\r\n var nR3Coefficients = GFX.g_R3VenusCoefficients.length;\r\n var R3 = 0;\r\n for (i = 0; i < nR3Coefficients; i++) {\r\n R3 += GFX.g_R3VenusCoefficients[i].a * Math.cos(GFX.g_R3VenusCoefficients[i].b + GFX.g_R3VenusCoefficients[i].c * rho);\r\n }\r\n var nR4Coefficients = GFX.g_R4VenusCoefficients.length;\r\n var R4 = 0;\r\n for (i = 0; i < nR4Coefficients; i++) {\r\n R4 += GFX.g_R4VenusCoefficients[i].a * Math.cos(GFX.g_R4VenusCoefficients[i].b + GFX.g_R4VenusCoefficients[i].c * rho);\r\n }\r\n return (R0 + R1 * rho + R2 * rhosquared + R3 * rhocubed + R4 * rho4) / 100000000;\r\n };\r\n var CAAVenus$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.FitsProperties\r\n\r\n function FitsProperties() {\r\n this.bZero = 0;\r\n this.bScale = 1;\r\n this.containsBlanks = false;\r\n this.blankValue = Number.MIN_VALUE;\r\n this.maxVal = Number.MIN_VALUE;\r\n this.minVal = Number.MAX_VALUE;\r\n this.upperCut = Number.MIN_VALUE;\r\n this.lowerCut = Number.MAX_VALUE;\r\n this.transparentBlack = false;\r\n this.colorMapName = 'viridis';\r\n this.scaleType = 0;\r\n this.onMainImageLoaded = null;\r\n }\r\n var FitsProperties$ = {\r\n _fireMainImageLoaded: function(image) {\r\n if (this.onMainImageLoaded != null) {\r\n this.onMainImageLoaded(image);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.HipsProperties\r\n\r\n function HipsProperties(dataset) {\r\n this._properties = {};\r\n this._catalogColumnInfo = null;\r\n this._catalogSpreadSheetLayer = new CatalogSpreadSheetLayer();\r\n this._downloadComplete = false;\r\n this.dataset = dataset;\r\n this._datasetName = dataset.get_name();\r\n this._url = dataset.get_url();\r\n if (this._url.toLowerCase().indexOf('norder') > -1) {\r\n this._url = this._url.substring(0, this._url.toLowerCase().indexOf('norder'));\r\n }\r\n this._url += 'properties';\r\n this._download();\r\n }\r\n var HipsProperties$ = {\r\n get_properties: function() {\r\n return this._properties;\r\n },\r\n get_catalogSpreadSheetLayer: function() {\r\n return this._catalogSpreadSheetLayer;\r\n },\r\n set_catalogSpreadSheetLayer: function(value) {\r\n this._catalogSpreadSheetLayer = value;\r\n return value;\r\n },\r\n get_catalogColumnInfo: function() {\r\n return this._catalogColumnInfo;\r\n },\r\n set_catalogColumnInfo: function(value) {\r\n this._catalogColumnInfo = value;\r\n return value;\r\n },\r\n get_downloadComplete: function() {\r\n return this._downloadComplete;\r\n },\r\n _download: function() {\r\n this._webFile = new WebFile(this._url);\r\n this._webFile.onStateChange = ss.bind('_onPropertiesDownloadComplete', this);\r\n this._webFile.send();\r\n },\r\n _onPropertiesDownloadComplete: function() {\r\n if (this._webFile.get_state() === 1) {\r\n this._parseProperties(this._webFile.getText());\r\n if (ss.keyExists(this.get_properties(), 'dataproduct_type') && this.get_properties()['dataproduct_type'].toLowerCase() === 'catalog') {\r\n this._catalogColumnInfo = VoTable.loadFromUrl(ss.replaceString(this._url, '/properties', '/metadata.xml'), ss.bind('_onCatalogMetadataDownloadComplete', this));\r\n }\r\n else {\r\n if (ss.keyExists(this.get_properties(), 'hips_data_range')) {\r\n var hips_data_range = this.get_properties()['hips_data_range'];\r\n this.dataset.get_fitsProperties().minVal = parseFloat(hips_data_range.split(' ')[0]);\r\n this.dataset.get_fitsProperties().maxVal = parseFloat(hips_data_range.split(' ')[1]);\r\n this.dataset.get_fitsProperties().lowerCut = this.dataset.get_fitsProperties().minVal;\r\n this.dataset.get_fitsProperties().upperCut = this.dataset.get_fitsProperties().maxVal;\r\n }\r\n if (ss.keyExists(this.get_properties(), 'hips_pixel_cut')) {\r\n var hips_pixel_cut = this.get_properties()['hips_pixel_cut'];\r\n this.dataset.get_fitsProperties().lowerCut = parseFloat(hips_pixel_cut.split(' ')[0]);\r\n this.dataset.get_fitsProperties().upperCut = parseFloat(hips_pixel_cut.split(' ')[1]);\r\n if (!ss.keyExists(this.get_properties(), 'hips_data_range')) {\r\n this.dataset.get_fitsProperties().minVal = this.dataset.get_fitsProperties().lowerCut;\r\n this.dataset.get_fitsProperties().maxVal = this.dataset.get_fitsProperties().upperCut;\r\n }\r\n }\r\n this._downloadComplete = true;\r\n if (this._onDownloadComplete != null) {\r\n this._onDownloadComplete();\r\n }\r\n }\r\n }\r\n },\r\n _onCatalogMetadataDownloadComplete: function() {\r\n this._catalogSpreadSheetLayer.useHeadersFromVoTable(this._catalogColumnInfo);\r\n this._catalogSpreadSheetLayer.set_name(this._datasetName);\r\n this._catalogSpreadSheetLayer.id = Guid.createFrom(this._datasetName);\r\n LayerManager.addSpreadsheetLayer(this.get_catalogSpreadSheetLayer(), 'Sky');\r\n this._downloadComplete = true;\r\n if (this._onDownloadComplete != null) {\r\n this._onDownloadComplete();\r\n }\r\n },\r\n setDownloadCompleteListener: function(listener) {\r\n this._onDownloadComplete = listener;\r\n },\r\n _parseProperties: function(data) {\r\n var lines = data.split('\\n');\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var line = $enum1.current;\r\n if (!ss.whitespace(line) && !ss.startsWith(line, '#')) {\r\n var parts = line.split('=');\r\n if (parts.length === 2) {\r\n var key = ss.trim(parts[0]);\r\n var val = ss.trim(parts[1]);\r\n if (!ss.whitespace(key) && !ss.whitespace(val)) {\r\n this.get_properties()[key] = val;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FastMath\r\n\r\n function FastMath() {\r\n }\r\n FastMath._mulsign = function(x, y) {\r\n return FastMath._sign(y) * x;\r\n };\r\n FastMath._isnan = function(d) {\r\n return d !== d;\r\n };\r\n FastMath._isinf = function(d) {\r\n return Math.abs(d) === Number.POSITIVE_INFINITY;\r\n };\r\n FastMath._sign = function(d) {\r\n if (!d) {\r\n return 0;\r\n }\r\n return (d > 0) ? 1 : -1;\r\n };\r\n FastMath._atanhelper = function(s) {\r\n var t = s * s;\r\n var u = -1.88796008463074E-05;\r\n u = u * t + (0.000209850076645817);\r\n u = u * t + (-0.00110611831486672);\r\n u = u * t + (0.00370026744188713);\r\n u = u * t + (-0.00889896195887655);\r\n u = u * t + (0.0165993297735292);\r\n u = u * t + (-0.0254517624932313);\r\n u = u * t + (0.0337852580001353);\r\n u = u * t + (-0.0407629191276837);\r\n u = u * t + (0.0466667150077841);\r\n u = u * t + (-0.0523674852303482);\r\n u = u * t + (0.0587666392926674);\r\n u = u * t + (-0.0666573579361081);\r\n u = u * t + (0.076921953831177);\r\n u = u * t + (-0.090908995008245);\r\n u = u * t + (0.111111105648261);\r\n u = u * t + (-0.142857142667713);\r\n u = u * t + (0.199999999996591);\r\n u = u * t + (-0.333333333333311);\r\n return u * t * s + s;\r\n };\r\n FastMath._atan2k = function(y, x) {\r\n var q = 0;\r\n if (x < 0) {\r\n x = -x;\r\n q = -2;\r\n }\r\n if (y > x) {\r\n var t = x;\r\n x = y;\r\n y = -t;\r\n q += 1;\r\n }\r\n return FastMath._atanhelper(y / x) + q * (Math.PI / 2);\r\n };\r\n FastMath.atan2 = function(y, x) {\r\n var r = FastMath._atan2k(Math.abs(y), x);\r\n r = FastMath._mulsign(r, x);\r\n if (FastMath._isinf(x) || !x) {\r\n r = Math.PI / 2 - ((FastMath._isinf(x)) ? (FastMath._sign(x) * (Math.PI / 2)) : 0);\r\n }\r\n if (FastMath._isinf(y)) {\r\n r = Math.PI / 2 - ((FastMath._isinf(x)) ? (FastMath._sign(x) * (Math.PI * 1 / 4)) : 0);\r\n }\r\n if (!y) {\r\n r = ((FastMath._sign(x) === -1) ? Math.PI : 0);\r\n }\r\n return (FastMath._isnan(x) || FastMath._isnan(y)) ? Number.NaN : FastMath._mulsign(r, y);\r\n };\r\n FastMath.asin = function(d) {\r\n return FastMath._mulsign(FastMath._atan2k(Math.abs(d), Math.sqrt((1 + d) * (1 - d))), d);\r\n };\r\n FastMath.acos = function(d) {\r\n return FastMath._mulsign(FastMath._atan2k(Math.sqrt((1 + d) * (1 - d)), Math.abs(d)), d) + ((d < 0) ? Math.PI : 0);\r\n };\r\n FastMath.atan = function(s) {\r\n var q = 0;\r\n if (s < 0) {\r\n s = -s;\r\n q = 2;\r\n }\r\n if (s > 1) {\r\n s = 1 / s;\r\n q |= 1;\r\n }\r\n var t = FastMath._atanhelper(s);\r\n if (!!(q & 1)) {\r\n t = 1.5707963267949 - t;\r\n }\r\n if (!!(q & 2)) {\r\n t = -t;\r\n }\r\n return t;\r\n };\r\n FastMath._sincoshelper = function(d) {\r\n var s = d * d;\r\n var u = -7.97255955009038E-18;\r\n u = u * s + 2.81009972710863E-15;\r\n u = u * s - 7.64712219118159E-13;\r\n u = u * s + 1.60590430605665E-10;\r\n u = u * s - 2.50521083763502E-08;\r\n u = u * s + 2.75573192239199E-06;\r\n u = u * s - 0.000198412698412696;\r\n u = u * s + 0.00833333333333333;\r\n u = u * s - 0.166666666666667;\r\n return s * u * d + d;\r\n };\r\n FastMath.sin = function(d) {\r\n var u = d * FastMath._m_1_PI;\r\n var q = Math.floor((u < 0) ? u - 0.5 : u + 0.5);\r\n var x = 4 * q;\r\n d -= x * FastMath._pI4_A;\r\n d -= x * FastMath._pI4_B;\r\n d -= x * FastMath._pI4_C;\r\n if (!!(q & 1)) {\r\n d = -d;\r\n }\r\n return FastMath._sincoshelper(d);\r\n };\r\n FastMath.cos = function(d) {\r\n var u = d * FastMath._m_1_PI - 0.5;\r\n var q = 1 + 2 * Math.floor((u < 0) ? u - 0.5 : u + 0.5);\r\n var x = 2 * q;\r\n d -= x * FastMath._pI4_A;\r\n d -= x * FastMath._pI4_B;\r\n d -= x * FastMath._pI4_C;\r\n if (!(q & 2)) {\r\n d = -d;\r\n }\r\n return FastMath._sincoshelper(d);\r\n };\r\n var FastMath$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.HealpixTables\r\n\r\n function HealpixTables() {\r\n }\r\n var HealpixTables$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Xyf\r\n\r\n function Xyf() {\r\n this.ix = 0;\r\n this.iy = 0;\r\n this.face = 0;\r\n }\r\n Xyf.create = function(x, y, f) {\r\n var temp = new Xyf();\r\n temp.ix = x;\r\n temp.iy = y;\r\n temp.face = f;\r\n return temp;\r\n };\r\n var Xyf$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.HealpixUtils\r\n\r\n function HealpixUtils() {\r\n }\r\n HealpixUtils.check = function(cond, errtxt) {\r\n if (!cond) {\r\n throw new Error(errtxt);\r\n }\r\n };\r\n HealpixUtils.isqrt = function(arg) {\r\n var res = Math.sqrt((arg) + 0.5);\r\n if (arg < (1 << 50)) {\r\n return res;\r\n }\r\n if (res * res > arg) {\r\n --res;\r\n }\r\n else if ((res + 1) * (res + 1) <= arg) {\r\n ++res;\r\n }\r\n return res;\r\n };\r\n HealpixUtils.cosdist_zphi = function(z1, phi1, z2, phi2) {\r\n return z1 * z2 + FastMath.cos(phi1 - phi2) * Math.sqrt((1 - z1 * z1) * (1 - z2 * z2));\r\n };\r\n HealpixUtils.fmodulo = function(v1, v2) {\r\n if (v1 >= 0) {\r\n return (v1 < v2) ? v1 : v1 % v2;\r\n }\r\n var tmp = v1 % v2 + v2;\r\n return (tmp === v2) ? 0 : tmp;\r\n };\r\n var HealpixUtils$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Hploc\r\n\r\n function Hploc() {\r\n this.z = 0;\r\n this.phi = 0;\r\n this.sth = 0;\r\n this.have_sth = false;\r\n }\r\n Hploc.create = function(v) {\r\n var temp = new Hploc();\r\n var xl = 1 / v.length();\r\n temp.z = v.z * xl;\r\n temp.phi = FastMath.atan2(v.y, v.x);\r\n if (Math.abs(temp.z) > 0.99) {\r\n temp.sth = Math.sqrt(v.x * v.x + v.y * v.y) * xl;\r\n temp.have_sth = true;\r\n }\r\n return temp;\r\n };\r\n var Hploc$ = {\r\n toVec3: function() {\r\n var st;\r\n if (this.have_sth) {\r\n st = this.sth;\r\n }\r\n else {\r\n st = Math.sqrt((1 - this.z) * (1 + this.z));\r\n }\r\n var x = st * FastMath.cos(this.phi);\r\n var y = st * FastMath.sin(this.phi);\r\n return Vector3d.create(x, this.z, y);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Pointing\r\n\r\n function Pointing() {\r\n this.theta = 0;\r\n this.phi = 0;\r\n }\r\n Pointing.create = function(theta, phi) {\r\n var temp = new Pointing();\r\n temp.theta = theta;\r\n temp.phi = phi;\r\n return temp;\r\n };\r\n var Pointing$ = {\r\n normalizeTheta: function() {\r\n this.theta = HealpixUtils.fmodulo(this.theta, 2 * Math.PI);\r\n if (this.theta > Math.PI) {\r\n this.phi += Math.PI;\r\n this.theta = 2 * Math.PI - this.theta;\r\n }\r\n },\r\n normalize: function() {\r\n this.normalizeTheta();\r\n this.phi = HealpixUtils.fmodulo(this.phi, 2 * Math.PI);\r\n },\r\n toString: function() {\r\n var s = new ss.StringBuilder();\r\n s.append('ptg(');\r\n s.append(this.theta);\r\n s.append(',');\r\n s.append(this.phi);\r\n s.append(')');\r\n return s.toString();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.URLHelpers\r\n\r\n function URLHelpers() {\r\n this._force_https = false;\r\n this._origin_protocol = window.location.protocol;\r\n this._origin_domain = window.location.hostname;\r\n this._force_https = (this._origin_protocol === 'https:');\r\n this._domain_handling = {};\r\n this._domain_handling['worldwidetelescope.org'] = 0;\r\n this._domain_handling['www.worldwidetelescope.org'] = 0;\r\n this._domain_handling['cdn.worldwidetelescope.org'] = 0;\r\n this._domain_handling['content.worldwidetelescope.org'] = 0;\r\n this._domain_handling['beta.worldwidetelescope.org'] = 0;\r\n this._domain_handling['beta-cdn.worldwidetelescope.org'] = 0;\r\n this._domain_handling['wwtstaging.azurewebsites.net'] = 0;\r\n this._domain_handling['wwtfiles.blob.core.windows.net'] = 2;\r\n this._domain_handling['wwttiles.blob.core.windows.net'] = 2;\r\n this._domain_handling['web.wwtassets.org'] = 2;\r\n this._domain_handling['data1.wwtassets.org'] = 2;\r\n this._domain_handling['localhost'] = 1;\r\n this._domain_handling['127.0.0.1'] = 1;\r\n switch (this._origin_domain) {\r\n case 'worldwidetelescope.org':\r\n case 'www.worldwidetelescope.org':\r\n case 'cdn.worldwidetelescope.org':\r\n this._core_static_baseurl = this._origin_protocol + '//cdn.worldwidetelescope.org';\r\n this._core_dynamic_baseurl = this._origin_protocol + '//worldwidetelescope.org';\r\n break;\r\n case 'beta.worldwidetelescope.org':\r\n case 'beta-cdn.worldwidetelescope.org':\r\n this._core_static_baseurl = this._origin_protocol + '//beta-cdn.worldwidetelescope.org';\r\n this._core_dynamic_baseurl = this._origin_protocol + '//beta.worldwidetelescope.org';\r\n break;\r\n default:\r\n this._core_static_baseurl = this._origin_protocol + '//cdn.worldwidetelescope.org';\r\n this._core_dynamic_baseurl = this._origin_protocol + '//worldwidetelescope.org';\r\n break;\r\n }\r\n this._engine_asset_baseurl = this._origin_protocol + '//web.wwtassets.org/engine/assets';\r\n this._flagship_static_lcpaths = {};\r\n this._flagship_static_lcpaths['/wwtweb/2massoct.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/bingdemtile.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/bingdemtile2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/catalog.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/catalog2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/dem.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/dembath.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/demmars.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/demtile.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/dss.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/dsstoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/dusttoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/earthblend.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/earthmerbath.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/fixedaltitudedemtile.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/g360.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/galex4far.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/galex4near.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/galextoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/gettile.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/gettour.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/gettourfile.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/gettours.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/glimpse.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/halphatoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/hirise.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/hirisedem2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/hirisedem3.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/jupiter.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/mandel.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/mandel1.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/mars.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/marsdem.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/marshirise.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/marsmoc.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/martiantile.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/martiantile2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/mipsgal.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/moondem.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/moonoct.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/moontoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/moontoastdem.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/postmars.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/postmarsdem.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/postmarsdem2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/rasstoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/sdsstoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/sdsstoast2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/sdsstoast2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/thumbnail.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/tiles.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/tiles2.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/tilesthumb.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/twomasstoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/tychooct.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/veblend.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/vlsstoast.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/wmap.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/wmsmoon.aspx'] = true;\r\n this._flagship_static_lcpaths['/wwtweb/wmstoast.aspx'] = true;\r\n }\r\n var URLHelpers$ = {\r\n rewrite: function(url, rwmode) {\r\n var lc = url.toLowerCase();\r\n var lcproto;\r\n var url_no_protocol;\r\n if (ss.startsWith(lc, 'http://')) {\r\n lcproto = 'http:';\r\n url_no_protocol = url.substring(7);\r\n }\r\n else if (ss.startsWith(lc, 'https://')) {\r\n lcproto = 'https:';\r\n url_no_protocol = url.substring(8);\r\n }\r\n else if (ss.startsWith(lc, '//')) {\r\n lcproto = '';\r\n url_no_protocol = url.substring(2);\r\n }\r\n else if (ss.startsWith(lc, 'blob:')) {\r\n return url;\r\n }\r\n else {\r\n switch (rwmode) {\r\n case 0:\r\n default:\r\n lcproto = '';\r\n url_no_protocol = url;\r\n break;\r\n case 1:\r\n url = (new URL(url, window.location.href)).toString();\r\n return this.rewrite(url, 0);\r\n }\r\n }\r\n var domain;\r\n var rest;\r\n var slash_index = url_no_protocol.indexOf('/');\r\n if (slash_index < 0) {\r\n domain = url_no_protocol;\r\n rest = '/';\r\n }\r\n else {\r\n domain = url_no_protocol.substring(0, slash_index);\r\n rest = url_no_protocol.substring(slash_index);\r\n }\r\n var lcdomain = domain.toLowerCase();\r\n var lcpath = rest.toLowerCase().split('?')[0];\r\n if (!ss.keyExists(this._domain_handling, lcdomain)) {\r\n if (ss.startsWith(lcdomain, 'localhost:') || ss.startsWith(lcdomain, '127.0.0.1:')) {\r\n this._domain_handling[lcdomain] = 1;\r\n }\r\n else {\r\n this._domain_handling[lcdomain] = 3;\r\n }\r\n }\r\n var mode = this._domain_handling[lcdomain];\r\n switch (mode) {\r\n case 1:\r\n return url;\r\n case 2:\r\n case 3:\r\n default:\r\n if (this._force_https && lcproto !== 'https:') {\r\n return 'https://' + domain + rest;\r\n }\r\n return url;\r\n case 4:\r\n if (!lcproto) {\r\n url = 'http://' + url;\r\n }\r\n url = ss.replaceString(ss.replaceString(encodeURIComponent(url), '%7B', '{'), '%7D', '}');\r\n return this._core_dynamic_baseurl + '/webserviceproxy.aspx?targeturl=' + url;\r\n case 0:\r\n var is_static = false;\r\n if (ss.startsWith(lcpath, '/data/')) {\r\n is_static = true;\r\n }\r\n else if (ss.keyExists(this._flagship_static_lcpaths, lcpath)) {\r\n is_static = true;\r\n }\r\n else if (ss.startsWith(lcpath, '/content/')) {\r\n is_static = true;\r\n }\r\n else if (ss.startsWith(lcpath, '/engine/assets/')) {\r\n is_static = true;\r\n }\r\n if (is_static) {\r\n return this._core_static_baseurl + rest;\r\n }\r\n return this._core_dynamic_baseurl + rest;\r\n }\r\n },\r\n activateProxy: function(url) {\r\n var lc = url.toLowerCase();\r\n var url_no_protocol;\r\n if (ss.startsWith(lc, 'http://')) {\r\n url_no_protocol = url.substring(7);\r\n }\r\n else if (ss.startsWith(lc, 'https://')) {\r\n url_no_protocol = url.substring(8);\r\n }\r\n else if (ss.startsWith(lc, '//')) {\r\n url_no_protocol = url.substring(2);\r\n }\r\n else {\r\n url_no_protocol = url;\r\n }\r\n var lcdomain;\r\n var slash_index = url_no_protocol.indexOf('/');\r\n if (slash_index < 0) {\r\n lcdomain = url_no_protocol;\r\n }\r\n else {\r\n lcdomain = url_no_protocol.substring(0, slash_index).toLowerCase();\r\n }\r\n if (!ss.keyExists(this._domain_handling, lcdomain)) {\r\n if (ss.startsWith(lcdomain, 'localhost:') || ss.startsWith(lcdomain, '127.0.0.1:')) {\r\n this._domain_handling[lcdomain] = 1;\r\n }\r\n else {\r\n this._domain_handling[lcdomain] = 3;\r\n }\r\n }\r\n var mode = this._domain_handling[lcdomain];\r\n if (!mode || mode === 2 || mode === 1) {\r\n return null;\r\n }\r\n this._domain_handling[lcdomain] = 4;\r\n return this.rewrite(url, 0);\r\n },\r\n engineAssetUrl: function(subpath) {\r\n return ss.format('{0}/{1}', this._engine_asset_baseurl, subpath);\r\n },\r\n coreDynamicUrl: function(subpath) {\r\n return ss.format('{0}/{1}', this._core_dynamic_baseurl, subpath);\r\n },\r\n coreStaticUrl: function(subpath) {\r\n return ss.format('{0}/{1}', this._core_static_baseurl, subpath);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Annotation\r\n\r\n function Annotation() {\r\n this.addedToPrimitives = false;\r\n this.annotationDirty = true;\r\n this._opacity = 1;\r\n this._showHoverLabel = false;\r\n }\r\n Annotation.prepBatch = function(renderContext) {\r\n if (Annotation.pointList == null || Annotation.batchDirty) {\r\n Annotation.pointList = new PointList(renderContext);\r\n Annotation.lineList = new LineList();\r\n Annotation.triangleFanPointList = new TriangleFanList();\r\n Annotation.triangleList = new TriangleList();\r\n Annotation.lineList.set_depthBuffered(false);\r\n Annotation.triangleList.depthBuffered = false;\r\n }\r\n };\r\n Annotation.drawBatch = function(renderContext) {\r\n Annotation.batchDirty = false;\r\n if (renderContext.gl == null) {\r\n return;\r\n }\r\n if (Annotation.pointList != null) {\r\n Annotation.pointList.draw(renderContext, 1, false);\r\n }\r\n if (Annotation.lineList != null) {\r\n Annotation.lineList.drawLines(renderContext, 1);\r\n }\r\n if (Annotation.triangleFanPointList != null) {\r\n Annotation.triangleFanPointList.draw(renderContext, 1);\r\n }\r\n if (Annotation.triangleList != null) {\r\n Annotation.triangleList.draw(renderContext, 1, 0);\r\n }\r\n };\r\n Annotation.separation = function(Alpha1, Delta1, Alpha2, Delta2) {\r\n Delta1 = Delta1 / 180 * Math.PI;\r\n Delta2 = Delta2 / 180 * Math.PI;\r\n Alpha1 = Alpha1 / 12 * Math.PI;\r\n Alpha2 = Alpha2 / 12 * Math.PI;\r\n var x = Math.cos(Delta1) * Math.sin(Delta2) - Math.sin(Delta1) * Math.cos(Delta2) * Math.cos(Alpha2 - Alpha1);\r\n var y = Math.cos(Delta2) * Math.sin(Alpha2 - Alpha1);\r\n var z = Math.sin(Delta1) * Math.sin(Delta2) + Math.cos(Delta1) * Math.cos(Delta2) * Math.cos(Alpha2 - Alpha1);\r\n var vvalue = Math.atan2(Math.sqrt(x * x + y * y), z);\r\n vvalue = vvalue / Math.PI * 180;\r\n if (vvalue < 0) {\r\n vvalue += 180;\r\n }\r\n return vvalue;\r\n };\r\n Annotation.colorToUint = function(col) {\r\n return (col.a) << 24 | (col.r << 16) | (col.g) << 8 | col.b;\r\n };\r\n Annotation.colorToUintAlpha = function(col, opacity) {\r\n return opacity << 24 | col.r << 16 | col.g << 8 | col.b;\r\n };\r\n var Annotation$ = {\r\n draw: function(renderContext) {\r\n },\r\n get_opacity: function() {\r\n return this._opacity;\r\n },\r\n set_opacity: function(value) {\r\n this._opacity = value;\r\n return value;\r\n },\r\n get_id: function() {\r\n return this._id;\r\n },\r\n set_id: function(value) {\r\n this._id = value;\r\n return value;\r\n },\r\n get_tag: function() {\r\n return this._tag;\r\n },\r\n set_tag: function(value) {\r\n this._tag = value;\r\n return value;\r\n },\r\n get_label: function() {\r\n return this._label;\r\n },\r\n set_label: function(value) {\r\n this._label = value;\r\n return value;\r\n },\r\n get_showHoverLabel: function() {\r\n return this._showHoverLabel;\r\n },\r\n set_showHoverLabel: function(value) {\r\n this._showHoverLabel = value;\r\n return value;\r\n },\r\n hitTest: function(renderContext, RA, dec, x, y) {\r\n return false;\r\n },\r\n get_center: function() {\r\n return this.center;\r\n },\r\n set_center: function(value) {\r\n this.center = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.AstroRaDec\r\n\r\n function AstroRaDec(ra, dec, dist, shadow, eclipsed) {\r\n this.RA = 0;\r\n this.dec = 0;\r\n this.distance = 0;\r\n this.shadow = false;\r\n this.eclipsed = false;\r\n this.RA = ra;\r\n this.dec = dec;\r\n this.distance = dist;\r\n this.shadow = shadow;\r\n this.eclipsed = eclipsed;\r\n }\r\n var AstroRaDec$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.RiseSetDetails\r\n\r\n function RiseSetDetails(bValid, Rise, Transit, Set, neverRises) {\r\n this.bValid = false;\r\n this.rise = 0;\r\n this.transit = 0;\r\n this.set = 0;\r\n this.bNeverRises = false;\r\n this.bValid = bValid;\r\n this.rise = Rise;\r\n this.transit = Transit;\r\n this.set = Set;\r\n this.bNeverRises = neverRises;\r\n }\r\n var RiseSetDetails$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.AstroCalc\r\n\r\n function AstroCalc() {\r\n }\r\n AstroCalc.getPlanet = function(jDate, planetIn, locLat, locLong, locHeight) {\r\n var planet = planetIn;\r\n locLong = -locLong;\r\n if (planet < 9) {\r\n var Details = ELL.calculate(jDate, planetIn);\r\n var corrected = CAAParallax.equatorial2Topocentric(Details.apparentGeocentricRA, Details.apparentGeocentricDeclination, Details.apparentGeocentricDistance, locLong, locLat, locHeight, jDate);\r\n return new AstroRaDec(corrected.x, corrected.y, Details.apparentGeocentricDistance, false, false);\r\n }\r\n else if (planet === 9) {\r\n var lat = CAAMoon.eclipticLatitude(jDate);\r\n var lng = CAAMoon.eclipticLongitude(jDate);\r\n var dis = CAAMoon.radiusVector(jDate) / 149598000;\r\n var epsilon = CAANutation.trueObliquityOfEcliptic(jDate);\r\n var d = CT.ec2Eq(lng, lat, epsilon);\r\n var corrected = CAAParallax.equatorial2Topocentric(d.x, d.y, dis, locLong, locLat, locHeight, jDate);\r\n return new AstroRaDec(corrected.x, corrected.y, dis, false, false);\r\n }\r\n else {\r\n if (jDate !== AstroCalc._jDateLast) {\r\n AstroCalc._jupDetails = ELL.calculate(jDate, 4);\r\n AstroCalc._jupPhisical = CAAPhysicalJupiter.calculate(jDate);\r\n var corrected = CAAParallax.equatorial2Topocentric(AstroCalc._jupDetails.apparentGeocentricRA, AstroCalc._jupDetails.apparentGeocentricDeclination, AstroCalc._jupDetails.apparentGeocentricDistance, locLong, locLat, locHeight, jDate);\r\n AstroCalc._jupDetails.apparentGeocentricRA = corrected.x;\r\n AstroCalc._jupDetails.apparentGeocentricDeclination = corrected.y;\r\n AstroCalc._galDetails = GM.calculate(jDate);\r\n AstroCalc._jDateLast = jDate;\r\n }\r\n var jupiterDiameter = 0.000954501;\r\n var scale = Math.atan(0.5 * (jupiterDiameter / AstroCalc._jupDetails.apparentGeocentricDistance)) / 3.1415927 * 180;\r\n var raScale = (scale / Math.cos(AstroCalc._jupDetails.apparentGeocentricDeclination / 180 * 3.1415927)) / 15;\r\n var xMoon = 0;\r\n var yMoon = 0;\r\n var zMoon = 0;\r\n var shadow = false;\r\n var eclipsed = false;\r\n switch (planet) {\r\n case 10:\r\n xMoon = AstroCalc._galDetails.satellite1.apparentRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite1.apparentRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite1.apparentRectangularCoordinates.z;\r\n eclipsed = AstroCalc._galDetails.satellite1.bInEclipse;\r\n shadow = AstroCalc._galDetails.satellite1.bInShadowTransit;\r\n break;\r\n case 11:\r\n xMoon = AstroCalc._galDetails.satellite2.apparentRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite2.apparentRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite2.apparentRectangularCoordinates.z;\r\n eclipsed = AstroCalc._galDetails.satellite2.bInEclipse;\r\n shadow = AstroCalc._galDetails.satellite2.bInShadowTransit;\r\n break;\r\n case 12:\r\n xMoon = AstroCalc._galDetails.satellite3.apparentRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite3.apparentRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite3.apparentRectangularCoordinates.z;\r\n eclipsed = AstroCalc._galDetails.satellite3.bInEclipse;\r\n shadow = AstroCalc._galDetails.satellite3.bInShadowTransit;\r\n break;\r\n case 13:\r\n xMoon = AstroCalc._galDetails.satellite4.apparentRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite4.apparentRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite4.apparentRectangularCoordinates.z;\r\n eclipsed = AstroCalc._galDetails.satellite4.bInEclipse;\r\n shadow = AstroCalc._galDetails.satellite4.bInShadowTransit;\r\n break;\r\n case 14:\r\n xMoon = AstroCalc._galDetails.satellite1.apparentShadowRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite1.apparentShadowRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite1.apparentShadowRectangularCoordinates.z * 0.9;\r\n shadow = AstroCalc._galDetails.satellite1.bInShadowTransit;\r\n break;\r\n case 15:\r\n xMoon = AstroCalc._galDetails.satellite2.apparentShadowRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite2.apparentShadowRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite2.apparentShadowRectangularCoordinates.z * 0.9;\r\n shadow = AstroCalc._galDetails.satellite2.bInShadowTransit;\r\n break;\r\n case 16:\r\n xMoon = AstroCalc._galDetails.satellite3.apparentShadowRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite3.apparentShadowRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite3.apparentShadowRectangularCoordinates.z * 0.9;\r\n shadow = AstroCalc._galDetails.satellite3.bInShadowTransit;\r\n break;\r\n case 17:\r\n xMoon = AstroCalc._galDetails.satellite4.apparentShadowRectangularCoordinates.x;\r\n yMoon = AstroCalc._galDetails.satellite4.apparentShadowRectangularCoordinates.y;\r\n zMoon = AstroCalc._galDetails.satellite4.apparentShadowRectangularCoordinates.z * 0.9;\r\n shadow = AstroCalc._galDetails.satellite4.bInShadowTransit;\r\n break;\r\n }\r\n var xTemp;\r\n var yTemp;\r\n var radians = AstroCalc._jupPhisical.p / 180 * 3.1415927;\r\n xTemp = xMoon * Math.cos(radians) - yMoon * Math.sin(radians);\r\n yTemp = xMoon * Math.sin(radians) + yMoon * Math.cos(radians);\r\n xMoon = xTemp;\r\n yMoon = yTemp;\r\n return new AstroRaDec(AstroCalc._jupDetails.apparentGeocentricRA - (xMoon * raScale), AstroCalc._jupDetails.apparentGeocentricDeclination + yMoon * scale, AstroCalc._jupDetails.apparentGeocentricDistance + (zMoon * jupiterDiameter / 2), shadow, eclipsed);\r\n }\r\n };\r\n AstroCalc.getJulianDay = function(year, month, day) {\r\n return DT.dateToJD(ss.truncate(year), ss.truncate(month), day, true);\r\n };\r\n AstroCalc.eclipticToJ2000 = function(l, b, jNow) {\r\n var radec = CT.ec2Eq(l, b, CAANutation.trueObliquityOfEcliptic(jNow));\r\n return new AstroRaDec(radec.x, radec.y, 0, false, false);\r\n };\r\n AstroCalc.galacticToJ2000 = function(l, b) {\r\n var radec = CT.g2Eq(l, b);\r\n return new AstroRaDec(radec.x, radec.y, 0, false, false);\r\n };\r\n AstroCalc.j2000ToGalactic = function(ra, dec) {\r\n var galactic = CT.eq2G(ra, dec);\r\n return new AstroRaDec(galactic.x, galactic.y, 0, false, false);\r\n };\r\n AstroCalc.getRiseTrinsitSet = function(jd, lat, lng, ra1, dec1, ra2, dec2, ra3, dec3, type) {\r\n var alt = -0.5667;\r\n switch (type) {\r\n case 0:\r\n alt = -0.5667;\r\n break;\r\n case 1:\r\n alt = -0.8333;\r\n break;\r\n case 2:\r\n alt = 0.125;\r\n break;\r\n }\r\n var RiseTransitSetTime = CAARiseTransitSet.rise(jd, ra1, dec1, ra2, dec2, ra3, dec3, lng, lat, alt);\r\n var neverRises = false;\r\n if (!RiseTransitSetTime.bValid) {\r\n neverRises = Util.sign(lat) !== Util.sign(dec2);\r\n }\r\n return new RiseSetDetails(RiseTransitSetTime.bValid, RiseTransitSetTime.rise, RiseTransitSetTime.transit, RiseTransitSetTime.set, neverRises);\r\n };\r\n var AstroCalc$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.BlendState\r\n\r\n function BlendState() {\r\n this._state = false;\r\n this._targetState = false;\r\n this._delayTime = 0;\r\n this._switchedTime = new Date(1990, 0, 0, 0, 0, 0, 0);\r\n this._state = false;\r\n this._targetState = this._state;\r\n this._delayTime = 1000;\r\n }\r\n BlendState.create = function(initialState, delayTime) {\r\n var temp = new BlendState();\r\n temp._state = initialState;\r\n temp._targetState = initialState;\r\n temp._delayTime = delayTime;\r\n return temp;\r\n };\r\n var BlendState$ = {\r\n get_state: function() {\r\n if (this._targetState !== this._state) {\r\n var ts = ss.now() - this._switchedTime;\r\n if (ts > this._delayTime) {\r\n this._state = this._targetState;\r\n }\r\n return true;\r\n }\r\n return this._state;\r\n },\r\n set_state: function(value) {\r\n this._switchedTime = new Date(1990, 0, 0, 0, 0, 0, 0);\r\n this._state = value;\r\n this._targetState = this._state;\r\n return value;\r\n },\r\n get_targetState: function() {\r\n return this._targetState;\r\n },\r\n set_targetState: function(value) {\r\n if (this._targetState !== value) {\r\n this._switchedTime = ss.now();\r\n this._targetState = value;\r\n }\r\n return value;\r\n },\r\n get_opacity: function() {\r\n if (this._targetState !== this._state) {\r\n var ts = ss.now() - this._switchedTime;\r\n if (ts > this._delayTime) {\r\n this._state = this._targetState;\r\n }\r\n else {\r\n var opacity = (ts / this._delayTime);\r\n return (this._targetState) ? opacity : 1 - opacity;\r\n }\r\n }\r\n return (this._state) ? 1 : 0;\r\n },\r\n get_delayTime: function() {\r\n return this._delayTime;\r\n },\r\n set_delayTime: function(value) {\r\n this._delayTime = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.CameraParameters\r\n\r\n function CameraParameters() {\r\n this.lat = 0;\r\n this.lng = 0;\r\n this.zoom = 0;\r\n this.rotation = 0;\r\n this.angle = 0;\r\n this.raDec = false;\r\n this.opacity = 0;\r\n this.target = 0;\r\n this.zoom = 360;\r\n this.viewTarget = new Vector3d();\r\n }\r\n CameraParameters.create = function(lat, lng, zoom, rotation, angle, opactity) {\r\n var temp = new CameraParameters();\r\n temp.lat = lat;\r\n temp.lng = lng;\r\n temp.zoom = zoom;\r\n temp.rotation = rotation;\r\n temp.angle = angle;\r\n temp.raDec = false;\r\n temp.opacity = opactity;\r\n temp.viewTarget = Vector3d.create(0, 0, 0);\r\n temp.target = 20;\r\n temp.targetReferenceFrame = '';\r\n return temp;\r\n };\r\n CameraParameters.logN = function(num, b) {\r\n return Math.log(num) / Math.log(b);\r\n };\r\n CameraParameters.sinh = function(v) {\r\n return (Math.exp(v) - Math.exp(-v)) / 2;\r\n };\r\n CameraParameters.interpolate = function(from, to, alphaIn, type, fastDirectionMove) {\r\n var result = new CameraParameters();\r\n var alpha = CameraParameters.easeCurve(alphaIn, type);\r\n var alphaBIn = Math.min(1, alphaIn * 2);\r\n var alphaB = CameraParameters.easeCurve(alphaBIn, type);\r\n result.angle = to.angle * alpha + from.angle * (1 - alpha);\r\n result.rotation = to.rotation * alpha + from.rotation * (1 - alpha);\r\n if (fastDirectionMove) {\r\n result.lat = to.lat * alphaB + from.lat * (1 - alphaB);\r\n result.lng = to.lng * alphaB + from.lng * (1 - alphaB);\r\n }\r\n else {\r\n result.lat = to.lat * alpha + from.lat * (1 - alpha);\r\n result.lng = to.lng * alpha + from.lng * (1 - alpha);\r\n }\r\n result.zoom = Math.pow(2, CameraParameters.logN(to.zoom, 2) * alpha + CameraParameters.logN(from.zoom, 2) * (1 - alpha));\r\n result.opacity = (to.opacity * alpha + from.opacity * (1 - alpha));\r\n result.viewTarget = Vector3d.lerp(from.viewTarget, to.viewTarget, alpha);\r\n result.targetReferenceFrame = to.targetReferenceFrame;\r\n if (to.target === from.target) {\r\n result.target = to.target;\r\n }\r\n else {\r\n result.target = 20;\r\n }\r\n return result;\r\n };\r\n CameraParameters.interpolateGreatCircle = function(from, to, alphaIn, type, fastDirectionMove) {\r\n var result = new CameraParameters();\r\n var alpha = CameraParameters.easeCurve(alphaIn, type);\r\n var alphaBIn = Math.min(1, alphaIn * 2);\r\n var alphaB = CameraParameters.easeCurve(alphaBIn, type);\r\n result.angle = to.angle * alpha + from.angle * (1 - alpha);\r\n result.rotation = to.rotation * alpha + from.rotation * (1 - alpha);\r\n var left = Coordinates.geoTo3dDouble(from.lat, from.lng);\r\n var right = Coordinates.geoTo3dDouble(to.lat, to.lng);\r\n var mid = Vector3d.slerp(left, right, alpha);\r\n var midV2 = Coordinates.cartesianToLatLng(mid);\r\n result.lat = midV2.y;\r\n result.lng = midV2.x;\r\n result.zoom = Math.pow(2, CameraParameters.logN(to.zoom, 2) * alpha + CameraParameters.logN(from.zoom, 2) * (1 - alpha));\r\n result.opacity = (to.opacity * alpha + from.opacity * (1 - alpha));\r\n result.viewTarget = Vector3d.lerp(from.viewTarget, to.viewTarget, alpha);\r\n result.targetReferenceFrame = to.targetReferenceFrame;\r\n if (to.target === from.target) {\r\n result.target = to.target;\r\n }\r\n else {\r\n result.target = 20;\r\n }\r\n return result;\r\n };\r\n CameraParameters.easeCurve = function(alpha, type) {\r\n switch (type) {\r\n case 0:\r\n return alpha;\r\n case 4:\r\n return Math.pow(alpha, 2);\r\n case 1:\r\n return ((1 - alpha) * CameraParameters.sinh(alpha / (0.1085712344 * 2)) / 100) + alpha * alpha;\r\n case 2:\r\n return (alpha * (1 - CameraParameters.sinh((1 - alpha) / (0.1085712344 * 2)) / 100)) + (1 - alpha) * alpha;\r\n case 3:\r\n if (alpha < 0.5) {\r\n return CameraParameters.sinh(alpha / 0.1085712344) / 100;\r\n }\r\n else {\r\n return 1 - (CameraParameters.sinh((1 - alpha) / 0.1085712344) / 100);\r\n }\r\n default:\r\n return alpha;\r\n }\r\n };\r\n var CameraParameters$ = {\r\n copy: function() {\r\n var temp = new CameraParameters();\r\n temp.lat = this.lat;\r\n temp.lng = this.lng;\r\n temp.zoom = this.zoom;\r\n temp.rotation = this.rotation;\r\n temp.angle = this.angle;\r\n temp.raDec = this.raDec;\r\n temp.opacity = this.opacity;\r\n temp.viewTarget = this.viewTarget.copy();\r\n temp.target = this.target;\r\n temp.targetReferenceFrame = this.targetReferenceFrame;\r\n return temp;\r\n },\r\n get_RA: function() {\r\n return ((((180 - (this.lng - 180)) / 360) * 24) % 24);\r\n },\r\n set_RA: function(value) {\r\n this.lng = 180 - (value / 24 * 360) - 180;\r\n this.raDec = true;\r\n return value;\r\n },\r\n get_dec: function() {\r\n return this.lat;\r\n },\r\n set_dec: function(value) {\r\n this.lat = value;\r\n return value;\r\n },\r\n equals: function(obj) {\r\n if (ss.canCast(obj, CameraParameters)) {\r\n var cam = obj;\r\n if (Math.abs(cam.angle - this.angle) > 0.01 || Math.abs(cam.lat - this.lat) > (cam.zoom / 10000) || Math.abs(cam.get_RA() - this.get_RA()) > (cam.zoom / 1000) || Math.abs(cam.rotation - this.rotation) > 0.1 || Math.abs(cam.zoom - this.zoom) > (Math.abs(cam.zoom) / 1000)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Color\r\n\r\n function Color() {\r\n this.a = 255;\r\n this.b = 255;\r\n this.g = 255;\r\n this.r = 255;\r\n this.name = '';\r\n }\r\n Color.fromArgb = function(a, r, g, b) {\r\n var temp = new Color();\r\n temp.a = a;\r\n temp.r = r;\r\n temp.g = g;\r\n temp.b = b;\r\n return temp;\r\n };\r\n Color._fromArgbColor = function(a, col) {\r\n var temp = new Color();\r\n temp.a = a;\r\n temp.r = col.r;\r\n temp.g = col.g;\r\n temp.b = col.b;\r\n return temp;\r\n };\r\n Color.fromName = function(name) {\r\n var temp = Color.load(name);\r\n return temp;\r\n };\r\n Color.load = function(color) {\r\n var a = 255, r = 255, g = 255, b = 255;\r\n var pieces = color.split(':');\r\n if (pieces.length === 5) {\r\n a = parseInt(pieces[1]);\r\n r = parseInt(pieces[2]);\r\n g = parseInt(pieces[3]);\r\n b = parseInt(pieces[4]);\r\n }\r\n else if (pieces.length === 2) {\r\n return Color.fromName(pieces[1].toLowerCase());\r\n }\r\n else if (pieces.length === 1 && ss.startsWith(pieces[0], '#')) {\r\n return Color.fromHex(pieces[0]);\r\n }\r\n else if (pieces.length === 1 && pieces[0].length === 8) {\r\n return Color.fromSimpleHex(pieces[0]);\r\n }\r\n else if (pieces.length === 1) {\r\n return Color._fromWindowsNamedColor(pieces[0]);\r\n }\r\n return Color.fromArgb(a, r, g, b);\r\n };\r\n Color._fromWindowsNamedColor = function(color) {\r\n switch (color.toLowerCase()) {\r\n case 'activeborder':\r\n return Color.fromArgb(255, 180, 180, 180);\r\n case 'activecaption':\r\n return Color.fromArgb(255, 153, 180, 209);\r\n case 'activecaptiontext':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'appworkspace':\r\n return Color.fromArgb(255, 171, 171, 171);\r\n case 'control':\r\n return Color.fromArgb(255, 240, 240, 240);\r\n case 'controldark':\r\n return Color.fromArgb(255, 160, 160, 160);\r\n case 'controldarkdark':\r\n return Color.fromArgb(255, 105, 105, 105);\r\n case 'controllight':\r\n return Color.fromArgb(255, 227, 227, 227);\r\n case 'controllightlight':\r\n return Color.fromArgb(255, 255, 255, 255);\r\n case 'controltext':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'desktop':\r\n return Color.fromArgb(255, 255, 255, 255);\r\n case 'graytext':\r\n return Color.fromArgb(255, 109, 109, 109);\r\n case 'highlight':\r\n return Color.fromArgb(255, 51, 153, 255);\r\n case 'highlighttext':\r\n return Color.fromArgb(255, 255, 255, 255);\r\n case 'hottrack':\r\n return Color.fromArgb(255, 0, 102, 204);\r\n case 'inactiveborder':\r\n return Color.fromArgb(255, 244, 247, 252);\r\n case 'inactivecaption':\r\n return Color.fromArgb(255, 191, 205, 219);\r\n case 'inactivecaptiontext':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'info':\r\n return Color.fromArgb(255, 255, 255, 225);\r\n case 'infotext':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'menu':\r\n return Color.fromArgb(255, 240, 240, 240);\r\n case 'menutext':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'scrollbar':\r\n return Color.fromArgb(255, 200, 200, 200);\r\n case 'window':\r\n return Color.fromArgb(255, 255, 255, 255);\r\n case 'windowframe':\r\n return Color.fromArgb(255, 100, 100, 100);\r\n case 'windowtext':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'transparent':\r\n return Color.fromArgb(0, 255, 255, 255);\r\n case 'aliceblue':\r\n return Color.fromArgb(255, 240, 248, 255);\r\n case 'antiquewhite':\r\n return Color.fromArgb(255, 250, 235, 215);\r\n case 'aqua':\r\n return Color.fromArgb(255, 0, 255, 255);\r\n case 'aquamarine':\r\n return Color.fromArgb(255, 127, 255, 212);\r\n case 'azure':\r\n return Color.fromArgb(255, 240, 255, 255);\r\n case 'beige':\r\n return Color.fromArgb(255, 245, 245, 220);\r\n case 'bisque':\r\n return Color.fromArgb(255, 255, 228, 196);\r\n case 'black':\r\n return Color.fromArgb(255, 0, 0, 0);\r\n case 'blanchedalmond':\r\n return Color.fromArgb(255, 255, 235, 205);\r\n case 'blue':\r\n return Color.fromArgb(255, 0, 0, 255);\r\n case 'blueviolet':\r\n return Color.fromArgb(255, 138, 43, 226);\r\n case 'brown':\r\n return Color.fromArgb(255, 165, 42, 42);\r\n case 'burlywood':\r\n return Color.fromArgb(255, 222, 184, 135);\r\n case 'cadetblue':\r\n return Color.fromArgb(255, 95, 158, 160);\r\n case 'chartreuse':\r\n return Color.fromArgb(255, 127, 255, 0);\r\n case 'chocolate':\r\n return Color.fromArgb(255, 210, 105, 30);\r\n case 'coral':\r\n return Color.fromArgb(255, 255, 127, 80);\r\n case 'cornflowerblue':\r\n return Color.fromArgb(255, 100, 149, 237);\r\n case 'cornsilk':\r\n return Color.fromArgb(255, 255, 248, 220);\r\n case 'crimson':\r\n return Color.fromArgb(255, 220, 20, 60);\r\n case 'cyan':\r\n return Color.fromArgb(255, 0, 255, 255);\r\n case 'darkblue':\r\n return Color.fromArgb(255, 0, 0, 139);\r\n case 'darkcyan':\r\n return Color.fromArgb(255, 0, 139, 139);\r\n case 'darkgoldenrod':\r\n return Color.fromArgb(255, 184, 134, 11);\r\n case 'darkgray':\r\n return Color.fromArgb(255, 169, 169, 169);\r\n case 'darkgreen':\r\n return Color.fromArgb(255, 0, 100, 0);\r\n case 'darkkhaki':\r\n return Color.fromArgb(255, 189, 183, 107);\r\n case 'darkmagenta':\r\n return Color.fromArgb(255, 139, 0, 139);\r\n case 'darkolivegreen':\r\n return Color.fromArgb(255, 85, 107, 47);\r\n case 'darkorange':\r\n return Color.fromArgb(255, 255, 140, 0);\r\n case 'darkorchid':\r\n return Color.fromArgb(255, 153, 50, 204);\r\n case 'darkred':\r\n return Color.fromArgb(255, 139, 0, 0);\r\n case 'darksalmon':\r\n return Color.fromArgb(255, 233, 150, 122);\r\n case 'darkseagreen':\r\n return Color.fromArgb(255, 143, 188, 139);\r\n case 'darkslateblue':\r\n return Color.fromArgb(255, 72, 61, 139);\r\n case 'darkslategray':\r\n return Color.fromArgb(255, 47, 79, 79);\r\n case 'darkturquoise':\r\n return Color.fromArgb(255, 0, 206, 209);\r\n case 'darkviolet':\r\n return Color.fromArgb(255, 148, 0, 211);\r\n case 'deeppink':\r\n return Color.fromArgb(255, 255, 20, 147);\r\n case 'deepskyblue':\r\n return Color.fromArgb(255, 0, 191, 255);\r\n case 'dimgray':\r\n return Color.fromArgb(255, 105, 105, 105);\r\n case 'dodgerblue':\r\n return Color.fromArgb(255, 30, 144, 255);\r\n case 'firebrick':\r\n return Color.fromArgb(255, 178, 34, 34);\r\n case 'floralwhite':\r\n return Color.fromArgb(255, 255, 250, 240);\r\n case 'forestgreen':\r\n return Color.fromArgb(255, 34, 139, 34);\r\n case 'fuchsia':\r\n return Color.fromArgb(255, 255, 0, 255);\r\n case 'gainsboro':\r\n return Color.fromArgb(255, 220, 220, 220);\r\n case 'ghostwhite':\r\n return Color.fromArgb(255, 248, 248, 255);\r\n case 'gold':\r\n return Color.fromArgb(255, 255, 215, 0);\r\n case 'goldenrod':\r\n return Color.fromArgb(255, 218, 165, 32);\r\n case 'gray':\r\n return Color.fromArgb(255, 128, 128, 128);\r\n case 'green':\r\n return Color.fromArgb(255, 0, 128, 0);\r\n case 'greenyellow':\r\n return Color.fromArgb(255, 173, 255, 47);\r\n case 'honeydew':\r\n return Color.fromArgb(255, 240, 255, 240);\r\n case 'hotpink':\r\n return Color.fromArgb(255, 255, 105, 180);\r\n case 'indianred':\r\n return Color.fromArgb(255, 205, 92, 92);\r\n case 'indigo':\r\n return Color.fromArgb(255, 75, 0, 130);\r\n case 'ivory':\r\n return Color.fromArgb(255, 255, 255, 240);\r\n case 'khaki':\r\n return Color.fromArgb(255, 240, 230, 140);\r\n case 'lavender':\r\n return Color.fromArgb(255, 230, 230, 250);\r\n case 'lavenderblush':\r\n return Color.fromArgb(255, 255, 240, 245);\r\n case 'lawngreen':\r\n return Color.fromArgb(255, 124, 252, 0);\r\n case 'lemonchiffon':\r\n return Color.fromArgb(255, 255, 250, 205);\r\n case 'lightblue':\r\n return Color.fromArgb(255, 173, 216, 230);\r\n case 'lightcoral':\r\n return Color.fromArgb(255, 240, 128, 128);\r\n case 'lightcyan':\r\n return Color.fromArgb(255, 224, 255, 255);\r\n case 'lightgoldenrodyellow':\r\n return Color.fromArgb(255, 250, 250, 210);\r\n case 'lightgray':\r\n return Color.fromArgb(255, 211, 211, 211);\r\n case 'lightgreen':\r\n return Color.fromArgb(255, 144, 238, 144);\r\n case 'lightpink':\r\n return Color.fromArgb(255, 255, 182, 193);\r\n case 'lightsalmon':\r\n return Color.fromArgb(255, 255, 160, 122);\r\n case 'lightseagreen':\r\n return Color.fromArgb(255, 32, 178, 170);\r\n case 'lightskyblue':\r\n return Color.fromArgb(255, 135, 206, 250);\r\n case 'lightslategray':\r\n return Color.fromArgb(255, 119, 136, 153);\r\n case 'lightsteelblue':\r\n return Color.fromArgb(255, 176, 196, 222);\r\n case 'lightyellow':\r\n return Color.fromArgb(255, 255, 255, 224);\r\n case 'lime':\r\n return Color.fromArgb(255, 0, 255, 0);\r\n case 'limegreen':\r\n return Color.fromArgb(255, 50, 205, 50);\r\n case 'linen':\r\n return Color.fromArgb(255, 250, 240, 230);\r\n case 'magenta':\r\n return Color.fromArgb(255, 255, 0, 255);\r\n case 'maroon':\r\n return Color.fromArgb(255, 128, 0, 0);\r\n case 'mediumaquamarine':\r\n return Color.fromArgb(255, 102, 205, 170);\r\n case 'mediumblue':\r\n return Color.fromArgb(255, 0, 0, 205);\r\n case 'mediumorchid':\r\n return Color.fromArgb(255, 186, 85, 211);\r\n case 'mediumpurple':\r\n return Color.fromArgb(255, 147, 112, 219);\r\n case 'mediumseagreen':\r\n return Color.fromArgb(255, 60, 179, 113);\r\n case 'mediumslateblue':\r\n return Color.fromArgb(255, 123, 104, 238);\r\n case 'mediumspringgreen':\r\n return Color.fromArgb(255, 0, 250, 154);\r\n case 'mediumturquoise':\r\n return Color.fromArgb(255, 72, 209, 204);\r\n case 'mediumvioletred':\r\n return Color.fromArgb(255, 199, 21, 133);\r\n case 'midnightblue':\r\n return Color.fromArgb(255, 25, 25, 112);\r\n case 'mintcream':\r\n return Color.fromArgb(255, 245, 255, 250);\r\n case 'mistyrose':\r\n return Color.fromArgb(255, 255, 228, 225);\r\n case 'moccasin':\r\n return Color.fromArgb(255, 255, 228, 181);\r\n case 'navajowhite':\r\n return Color.fromArgb(255, 255, 222, 173);\r\n case 'navy':\r\n return Color.fromArgb(255, 0, 0, 128);\r\n case 'oldlace':\r\n return Color.fromArgb(255, 253, 245, 230);\r\n case 'olive':\r\n return Color.fromArgb(255, 128, 128, 0);\r\n case 'olivedrab':\r\n return Color.fromArgb(255, 107, 142, 35);\r\n case 'orange':\r\n return Color.fromArgb(255, 255, 165, 0);\r\n case 'orangered':\r\n return Color.fromArgb(255, 255, 69, 0);\r\n case 'orchid':\r\n return Color.fromArgb(255, 218, 112, 214);\r\n case 'palegoldenrod':\r\n return Color.fromArgb(255, 238, 232, 170);\r\n case 'palegreen':\r\n return Color.fromArgb(255, 152, 251, 152);\r\n case 'paleturquoise':\r\n return Color.fromArgb(255, 175, 238, 238);\r\n case 'palevioletred':\r\n return Color.fromArgb(255, 219, 112, 147);\r\n case 'papayawhip':\r\n return Color.fromArgb(255, 255, 239, 213);\r\n case 'peachpuff':\r\n return Color.fromArgb(255, 255, 218, 185);\r\n case 'peru':\r\n return Color.fromArgb(255, 205, 133, 63);\r\n case 'pink':\r\n return Color.fromArgb(255, 255, 192, 203);\r\n case 'plum':\r\n return Color.fromArgb(255, 221, 160, 221);\r\n case 'powderblue':\r\n return Color.fromArgb(255, 176, 224, 230);\r\n case 'purple':\r\n return Color.fromArgb(255, 128, 0, 128);\r\n case 'red':\r\n return Color.fromArgb(255, 255, 0, 0);\r\n case 'rosybrown':\r\n return Color.fromArgb(255, 188, 143, 143);\r\n case 'royalblue':\r\n return Color.fromArgb(255, 65, 105, 225);\r\n case 'saddlebrown':\r\n return Color.fromArgb(255, 139, 69, 19);\r\n case 'salmon':\r\n return Color.fromArgb(255, 250, 128, 114);\r\n case 'sandybrown':\r\n return Color.fromArgb(255, 244, 164, 96);\r\n case 'seagreen':\r\n return Color.fromArgb(255, 46, 139, 87);\r\n case 'seashell':\r\n return Color.fromArgb(255, 255, 245, 238);\r\n case 'sienna':\r\n return Color.fromArgb(255, 160, 82, 45);\r\n case 'silver':\r\n return Color.fromArgb(255, 192, 192, 192);\r\n case 'skyblue':\r\n return Color.fromArgb(255, 135, 206, 235);\r\n case 'slateblue':\r\n return Color.fromArgb(255, 106, 90, 205);\r\n case 'slategray':\r\n return Color.fromArgb(255, 112, 128, 144);\r\n case 'snow':\r\n return Color.fromArgb(255, 255, 250, 250);\r\n case 'springgreen':\r\n return Color.fromArgb(255, 0, 255, 127);\r\n case 'steelblue':\r\n return Color.fromArgb(255, 70, 130, 180);\r\n case 'tan':\r\n return Color.fromArgb(255, 210, 180, 140);\r\n case 'teal':\r\n return Color.fromArgb(255, 0, 128, 128);\r\n case 'thistle':\r\n return Color.fromArgb(255, 216, 191, 216);\r\n case 'tomato':\r\n return Color.fromArgb(255, 255, 99, 71);\r\n case 'turquoise':\r\n return Color.fromArgb(255, 64, 224, 208);\r\n case 'violet':\r\n return Color.fromArgb(255, 238, 130, 238);\r\n case 'wheat':\r\n return Color.fromArgb(255, 245, 222, 179);\r\n case 'white':\r\n return Color.fromArgb(255, 255, 255, 255);\r\n case 'whitesmoke':\r\n return Color.fromArgb(255, 245, 245, 245);\r\n case 'yellow':\r\n return Color.fromArgb(255, 255, 255, 0);\r\n case 'yellowgreen':\r\n return Color.fromArgb(255, 154, 205, 50);\r\n case 'buttonface':\r\n return Color.fromArgb(255, 240, 240, 240);\r\n case 'buttonhighlight':\r\n return Color.fromArgb(255, 255, 255, 255);\r\n case 'buttonshadow':\r\n return Color.fromArgb(255, 160, 160, 160);\r\n case 'gradientactivecaption':\r\n return Color.fromArgb(255, 185, 209, 234);\r\n case 'gradientinactivecaption':\r\n return Color.fromArgb(255, 215, 228, 242);\r\n case 'menubar':\r\n return Color.fromArgb(255, 240, 240, 240);\r\n case 'menuhighlight':\r\n return Color.fromArgb(255, 51, 153, 255);\r\n }\r\n return Color.fromArgb(255, 255, 255, 255);\r\n };\r\n Color.fromHex = function(data) {\r\n var r = Util.fromHex(data.substr(1, 2));\r\n var g = Util.fromHex(data.substr(3, 2));\r\n var b = Util.fromHex(data.substr(5, 2));\r\n var a = 255;\r\n return Color.fromArgb(a, r, g, b);\r\n };\r\n Color.fromSimpleHex = function(data) {\r\n var a = Util.fromHex(data.substr(0, 2));\r\n var r = Util.fromHex(data.substr(2, 2));\r\n var g = Util.fromHex(data.substr(4, 2));\r\n var b = Util.fromHex(data.substr(6, 2));\r\n return Color.fromArgb(a, r, g, b);\r\n };\r\n Color.fromInt = function(color) {\r\n var r = (color & 4278190080) >>> 24;\r\n var g = (color & 16711680) >>> 16;\r\n var b = (color & 65280) >>> 8;\r\n var a = (color & 255);\r\n return Color.fromArgb(a, r, g, b);\r\n };\r\n var Color$ = {\r\n toFormat: function() {\r\n if (ss.emptyString(this.name)) {\r\n return ss.format('rgb({0},{1},{2})', this.r.toString(), this.g.toString(), this.b.toString());\r\n }\r\n else {\r\n return this.name;\r\n }\r\n },\r\n save: function() {\r\n if (!ss.emptyString(this.name)) {\r\n return ss.format('{0}:{1}', 0, this.name);\r\n }\r\n else {\r\n return ss.format('{0}:{1}:{2}:{3}:{4}', 1, this.a, this.r, this.g, this.b);\r\n }\r\n },\r\n toString: function() {\r\n if (ss.emptyString(this.name)) {\r\n return ss.format('#{0}{1}{2}', Util.toHex(this.r), Util.toHex(this.g), Util.toHex(this.b));\r\n }\r\n else {\r\n return this.name;\r\n }\r\n },\r\n toSimpleHex: function() {\r\n if (ss.emptyString(this.name)) {\r\n return ss.format('{0}{1}{2}{3}', Util.toHex(this.a), Util.toHex(this.r), Util.toHex(this.g), Util.toHex(this.b));\r\n }\r\n else {\r\n return this.name;\r\n }\r\n },\r\n _clone: function() {\r\n return Color.fromArgb(this.a, this.r, this.g, this.b);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Colors\r\n\r\n function Colors() {\r\n }\r\n Colors.get_black = function() {\r\n return Color.fromArgb(255, 0, 0, 0);\r\n };\r\n Colors.get_blue = function() {\r\n return Color.fromArgb(255, 0, 0, 255);\r\n };\r\n Colors.get_brown = function() {\r\n return Color.fromArgb(255, 165, 42, 42);\r\n };\r\n Colors.get_cyan = function() {\r\n return Color.fromArgb(255, 0, 255, 255);\r\n };\r\n Colors.get_darkGray = function() {\r\n return Color.fromArgb(255, 169, 169, 169);\r\n };\r\n Colors.get_gray = function() {\r\n return Color.fromArgb(255, 128, 128, 128);\r\n };\r\n Colors.get_green = function() {\r\n return Color.fromArgb(255, 0, 255, 0);\r\n };\r\n Colors.get_lightGray = function() {\r\n return Color.fromArgb(255, 211, 211, 211);\r\n };\r\n Colors.get_magenta = function() {\r\n return Color.fromArgb(255, 255, 0, 255);\r\n };\r\n Colors.get_orange = function() {\r\n return Color.fromArgb(255, 255, 165, 0);\r\n };\r\n Colors.get_purple = function() {\r\n return Color.fromArgb(255, 128, 0, 128);\r\n };\r\n Colors.get_red = function() {\r\n return Color.fromArgb(255, 255, 0, 0);\r\n };\r\n Colors.get_transparent = function() {\r\n return Color.fromArgb(0, 255, 255, 255);\r\n };\r\n Colors.get_white = function() {\r\n return Color.fromArgb(255, 255, 255, 255);\r\n };\r\n Colors.get_yellow = function() {\r\n return Color.fromArgb(255, 255, 255, 0);\r\n };\r\n var Colors$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Constellations\r\n\r\n function Constellations() {\r\n this._pointCount = 0;\r\n this._boundry = false;\r\n this._noInterpollation = false;\r\n this.readOnly = false;\r\n this.radius = 1;\r\n this._drawCount = 0;\r\n this._constellationVertexBuffers = {};\r\n }\r\n Constellations.createBasic = function(name) {\r\n var temp = new Constellations();\r\n temp._name = name;\r\n temp._url = null;\r\n temp.lines = [];\r\n var $enum1 = ss.enumerate(ss.keys(Constellations.fullNames));\r\n while ($enum1.moveNext()) {\r\n var abbrv = $enum1.current;\r\n temp.lines.push(new Lineset(abbrv));\r\n }\r\n return temp;\r\n };\r\n Constellations.create = function(name, url, boundry, noInterpollation, resource) {\r\n var temp = new Constellations();\r\n temp._noInterpollation = noInterpollation;\r\n temp._boundry = boundry;\r\n temp._name = name;\r\n temp._url = url;\r\n temp.getFile();\r\n return temp;\r\n };\r\n Constellations.drawConstellationNames = function(renderContext, opacity, drawColor) {\r\n if (Constellations._namesBatch == null) {\r\n Constellations.initializeConstellationNames();\r\n if (Constellations._namesBatch == null) {\r\n return;\r\n }\r\n }\r\n Constellations._namesBatch.draw(renderContext, opacity, drawColor);\r\n };\r\n Constellations.initializeConstellationNames = function() {\r\n if (Constellations.constellationCentroids == null) {\r\n return;\r\n }\r\n Constellations._namesBatch = new Text3dBatch(80);\r\n var $enum1 = ss.enumerate(ss.keys(Constellations.constellationCentroids));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var centroid = Constellations.constellationCentroids[key];\r\n var center = Coordinates.raDecTo3dAu(centroid.get_RA(), centroid.get_dec(), 1);\r\n var up = Vector3d.create(0, 1, 0);\r\n var name = centroid.get_name();\r\n if (centroid.get_name() === 'Triangulum Australe') {\r\n name = ss.replaceString(name, ' ', '\\n ');\r\n }\r\n Constellations._namesBatch.add(new Text3d(center, up, name, 80, 0.000125));\r\n }\r\n };\r\n Constellations.drawArtwork = function(renderContext) {\r\n if (Constellations.artwork == null) {\r\n if (Constellations._artFile == null) {\r\n Constellations._artFile = new Folder();\r\n Constellations._artFile.loadFromUrl(URLHelpers.singleton.coreStaticUrl('wwtweb/catalog.aspx?W=hevelius'), Constellations._onArtReady);\r\n }\r\n return;\r\n }\r\n Constellations._maxSeperation = Math.max(0.5, Math.cos((renderContext.get_fovAngle() * 2) / 180 * Math.PI));\r\n var $enum1 = ss.enumerate(Constellations.artwork);\r\n while ($enum1.moveNext()) {\r\n var place = $enum1.current;\r\n var bs = Constellations.pictureBlendStates[place.get_constellation()];\r\n bs.set_targetState(Settings.get_active().get_constellationArtFilter().isSet(place.get_constellation()));\r\n if (bs.get_state()) {\r\n var reverse = false;\r\n var centroid = Constellations.constellationCentroids[place.get_constellation()];\r\n if (centroid != null) {\r\n var pos = Coordinates.raDecTo3d((reverse) ? -centroid.get_RA() - 6 : centroid.get_RA(), (reverse) ? centroid.get_dec() : centroid.get_dec());\r\n if (Vector3d.dot(renderContext.get_viewPoint(), pos) > Constellations._maxSeperation) {\r\n renderContext.drawImageSet(place.get_studyImageset(), 100);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Constellations._onArtReady = function() {\r\n Constellations._artFile.childLoadCallback(Constellations._loadArtList);\r\n };\r\n Constellations._loadArtList = function() {\r\n Constellations.artwork = Constellations._artFile.get_places();\r\n };\r\n Constellations._loadNames = function() {\r\n if (Constellations._webFileConstNames.get_state() === 2) {\r\n alert(Constellations._webFileConstNames.get_message());\r\n }\r\n else if (Constellations._webFileConstNames.get_state() === 1) {\r\n Constellations._centroidsReady(Constellations._webFileConstNames.getText());\r\n }\r\n };\r\n Constellations._centroidsReady = function(file) {\r\n Constellations.constellationCentroids = {};\r\n Constellations.fullNames = {};\r\n Constellations.abbreviations = {};\r\n Constellations.bitIDs = {};\r\n var rows = file.split('\\r\\n');\r\n var id = 0;\r\n var line;\r\n var $enum1 = ss.enumerate(rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n line = row;\r\n var data = line.split(',');\r\n Constellations.fullNames[data[1]] = data[0];\r\n Constellations.abbreviations[data[0]] = data[1];\r\n Constellations.bitIDs[data[1]] = id++;\r\n Constellations.pictureBlendStates[data[1]] = BlendState.create(true, 1000);\r\n Constellations.constellationCentroids[data[1]] = Place.create(data[0], parseFloat(data[3]), parseFloat(data[2]), 128, data[1], 2, 360);\r\n }\r\n WWTControl.set_renderNeeded(true);\r\n ConstellationFilter.buildConstellationFilters();\r\n };\r\n Constellations.fullName = function(name) {\r\n if (ss.keyExists(Constellations.fullNames, name)) {\r\n return Constellations.fullNames[name];\r\n }\r\n return name;\r\n };\r\n Constellations.abbreviation = function(name) {\r\n if (Constellations.abbreviations != null && !ss.emptyString(name) && ss.keyExists(Constellations.abbreviations, name)) {\r\n return Constellations.abbreviations[name];\r\n }\r\n return name;\r\n };\r\n var Constellations$ = {\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n this._name = value;\r\n return value;\r\n },\r\n getFile: function() {\r\n this._webFile = new WebFile(this._url);\r\n this._webFile.onStateChange = ss.bind('fileStateChange', this);\r\n this._webFile.send();\r\n },\r\n fileStateChange: function() {\r\n if (this._webFile.get_state() === 2) {\r\n alert(this._webFile.get_message());\r\n }\r\n else if (this._webFile.get_state() === 1) {\r\n this._loadConstellationData(this._webFile.getText());\r\n }\r\n },\r\n _loadConstellationData: function(data) {\r\n if (this._boundry && !this._noInterpollation) {\r\n Constellations.boundries = {};\r\n }\r\n this.lines = [];\r\n var lineSet = null;\r\n try {\r\n var rows = data.split('\\r\\n');\r\n var abrv;\r\n var abrvOld = '';\r\n var ra;\r\n var dec;\r\n var lastRa = 0;\r\n var type = 0;\r\n var $enum1 = ss.enumerate(rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n var line = row;\r\n if (line.substr(11, 2) === '- ') {\r\n line = line.substr(0, 11) + ' -' + line.substr(13, (line.length - 13));\r\n }\r\n if (line.substr(11, 2) === '+ ') {\r\n line = line.substr(0, 11) + ' +' + line.substr(13, (line.length - 13));\r\n }\r\n dec = parseFloat(line.substr(11, 10));\r\n if (this._noInterpollation) {\r\n ra = parseFloat(line.substr(0, 10));\r\n }\r\n else {\r\n ra = parseFloat(line.substr(0, 10));\r\n }\r\n abrv = ss.trim(line.substr(23, 4));\r\n if (!this._boundry) {\r\n if (!!ss.trim(line.substr(28, 1))) {\r\n type = parseInt(line.substr(28, 1));\r\n }\r\n }\r\n else {\r\n if (this._noInterpollation && line.substr(28, 1) !== 'O') {\r\n continue;\r\n }\r\n }\r\n if (abrv !== abrvOld) {\r\n type = 3;\r\n lineSet = new Lineset(abrv);\r\n this.lines.push(lineSet);\r\n if (this._boundry && !this._noInterpollation) {\r\n Constellations.boundries[abrv] = lineSet;\r\n }\r\n abrvOld = abrv;\r\n lastRa = 0;\r\n }\r\n if (this._noInterpollation) {\r\n if (Math.abs(ra - lastRa) > 12) {\r\n ra = ra - (24 * (((ra - lastRa) < 0) ? -1 : 1));\r\n }\r\n lastRa = ra;\r\n }\r\n var starName = null;\r\n if (line.length > 30) {\r\n starName = ss.trim(line.substr(30));\r\n }\r\n if (starName == null || starName !== 'Empty') {\r\n lineSet.add(ra, dec, type, starName);\r\n }\r\n this._pointCount++;\r\n type = 1;\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n WWTControl.set_renderNeeded(true);\r\n },\r\n draw: function(renderContext, showOnlySelected, focusConsteallation, clearExisting) {\r\n Constellations._maxSeperation = Math.max(0.6, Math.cos((renderContext.get_fovAngle() * 2) / 180 * Math.PI));\r\n this._drawCount = 0;\r\n var lsSelected = null;\r\n if (this.lines == null || Constellations.constellationCentroids == null) {\r\n return;\r\n }\r\n Constellations._constToDraw = focusConsteallation;\r\n var $enum1 = ss.enumerate(this.lines);\r\n while ($enum1.moveNext()) {\r\n var ls = $enum1.current;\r\n if (Constellations._constToDraw === ls.get_name() && this._boundry) {\r\n lsSelected = ls;\r\n }\r\n else if (!showOnlySelected || !this._boundry) {\r\n this._drawSingleConstellation(renderContext, ls, 1);\r\n }\r\n }\r\n if (lsSelected != null) {\r\n this._drawSingleConstellation(renderContext, lsSelected, 1);\r\n }\r\n },\r\n _drawSingleConstellation: function(renderContext, ls, opacity) {\r\n var reverse = false;\r\n var centroid = Constellations.constellationCentroids[ls.get_name()];\r\n if (centroid != null) {\r\n var pos = Coordinates.raDecTo3d((reverse) ? -centroid.get_RA() - 6 : centroid.get_RA(), (reverse) ? centroid.get_dec() : centroid.get_dec());\r\n if (Vector3d.dot(renderContext.get_viewPoint(), pos) < Constellations._maxSeperation) {\r\n return;\r\n }\r\n }\r\n if (!ss.keyExists(this._constellationVertexBuffers, ls.get_name())) {\r\n var count = ls.points.length;\r\n var linelist = new SimpleLineList();\r\n linelist.set_depthBuffered(false);\r\n this._constellationVertexBuffers[ls.get_name()] = linelist;\r\n var currentPoint = new Vector3d();\r\n var temp;\r\n for (var i = 0; i < count; i++) {\r\n if (!ls.points[i].pointType || !i) {\r\n currentPoint = Coordinates.raDecTo3d(ls.points[i].RA, ls.points[i].dec);\r\n }\r\n else {\r\n temp = Coordinates.raDecTo3d(ls.points[i].RA, ls.points[i].dec);\r\n linelist.addLine(currentPoint, temp);\r\n currentPoint = temp;\r\n }\r\n }\r\n if (this._boundry) {\r\n temp = Coordinates.raDecTo3d(ls.points[0].RA, ls.points[0].dec);\r\n linelist.addLine(currentPoint, temp);\r\n }\r\n }\r\n var col = 'red';\r\n if (this._boundry) {\r\n if (Constellations._constToDraw !== ls.get_name()) {\r\n col = Settings.get_globalSettings().get_constellationBoundryColor();\r\n }\r\n else {\r\n col = Settings.get_globalSettings().get_constellationSelectionColor();\r\n }\r\n }\r\n else {\r\n col = Settings.get_globalSettings().get_constellationFigureColor();\r\n }\r\n this._constellationVertexBuffers[ls.get_name()].drawLines(renderContext, opacity, Color.load(col));\r\n },\r\n _drawSingleConstellationOld: function(renderContext, ls) {\r\n var reverse = false;\r\n var centroid = Constellations.constellationCentroids[ls.get_name()];\r\n if (centroid != null) {\r\n var pos = Coordinates.raDecTo3d((reverse) ? -centroid.get_RA() - 6 : centroid.get_RA(), (reverse) ? centroid.get_dec() : centroid.get_dec());\r\n if (Vector3d.dot(renderContext.get_viewPoint(), pos) < Constellations._maxSeperation) {\r\n return;\r\n }\r\n }\r\n this._drawCount++;\r\n var col;\r\n if (this._boundry) {\r\n if (Constellations._constToDraw !== ls.get_name()) {\r\n col = Settings.get_globalSettings().get_constellationBoundryColor();\r\n }\r\n else {\r\n col = Settings.get_globalSettings().get_constellationSelectionColor();\r\n }\r\n }\r\n else {\r\n col = Settings.get_globalSettings().get_constellationFigureColor();\r\n }\r\n if (renderContext.gl == null) {\r\n var ctx = renderContext.device;\r\n var count = ls.points.length;\r\n var lastPoint = new Vector3d();\r\n ctx.save();\r\n var linePending = false;\r\n ctx.beginPath();\r\n ctx.strokeStyle = col;\r\n ctx.lineWidth = 2;\r\n ctx.globalAlpha = 0.25;\r\n for (var i = 0; i < count; i++) {\r\n if (!ls.points[i].pointType || !i) {\r\n if (linePending) {\r\n ctx.stroke();\r\n }\r\n lastPoint = renderContext.WVP.transform(Coordinates.raDecTo3d(ls.points[i].RA, ls.points[i].dec));\r\n ctx.moveTo(lastPoint.x, lastPoint.y);\r\n }\r\n else {\r\n var newPoint = renderContext.WVP.transform(Coordinates.raDecTo3d(ls.points[i].RA, ls.points[i].dec));\r\n ctx.lineTo(newPoint.x, newPoint.y);\r\n linePending = true;\r\n }\r\n }\r\n if (this._boundry) {\r\n ctx.closePath();\r\n }\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n else {\r\n }\r\n },\r\n findConstellationForPoint: function(ra, dec) {\r\n if (dec > 88.402 || this.lines == null) {\r\n return 'UMI';\r\n }\r\n var $enum1 = ss.enumerate(this.lines);\r\n while ($enum1.moveNext()) {\r\n var ls = $enum1.current;\r\n var count = ls.points.length;\r\n var i;\r\n var j;\r\n var inside = false;\r\n for (i = 0, j = count - 1; i < count; j = i++) {\r\n if ((((ls.points[i].dec <= dec) && (dec < ls.points[j].dec)) || ((ls.points[j].dec <= dec) && (dec < ls.points[i].dec))) && (ra < (ls.points[j].RA - ls.points[i].RA) * (dec - ls.points[i].dec) / (ls.points[j].dec - ls.points[i].dec) + ls.points[i].RA)) {\r\n inside = !inside;\r\n }\r\n }\r\n if (inside) {\r\n return ls.get_name();\r\n }\r\n }\r\n if (ra > 0) {\r\n return this.findConstellationForPoint(ra - 24, dec);\r\n }\r\n if (dec > 65.5) {\r\n return 'UMI';\r\n }\r\n if (dec < -65.5) {\r\n return 'OCT';\r\n }\r\n return 'Error';\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Lineset\r\n\r\n function Lineset(name) {\r\n this._name = name;\r\n this.points = [];\r\n }\r\n var Lineset$ = {\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n this._name = value;\r\n return value;\r\n },\r\n add: function(ra, dec, pointType, name) {\r\n this.points.push(new Linepoint(ra, dec, pointType, name));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Linepoint\r\n\r\n function Linepoint(ra, dec, type, name) {\r\n this.RA = 0;\r\n this.dec = 0;\r\n this.pointType = 0;\r\n this.name = null;\r\n this.RA = ra;\r\n this.dec = dec;\r\n this.pointType = type;\r\n this.name = name;\r\n }\r\n var Linepoint$ = {\r\n toString: function() {\r\n if (ss.emptyString(this.name)) {\r\n return Coordinates.formatDMS((((this.RA / 360) * 24 + 12) % 24)) + ', ' + Coordinates.formatDMS(this.dec) + ', ' + this.pointType.toString();\r\n }\r\n else {\r\n return this.name + ', ' + this.pointType.toString();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ConstellationFilter\r\n\r\n function ConstellationFilter() {\r\n this.bits = new Array(3);\r\n this.oldBits = new Array(3);\r\n this.blendState = BlendState.create(false, 1000);\r\n this.internal = false;\r\n this.settingsOwned = false;\r\n for (var i = 0; i < 3; i++) {\r\n this.bits[i] = ~this.bits[i];\r\n this.oldBits[i] = this.bits[i];\r\n }\r\n }\r\n ConstellationFilter.buildConstellationFilters = function() {\r\n var all = ConstellationFilter.get_allConstellation();\r\n all.internal = true;\r\n ConstellationFilter.families['AllConstellation'] = all;\r\n ConstellationFilter.families['Zodiacal'] = ConstellationFilter.get_zodiacal();\r\n ConstellationFilter.families['Ursa Major Family'] = ConstellationFilter.get_ursaMajorFamily();\r\n ConstellationFilter.families['Perseus Family'] = ConstellationFilter.get_perseusFamily();\r\n ConstellationFilter.families['Hercules Family'] = ConstellationFilter.get_herculesFamily();\r\n ConstellationFilter.families['Orion Family'] = ConstellationFilter.get_orionFamily();\r\n ConstellationFilter.families['Heavenly Waters'] = ConstellationFilter.get_heavenlyWaters();\r\n ConstellationFilter.families['Bayer Family'] = ConstellationFilter.get_bayerFamily();\r\n ConstellationFilter.families['La Caille Family'] = ConstellationFilter.get_laCaileFamily();\r\n };\r\n ConstellationFilter.saveCustomFilters = function() {\r\n var sb = new ss.StringBuilder();\r\n var $dict1 = ConstellationFilter.families;\r\n for (var $key2 in $dict1) {\r\n var kv = { key: $key2, value: $dict1[$key2] };\r\n if (!kv.value.internal) {\r\n sb.append(kv.key);\r\n sb.append(';');\r\n sb.appendLine(kv.value.toString());\r\n }\r\n }\r\n };\r\n ConstellationFilter.get_allConstellation = function() {\r\n var all = new ConstellationFilter();\r\n all.setAll(true);\r\n return all;\r\n };\r\n ConstellationFilter.get_zodiacal = function() {\r\n var zodiacal = new ConstellationFilter();\r\n zodiacal.set('ARI', true);\r\n zodiacal.set('TAU', true);\r\n zodiacal.set('GEM', true);\r\n zodiacal.set('CNC', true);\r\n zodiacal.set('LEO', true);\r\n zodiacal.set('VIR', true);\r\n zodiacal.set('LIB', true);\r\n zodiacal.set('SCO', true);\r\n zodiacal.set('SGR', true);\r\n zodiacal.set('CAP', true);\r\n zodiacal.set('AQR', true);\r\n zodiacal.set('PSC', true);\r\n zodiacal.internal = true;\r\n return zodiacal;\r\n };\r\n ConstellationFilter.get_ursaMajorFamily = function() {\r\n var uma = new ConstellationFilter();\r\n uma.set('UMA', true);\r\n uma.set('UMI', true);\r\n uma.set('DRA', true);\r\n uma.set('CVN', true);\r\n uma.set('BOO', true);\r\n uma.set('COM', true);\r\n uma.set('CRB', true);\r\n uma.set('CAM', true);\r\n uma.set('LYN', true);\r\n uma.set('LMI', true);\r\n uma.internal = true;\r\n return uma;\r\n };\r\n ConstellationFilter.get_perseusFamily = function() {\r\n var Perseus = new ConstellationFilter();\r\n Perseus.set('CAS', true);\r\n Perseus.set('CEP', true);\r\n Perseus.set('AND', true);\r\n Perseus.set('PER', true);\r\n Perseus.set('PEG', true);\r\n Perseus.set('CET', true);\r\n Perseus.set('AUR', true);\r\n Perseus.set('LAC', true);\r\n Perseus.set('TRI', true);\r\n Perseus.internal = true;\r\n return Perseus;\r\n };\r\n ConstellationFilter.get_herculesFamily = function() {\r\n var hercules = new ConstellationFilter();\r\n hercules.set('HER', true);\r\n hercules.set('SGE', true);\r\n hercules.set('AQL', true);\r\n hercules.set('LYR', true);\r\n hercules.set('CYG', true);\r\n hercules.set('VUL', true);\r\n hercules.set('HYA', true);\r\n hercules.set('SEX', true);\r\n hercules.set('CRT', true);\r\n hercules.set('CRV', true);\r\n hercules.set('OPH', true);\r\n hercules.set('SER1', true);\r\n hercules.set('SER2', true);\r\n hercules.set('SCT', true);\r\n hercules.set('CEN', true);\r\n hercules.set('LUP', true);\r\n hercules.set('CRA', true);\r\n hercules.set('ARA', true);\r\n hercules.set('TRA', true);\r\n hercules.set('CRU', true);\r\n hercules.internal = true;\r\n return hercules;\r\n };\r\n ConstellationFilter.get_orionFamily = function() {\r\n var orion = new ConstellationFilter();\r\n orion.set('ORI', true);\r\n orion.set('CMA', true);\r\n orion.set('CMI', true);\r\n orion.set('MON', true);\r\n orion.set('LEP', true);\r\n orion.internal = true;\r\n return orion;\r\n };\r\n ConstellationFilter.get_heavenlyWaters = function() {\r\n var waters = new ConstellationFilter();\r\n waters.set('DEL', true);\r\n waters.set('EQU', true);\r\n waters.set('ERI', true);\r\n waters.set('PSA', true);\r\n waters.set('CAR', true);\r\n waters.set('PUP', true);\r\n waters.set('VEL', true);\r\n waters.set('PYX', true);\r\n waters.set('COL', true);\r\n waters.internal = true;\r\n return waters;\r\n };\r\n ConstellationFilter.get_bayerFamily = function() {\r\n var bayer = new ConstellationFilter();\r\n bayer.set('HYA', true);\r\n bayer.set('DOR', true);\r\n bayer.set('VOL', true);\r\n bayer.set('APS', true);\r\n bayer.set('PAV', true);\r\n bayer.set('GRU', true);\r\n bayer.set('PHE', true);\r\n bayer.set('TUC', true);\r\n bayer.set('IND', true);\r\n bayer.set('CHA', true);\r\n bayer.set('MUS', true);\r\n bayer.internal = true;\r\n return bayer;\r\n };\r\n ConstellationFilter.get_laCaileFamily = function() {\r\n var LaCaile = new ConstellationFilter();\r\n LaCaile.set('NOR', true);\r\n LaCaile.set('CIR', true);\r\n LaCaile.set('TEL', true);\r\n LaCaile.set('MIC', true);\r\n LaCaile.set('SCL', true);\r\n LaCaile.set('FOR', true);\r\n LaCaile.set('CAE', true);\r\n LaCaile.set('HOR', true);\r\n LaCaile.set('OCT', true);\r\n LaCaile.set('MEN', true);\r\n LaCaile.set('RET', true);\r\n LaCaile.set('PIC', true);\r\n LaCaile.set('ANT', true);\r\n LaCaile.internal = true;\r\n return LaCaile;\r\n };\r\n ConstellationFilter.parse = function(val) {\r\n var parts = (val).split(',');\r\n var cf = new ConstellationFilter();\r\n try {\r\n for (var i = 0; i < 3; i++) {\r\n cf.bits[i] = parseInt(parts[i]);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n return cf;\r\n };\r\n var ConstellationFilter$ = {\r\n _saveBits: function() {\r\n for (var i = 0; i < 3; i++) {\r\n this.oldBits[i] = this.bits[i];\r\n }\r\n },\r\n _isChanged: function() {\r\n for (var i = 0; i < 3; i++) {\r\n if (this.oldBits[i] !== this.bits[i]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n _checkChanged: function() {\r\n if (this._isChanged()) {\r\n this._fireChanged();\r\n }\r\n },\r\n isEnabled: function(abbrev) {\r\n var bitID = Constellations.bitIDs[abbrev];\r\n var index = bitID / 32;\r\n bitID = bitID % 32;\r\n return this.blendState.get_state() && !!((1 << bitID) & this.bits[index]);\r\n },\r\n isSet: function(abbrev) {\r\n this._saveBits();\r\n var bitID = Constellations.bitIDs[abbrev];\r\n var index = ss.truncate((bitID / 32));\r\n bitID = bitID % 32;\r\n return !!((1 << bitID) & this.bits[index]);\r\n },\r\n set: function(abbrev, state) {\r\n this._saveBits();\r\n var bitID = Constellations.bitIDs[abbrev];\r\n var index = bitID / 32;\r\n bitID = bitID % 32;\r\n if (state) {\r\n this.bits[index] = this.bits[index] | (1 << bitID);\r\n }\r\n else {\r\n this.bits[index] = this.bits[index] ^ (1 << bitID);\r\n }\r\n this._checkChanged();\r\n },\r\n setAll: function(state) {\r\n this._saveBits();\r\n for (var bitID = 0; bitID < 89; bitID++) {\r\n var index = bitID / 32;\r\n var bit = bitID % 32;\r\n if (state) {\r\n this.bits[index] = this.bits[index] | (1 << bit);\r\n }\r\n else {\r\n this.bits[index] = this.bits[index] ^ (1 << bit);\r\n }\r\n }\r\n this._checkChanged();\r\n },\r\n setBits: function(bits) {\r\n this._saveBits();\r\n for (var i = 0; i < 3; i++) {\r\n this.bits[i] = (bits[i * 4]) + ((bits[i * 4 + 1]) << 8) + ((bits[i * 4 + 2]) << 16) + ((bits[i * 4 + 3]) << 24);\r\n }\r\n this._checkChanged();\r\n },\r\n getBits: function() {\r\n var bits = new Array(12);\r\n var index = 0;\r\n for (var i = 0; i < 3; i++) {\r\n bits[index++] = this.bits[i];\r\n bits[index++] = (this.bits[i] >> 8);\r\n bits[index++] = (this.bits[i] >> 16);\r\n bits[index++] = (this.bits[i] >> 24);\r\n }\r\n return bits;\r\n },\r\n cloneFilter: function(filter) {\r\n this._saveBits();\r\n for (var i = 0; i < 3; i++) {\r\n this.bits[i] = filter.bits[i];\r\n }\r\n this._checkChanged();\r\n },\r\n clone: function() {\r\n var newFilter = new ConstellationFilter();\r\n newFilter.cloneFilter(this);\r\n return newFilter;\r\n },\r\n combine: function(filter) {\r\n this._saveBits();\r\n for (var i = 0; i < 3; i++) {\r\n this.bits[i] = this.bits[i] | filter.bits[i];\r\n }\r\n this._checkChanged();\r\n },\r\n remove: function(filter) {\r\n this._saveBits();\r\n for (var i = 0; i < 3; i++) {\r\n this.bits[i] = this.bits[i] & ~filter.bits[i];\r\n }\r\n this._checkChanged();\r\n },\r\n _fireChanged: function() {\r\n if (this.settingsOwned) {\r\n }\r\n },\r\n toString: function() {\r\n return ss.format('{0},{1},{2}', this.bits[0], this.bits[1], this.bits[2]);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionTexture\r\n\r\n function PositionTexture() {\r\n this.tu = 0;\r\n this.tv = 0;\r\n this.position = new Vector3d();\r\n }\r\n PositionTexture.createPos = function(pos, u, v) {\r\n var temp = new PositionTexture();\r\n temp.tu = u * Tile.uvMultiple;\r\n temp.tv = v * Tile.uvMultiple;\r\n temp.position = pos;\r\n return temp;\r\n };\r\n PositionTexture.createPosRaw = function(pos, u, v) {\r\n var temp = new PositionTexture();\r\n temp.tu = u;\r\n temp.tv = v;\r\n temp.position = pos;\r\n return temp;\r\n };\r\n PositionTexture.createPosSize = function(pos, u, v, width, height) {\r\n var temp = new PositionTexture();\r\n temp.tu = u * width;\r\n temp.tv = v * height;\r\n temp.position = pos;\r\n return temp;\r\n };\r\n PositionTexture.create = function(xvalue, yvalue, zvalue, u, v) {\r\n var temp = new PositionTexture();\r\n temp.position = Vector3d.create(xvalue, yvalue, zvalue);\r\n temp.tu = u * Tile.uvMultiple;\r\n temp.tv = v * Tile.uvMultiple;\r\n return temp;\r\n };\r\n var PositionTexture$ = {\r\n copy: function() {\r\n var temp = new PositionTexture();\r\n temp.position = Vector3d.makeCopy(this.position);\r\n temp.tu = this.tu;\r\n temp.tv = this.tv;\r\n return temp;\r\n },\r\n toString: function() {\r\n return ss.format('{0}, {1}, {2}, {3}, {4}', this.position.x, this.position.y, this.position.z, this.tu, this.tv);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionColoredTextured\r\n\r\n function PositionColoredTextured() {\r\n this.tu = 0;\r\n this.tv = 0;\r\n this.color = new Color();\r\n this.position = new Vector3d();\r\n }\r\n PositionColoredTextured.createPos = function(pos, u, v) {\r\n var temp = new PositionColoredTextured();\r\n temp.tu = u * Tile.uvMultiple;\r\n temp.tv = v * Tile.uvMultiple;\r\n temp.position = pos;\r\n return temp;\r\n };\r\n PositionColoredTextured.createPosRaw = function(pos, u, v) {\r\n var temp = new PositionColoredTextured();\r\n temp.tu = u;\r\n temp.tv = v;\r\n temp.position = pos;\r\n return temp;\r\n };\r\n PositionColoredTextured.createPosSize = function(pos, u, v, width, height) {\r\n var temp = new PositionColoredTextured();\r\n temp.tu = u * width;\r\n temp.tv = v * height;\r\n temp.position = pos;\r\n return temp;\r\n };\r\n PositionColoredTextured.create = function(xvalue, yvalue, zvalue, u, v) {\r\n var temp = new PositionTexture();\r\n temp.position = Vector3d.create(xvalue, yvalue, zvalue);\r\n temp.tu = u * Tile.uvMultiple;\r\n temp.tv = v * Tile.uvMultiple;\r\n return temp;\r\n };\r\n var PositionColoredTextured$ = {\r\n copy: function() {\r\n var temp = new PositionTexture();\r\n temp.position = Vector3d.makeCopy(this.position);\r\n temp.tu = this.tu;\r\n temp.tv = this.tv;\r\n return temp;\r\n },\r\n toString: function() {\r\n return ss.format('{0}, {1}, {2}, {3}, {4}', this.position.x, this.position.y, this.position.z, this.tu, this.tv);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionColored\r\n\r\n function PositionColored(pos, color) {\r\n this.color = new Color();\r\n this.color = color._clone();\r\n this.position = pos.copy();\r\n }\r\n var PositionColored$ = {\r\n copy: function() {\r\n var temp = new PositionColored(this.position, this.color);\r\n return temp;\r\n },\r\n toString: function() {\r\n return ss.format('{0}, {1}, {2}, {3}', this.position.x, this.position.y, this.position.z, this.color.toString());\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionNormalTexturedTangent\r\n\r\n function PositionNormalTexturedTangent(position, normal, texCoord, tangent) {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.nx = 0;\r\n this.ny = 0;\r\n this.nz = 0;\r\n this.tu = 0;\r\n this.tv = 0;\r\n this.tanx = 0;\r\n this.tany = 0;\r\n this.tanz = 0;\r\n this.x = position.x;\r\n this.y = position.y;\r\n this.z = position.z;\r\n this.nx = normal.x;\r\n this.ny = normal.y;\r\n this.nz = normal.z;\r\n this.tu = texCoord.x;\r\n this.tv = texCoord.y;\r\n this.tanx = tangent.x;\r\n this.tany = tangent.y;\r\n this.tanz = tangent.z;\r\n }\r\n var PositionNormalTexturedTangent$ = {\r\n get_normal: function() {\r\n return Vector3d.create(this.nx, this.ny, this.nz);\r\n },\r\n set_normal: function(value) {\r\n this.nx = value.x;\r\n this.ny = value.y;\r\n this.nz = value.z;\r\n return value;\r\n },\r\n get_position: function() {\r\n return Vector3d.create(this.x, this.y, this.z);\r\n },\r\n set_position: function(value) {\r\n this.x = value.x;\r\n this.y = value.y;\r\n this.z = value.z;\r\n return value;\r\n },\r\n get_texCoord: function() {\r\n return Vector2d.create(this.tu, this.tv);\r\n },\r\n set_texCoord: function(value) {\r\n this.tu = value.x;\r\n this.tv = value.y;\r\n return value;\r\n },\r\n get_tangent: function() {\r\n return Vector3d.create(this.tanx, this.tany, this.tanz);\r\n },\r\n set_tangent: function(value) {\r\n this.tanx = value.x;\r\n this.tany = value.y;\r\n this.tanz = value.z;\r\n return value;\r\n },\r\n toString: function() {\r\n return ss.format('X={0}, Y={1}, Z={2}, Nx={3}, Ny={4}, Nz={5}, U={6}, V={7}, TanX={8}, TanY={9}, TanZ={10}', this.x, this.y, this.z, this.nx, this.ny, this.nz, this.tu, this.tv, this.tanx, this.tany, this.tanz);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Vector3d\r\n\r\n function Vector3d() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n }\r\n Vector3d.create = function(valueX, valueY, valueZ) {\r\n var temp = new Vector3d();\r\n temp.x = valueX;\r\n temp.y = valueY;\r\n temp.z = valueZ;\r\n return temp;\r\n };\r\n Vector3d.makeCopy = function(value) {\r\n var temp = new Vector3d();\r\n temp.x = value.x;\r\n temp.y = value.y;\r\n temp.z = value.z;\r\n return temp;\r\n };\r\n Vector3d.negate = function(vec) {\r\n return Vector3d.create(-vec.x, -vec.y, -vec.z);\r\n };\r\n Vector3d.midPoint = function(left, right) {\r\n var result = Vector3d.create((left.x + right.x) / 2, (left.y + right.y) / 2, (left.z + right.z) / 2);\r\n return result;\r\n };\r\n Vector3d.midPointByLength = function(left, right) {\r\n var result = Vector3d.create((left.x + right.x) / 2, (left.y + right.y) / 2, (left.z + right.z) / 2);\r\n result.normalize();\r\n result.multiply(left.length());\r\n return result;\r\n };\r\n Vector3d.get_empty = function() {\r\n return Vector3d.create(0, 0, 0);\r\n };\r\n Vector3d.addVectors = function(left, right) {\r\n return Vector3d.create(left.x + right.x, left.y + right.y, left.z + right.z);\r\n };\r\n Vector3d.cross = function(left, right) {\r\n return Vector3d.create(left.y * right.z - left.z * right.y, left.z * right.x - left.x * right.z, left.x * right.y - left.y * right.x);\r\n };\r\n Vector3d.dot = function(left, right) {\r\n return left.x * right.x + left.y * right.y + left.z * right.z;\r\n };\r\n Vector3d.getLength = function(source) {\r\n return Math.sqrt(source.x * source.x + source.y * source.y + source.z * source.z);\r\n };\r\n Vector3d.getLengthSq = function(source) {\r\n return source.x * source.x + source.y * source.y + source.z * source.z;\r\n };\r\n Vector3d.lerp = function(left, right, interpolater) {\r\n return Vector3d.create(left.x * (1 - interpolater) + right.x * interpolater, left.y * (1 - interpolater) + right.y * interpolater, left.z * (1 - interpolater) + right.z * interpolater);\r\n };\r\n Vector3d.midpoint = function(left, right) {\r\n var tmp = Vector3d.create(left.x * (0.5) + right.x * 0.5, left.y * (0.5) + right.y * 0.5, left.z * (0.5) + right.z * 0.5);\r\n tmp.normalize();\r\n return tmp;\r\n };\r\n Vector3d.slerp = function(left, right, interpolater) {\r\n var dot = Vector3d.dot(left, right);\r\n while (dot < 0.98) {\r\n var middle = Vector3d.midpoint(left, right);\r\n if (interpolater > 0.5) {\r\n left = middle;\r\n interpolater -= 0.5;\r\n interpolater *= 2;\r\n }\r\n else {\r\n right = middle;\r\n interpolater *= 2;\r\n }\r\n dot = Vector3d.dot(left, right);\r\n }\r\n var tmp = Vector3d.lerp(left, right, interpolater);\r\n tmp.normalize();\r\n return tmp;\r\n };\r\n Vector3d.multiplyScalar = function(source, f) {\r\n var result = source.copy();\r\n result.multiply(f);\r\n return result;\r\n };\r\n Vector3d.scale = function(source, scalingFactor) {\r\n var result = source;\r\n result.multiply(scalingFactor);\r\n return result;\r\n };\r\n Vector3d.subtractVectors = function(left, right) {\r\n var result = left.copy();\r\n result.subtract(right);\r\n return result;\r\n };\r\n Vector3d.parse = function(data) {\r\n var newVector = new Vector3d();\r\n var list = data.split(',');\r\n if (list.length === 3) {\r\n newVector.x = parseFloat(list[0]);\r\n newVector.y = parseFloat(list[1]);\r\n newVector.z = parseFloat(list[2]);\r\n }\r\n return newVector;\r\n };\r\n Vector3d._transformCoordinate = function(vector3d, mat) {\r\n return mat.transform(vector3d);\r\n };\r\n var Vector3d$ = {\r\n set: function(valueX, valueY, valueZ) {\r\n this.x = valueX;\r\n this.y = valueY;\r\n this.z = valueZ;\r\n },\r\n copy: function() {\r\n var temp = new Vector3d();\r\n temp.x = this.x;\r\n temp.y = this.y;\r\n temp.z = this.z;\r\n return temp;\r\n },\r\n round: function() {\r\n this.x = ss.truncate((this.x * 65536)) / 65536;\r\n this.y = ss.truncate((this.y * 65536)) / 65536;\r\n this.z = ss.truncate((this.z * 65536)) / 65536;\r\n },\r\n add: function(source) {\r\n this.x += source.x;\r\n this.y += source.y;\r\n this.z += source.z;\r\n },\r\n length: function() {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\r\n },\r\n lengthSq: function() {\r\n return this.x * this.x + this.y * this.y + this.z * this.z;\r\n },\r\n multiply: function(s) {\r\n this.x *= s;\r\n this.y *= s;\r\n this.z *= s;\r\n },\r\n normalize: function() {\r\n var length = this.length();\r\n if (!!length) {\r\n this.x /= length;\r\n this.y /= length;\r\n this.z /= length;\r\n }\r\n },\r\n rotateX: function(radians) {\r\n var zTemp;\r\n var yTemp;\r\n yTemp = this.y * Math.cos(radians) - this.z * Math.sin(radians);\r\n zTemp = this.y * Math.sin(radians) + this.z * Math.cos(radians);\r\n this.z = zTemp;\r\n this.y = yTemp;\r\n },\r\n rotateZ: function(radians) {\r\n var xTemp;\r\n var yTemp;\r\n xTemp = this.x * Math.cos(radians) - this.y * Math.sin(radians);\r\n yTemp = this.x * Math.sin(radians) + this.y * Math.cos(radians);\r\n this.y = yTemp;\r\n this.x = xTemp;\r\n },\r\n rotateY: function(radians) {\r\n var zTemp;\r\n var xTemp;\r\n zTemp = this.z * Math.cos(radians) - this.x * Math.sin(radians);\r\n xTemp = this.z * Math.sin(radians) + this.x * Math.cos(radians);\r\n this.x = xTemp;\r\n this.z = zTemp;\r\n },\r\n subtract: function(source) {\r\n this.x -= source.x;\r\n this.y -= source.y;\r\n this.z -= source.z;\r\n return this;\r\n },\r\n toString: function() {\r\n return ss.format('{0}, {1}, {2}', this.x, this.y, this.z);\r\n },\r\n toSpherical: function() {\r\n var ascention;\r\n var declination;\r\n var radius = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\r\n var XZ = Math.sqrt(this.x * this.x + this.z * this.z);\r\n declination = Math.asin(this.y / radius);\r\n if (!XZ) {\r\n ascention = 0;\r\n }\r\n else if (0 <= this.x) {\r\n ascention = Math.asin(this.z / XZ);\r\n }\r\n else {\r\n ascention = Math.PI - Math.asin(this.z / XZ);\r\n }\r\n return Vector2d.create(((ascention + Math.PI) % (2 * Math.PI)), (declination + (Math.PI / 2)));\r\n },\r\n toRaDec: function() {\r\n var point = this.toSpherical();\r\n point.x = point.x / Math.PI * 12;\r\n point.y = (point.y / Math.PI * 180) - 90;\r\n return point;\r\n },\r\n distanceToLine: function(x1, x2) {\r\n var t1 = Vector3d.subtractVectors(x2, x1);\r\n var t2 = Vector3d.subtractVectors(x1, this);\r\n var t3 = Vector3d.cross(t1, t2);\r\n var d1 = t3.length();\r\n var t4 = Vector3d.subtractVectors(x2, x1);\r\n var d2 = t4.length();\r\n return d1 / d2;\r\n },\r\n _transformByMatrics: function(lookAtAdjust) {\r\n var temp = lookAtAdjust.transform(this);\r\n this.x = temp.x;\r\n this.y = temp.y;\r\n this.z = temp.z;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Vector2d\r\n\r\n function Vector2d() {\r\n this.x = 0;\r\n this.y = 0;\r\n }\r\n Vector2d.lerp = function(left, right, interpolater) {\r\n return Vector2d.create(left.x * (1 - interpolater) + right.x * interpolater, left.y * (1 - interpolater) + right.y * interpolater);\r\n };\r\n Vector2d.cartesianToSpherical2 = function(vector) {\r\n var rho = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\r\n var longitude = Math.atan2(vector.z, vector.x);\r\n var latitude = Math.asin(vector.y / rho);\r\n return Vector2d.create(longitude / Math.PI * 180, latitude / Math.PI * 180);\r\n };\r\n Vector2d.average3d = function(left, right) {\r\n var pntLeft = Coordinates.geoTo3dDouble(left.y, left.x);\r\n var pntRight = Coordinates.geoTo3dDouble(right.y, right.x);\r\n var pntOut = Vector3d.addVectors(pntLeft, pntRight);\r\n pntOut.multiply(0.5);\r\n pntOut.normalize();\r\n return Vector2d.cartesianToSpherical2(pntOut);\r\n };\r\n Vector2d.create = function(x, y) {\r\n var temp = new Vector2d();\r\n temp.x = x;\r\n temp.y = y;\r\n return temp;\r\n };\r\n Vector2d.subtract = function(left, right) {\r\n return Vector2d.create(left.x - right.x, left.y - right.y);\r\n };\r\n var Vector2d$ = {\r\n distance3d: function(pointB) {\r\n var pnt1 = Coordinates.geoTo3dDouble(pointB.y, pointB.x);\r\n var pnt2 = Coordinates.geoTo3dDouble(this.y, this.x);\r\n var pntDiff = Vector3d.subtractVectors(pnt1, pnt2);\r\n return pntDiff.length() / Math.PI * 180;\r\n },\r\n get_length: function() {\r\n return Math.sqrt(this.x * this.x + this.y * this.y);\r\n },\r\n normalize: function() {\r\n var length = this.get_length();\r\n if (!!length) {\r\n this.x /= length;\r\n this.y /= length;\r\n }\r\n },\r\n extend: function(factor) {\r\n this.x = this.x * factor;\r\n this.y = this.y * factor;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Matrix3d\r\n\r\n function Matrix3d() {\r\n this._m11 = 0;\r\n this._m12 = 0;\r\n this._m13 = 0;\r\n this._m14 = 0;\r\n this._m21 = 0;\r\n this._m22 = 0;\r\n this._m23 = 0;\r\n this._m24 = 0;\r\n this._m31 = 0;\r\n this._m32 = 0;\r\n this._m33 = 0;\r\n this._m34 = 0;\r\n this._offsetX = 0;\r\n this._offsetY = 0;\r\n this._offsetZ = 0;\r\n this._m44 = 0;\r\n this._isNotKnownToBeIdentity = false;\r\n }\r\n Matrix3d.create = function(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, offsetX, offsetY, offsetZ, m44) {\r\n var temp = new Matrix3d();\r\n temp._m11 = m11;\r\n temp._m12 = m12;\r\n temp._m13 = m13;\r\n temp._m14 = m14;\r\n temp._m21 = m21;\r\n temp._m22 = m22;\r\n temp._m23 = m23;\r\n temp._m24 = m24;\r\n temp._m31 = m31;\r\n temp._m32 = m32;\r\n temp._m33 = m33;\r\n temp._m34 = m34;\r\n temp._offsetX = offsetX;\r\n temp._offsetY = offsetY;\r\n temp._offsetZ = offsetZ;\r\n temp._m44 = m44;\r\n temp._isNotKnownToBeIdentity = true;\r\n return temp;\r\n };\r\n Matrix3d.get_identity = function() {\r\n var temp = new Matrix3d();\r\n temp.set(Matrix3d._s_identity);\r\n return temp;\r\n };\r\n Matrix3d.multiplyMatrix = function(matrix1, matrix2) {\r\n if (matrix1.get__isDistinguishedIdentity()) {\r\n return matrix2;\r\n }\r\n if (matrix2.get__isDistinguishedIdentity()) {\r\n return matrix1;\r\n }\r\n return Matrix3d.create((((matrix1._m11 * matrix2._m11) + (matrix1._m12 * matrix2._m21)) + (matrix1._m13 * matrix2._m31)) + (matrix1._m14 * matrix2._offsetX), (((matrix1._m11 * matrix2._m12) + (matrix1._m12 * matrix2._m22)) + (matrix1._m13 * matrix2._m32)) + (matrix1._m14 * matrix2._offsetY), (((matrix1._m11 * matrix2._m13) + (matrix1._m12 * matrix2._m23)) + (matrix1._m13 * matrix2._m33)) + (matrix1._m14 * matrix2._offsetZ), (((matrix1._m11 * matrix2._m14) + (matrix1._m12 * matrix2._m24)) + (matrix1._m13 * matrix2._m34)) + (matrix1._m14 * matrix2._m44), (((matrix1._m21 * matrix2._m11) + (matrix1._m22 * matrix2._m21)) + (matrix1._m23 * matrix2._m31)) + (matrix1._m24 * matrix2._offsetX), (((matrix1._m21 * matrix2._m12) + (matrix1._m22 * matrix2._m22)) + (matrix1._m23 * matrix2._m32)) + (matrix1._m24 * matrix2._offsetY), (((matrix1._m21 * matrix2._m13) + (matrix1._m22 * matrix2._m23)) + (matrix1._m23 * matrix2._m33)) + (matrix1._m24 * matrix2._offsetZ), (((matrix1._m21 * matrix2._m14) + (matrix1._m22 * matrix2._m24)) + (matrix1._m23 * matrix2._m34)) + (matrix1._m24 * matrix2._m44), (((matrix1._m31 * matrix2._m11) + (matrix1._m32 * matrix2._m21)) + (matrix1._m33 * matrix2._m31)) + (matrix1._m34 * matrix2._offsetX), (((matrix1._m31 * matrix2._m12) + (matrix1._m32 * matrix2._m22)) + (matrix1._m33 * matrix2._m32)) + (matrix1._m34 * matrix2._offsetY), (((matrix1._m31 * matrix2._m13) + (matrix1._m32 * matrix2._m23)) + (matrix1._m33 * matrix2._m33)) + (matrix1._m34 * matrix2._offsetZ), (((matrix1._m31 * matrix2._m14) + (matrix1._m32 * matrix2._m24)) + (matrix1._m33 * matrix2._m34)) + (matrix1._m34 * matrix2._m44), (((matrix1._offsetX * matrix2._m11) + (matrix1._offsetY * matrix2._m21)) + (matrix1._offsetZ * matrix2._m31)) + (matrix1._m44 * matrix2._offsetX), (((matrix1._offsetX * matrix2._m12) + (matrix1._offsetY * matrix2._m22)) + (matrix1._offsetZ * matrix2._m32)) + (matrix1._m44 * matrix2._offsetY), (((matrix1._offsetX * matrix2._m13) + (matrix1._offsetY * matrix2._m23)) + (matrix1._offsetZ * matrix2._m33)) + (matrix1._m44 * matrix2._offsetZ), (((matrix1._offsetX * matrix2._m14) + (matrix1._offsetY * matrix2._m24)) + (matrix1._offsetZ * matrix2._m34)) + (matrix1._m44 * matrix2._m44));\r\n };\r\n Matrix3d.lookAtLH = function(cameraPosition, cameraTarget, cameraUpVector) {\r\n var zaxis = Vector3d.subtractVectors(cameraTarget, cameraPosition);\r\n zaxis.normalize();\r\n var xaxis = Vector3d.cross(cameraUpVector, zaxis);\r\n xaxis.normalize();\r\n var yaxis = Vector3d.cross(zaxis, xaxis);\r\n var mat = Matrix3d.create(xaxis.x, yaxis.x, zaxis.x, 0, xaxis.y, yaxis.y, zaxis.y, 0, xaxis.z, yaxis.z, zaxis.z, 0, -Vector3d.dot(xaxis, cameraPosition), -Vector3d.dot(yaxis, cameraPosition), -Vector3d.dot(zaxis, cameraPosition), 1);\r\n return mat;\r\n };\r\n Matrix3d._createIdentity = function() {\r\n var matrixd = Matrix3d.create(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n matrixd.set__isDistinguishedIdentity(true);\r\n return matrixd;\r\n };\r\n Matrix3d.equals = function(matrix1, matrix2) {\r\n if (matrix1.get__isDistinguishedIdentity() || matrix2.get__isDistinguishedIdentity()) {\r\n return (matrix1.get_isIdentity() === matrix2.get_isIdentity());\r\n }\r\n if ((((matrix1.get_m11() === matrix2.get_m11() && matrix1.get_m12() === matrix2.get_m12()) && (matrix1.get_m13() === matrix2.get_m13() && matrix1.get_m14() === matrix2.get_m14())) && ((matrix1.get_m21() === matrix2.get_m21() && matrix1.get_m22() === matrix2.get_m22()) && (matrix1.get_m23() === matrix2.get_m23() && matrix1.get_m24() === matrix2.get_m24()))) && (((matrix1.get_m31() === matrix2.get_m31() && matrix1.get_m32() === matrix2.get_m32()) && (matrix1.get_m33() === matrix2.get_m33() && matrix1.get_m34() === matrix2.get_m34())) && ((matrix1.get_offsetX() === matrix2.get_offsetX() && matrix1.get_offsetY() === matrix2.get_offsetY()) && matrix1.get_offsetZ() === matrix2.get_offsetZ()))) {\r\n return matrix1.get_m44() === matrix2.get_m44();\r\n }\r\n return false;\r\n };\r\n Matrix3d.fromMatrix2d = function(mat) {\r\n var mat3d = Matrix3d._createIdentity();\r\n mat3d.set_m11(mat.m11);\r\n mat3d.set_m12(mat.m12);\r\n mat3d.set_m13(mat.m13);\r\n mat3d.set_m21(mat.m21);\r\n mat3d.set_m22(mat.m22);\r\n mat3d.set_m23(mat.m23);\r\n mat3d.set_m31(mat.m31);\r\n mat3d.set_m32(mat.m32);\r\n mat3d.set_m33(mat.m33);\r\n mat3d._isNotKnownToBeIdentity = true;\r\n return mat3d;\r\n };\r\n Matrix3d.rotationYawPitchRoll = function(heading, pitch, roll) {\r\n var matX = Matrix3d._rotationX(pitch);\r\n var matY = Matrix3d._rotationY(heading);\r\n var matZ = Matrix3d._rotationZ(roll);\r\n return Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(matY, matX), matZ);\r\n };\r\n Matrix3d._rotationY = function(p) {\r\n var v = p;\r\n var matNew = Matrix3d.get_identity();\r\n matNew._m11 = Math.cos(v);\r\n matNew._m22 = 1;\r\n matNew._m31 = Math.sin(v);\r\n matNew._m13 = -Math.sin(v);\r\n matNew._m33 = Math.cos(v);\r\n matNew._isNotKnownToBeIdentity = true;\r\n return matNew;\r\n };\r\n Matrix3d._rotationX = function(p) {\r\n var v = p;\r\n var matNew = Matrix3d.get_identity();\r\n matNew._m11 = 1;\r\n matNew._m22 = Math.cos(v);\r\n matNew._m32 = -Math.sin(v);\r\n matNew._m23 = Math.sin(v);\r\n matNew._m33 = Math.cos(v);\r\n matNew._isNotKnownToBeIdentity = true;\r\n return matNew;\r\n };\r\n Matrix3d._rotationZ = function(p) {\r\n var v = p;\r\n var matNew = Matrix3d.get_identity();\r\n matNew._m11 = Math.cos(v);\r\n matNew._m21 = -Math.sin(v);\r\n matNew._m12 = Math.sin(v);\r\n matNew._m22 = Math.cos(v);\r\n matNew._m33 = 1;\r\n matNew._isNotKnownToBeIdentity = true;\r\n return matNew;\r\n };\r\n Matrix3d._scaling = function(x, y, z) {\r\n var matNew = Matrix3d.get_identity();\r\n matNew._m11 = x;\r\n matNew._m22 = y;\r\n matNew._m33 = z;\r\n matNew._isNotKnownToBeIdentity = true;\r\n return matNew;\r\n };\r\n Matrix3d._translationXYZ = function(x, y, z) {\r\n var matNew = Matrix3d.get_identity();\r\n matNew.set_offsetX(x);\r\n matNew.set_offsetY(y);\r\n matNew.set_offsetZ(z);\r\n matNew._isNotKnownToBeIdentity = true;\r\n return matNew;\r\n };\r\n Matrix3d.perspectiveFovLH = function(fieldOfViewY, aspectRatio, znearPlane, zfarPlane) {\r\n var h = 1 / Math.tan(fieldOfViewY / 2);\r\n var w = h / aspectRatio;\r\n return Matrix3d.create(w, 0, 0, 0, 0, h, 0, 0, 0, 0, zfarPlane / (zfarPlane - znearPlane), 1, 0, 0, -znearPlane * zfarPlane / (zfarPlane - znearPlane), 0);\r\n };\r\n Matrix3d.perspectiveOffCenterLH = function(left, right, bottom, top, znearPlane, zfarPlane) {\r\n return Matrix3d.create(2 * znearPlane / (right - left), 0, 0, 0, 0, 2 * znearPlane / (top - bottom), 0, 0, (left + right) / (left - right), (top + bottom) / (bottom - top), zfarPlane / (zfarPlane - znearPlane), 1, 0, 0, znearPlane * zfarPlane / (znearPlane - zfarPlane), 0);\r\n };\r\n Matrix3d.invertMatrix = function(matrix3d) {\r\n var mat = matrix3d.clone();\r\n mat.invert();\r\n return mat;\r\n };\r\n Matrix3d.translation = function(vector3d) {\r\n return Matrix3d._translationXYZ(vector3d.x, vector3d.y, vector3d.z);\r\n };\r\n Matrix3d.getMapMatrix = function(center, fieldWidth, fieldHeight, rotation) {\r\n var offsetX = 0;\r\n var offsetY = 0;\r\n offsetX = -((center.get_lng() + 180 - (fieldWidth / 2)) / 360);\r\n offsetY = -(1 - ((center.get_lat() + 90 + (fieldHeight / 2)) / 180));\r\n var mat = new Matrix2d();\r\n var scaleX = 0;\r\n var scaleY = 0;\r\n scaleX = 360 / fieldWidth;\r\n scaleY = 180 / fieldHeight;\r\n mat = Matrix2d.multiply(mat, Matrix2d.translation(offsetX, offsetY));\r\n mat = Matrix2d.multiply(mat, Matrix2d.scaling(scaleX, scaleY));\r\n if (!!rotation) {\r\n mat = Matrix2d.multiply(mat, Matrix2d.translation(-0.5, -0.5));\r\n mat = Matrix2d.multiply(mat, Matrix2d.rotation(rotation));\r\n mat = Matrix2d.multiply(mat, Matrix2d.translation(0.5, 0.5));\r\n }\r\n return Matrix3d.fromMatrix2d(mat);\r\n };\r\n var Matrix3d$ = {\r\n clone: function() {\r\n var tmp = new Matrix3d();\r\n tmp.set(this);\r\n return tmp;\r\n },\r\n setIdentity: function() {\r\n this.set(Matrix3d._s_identity);\r\n },\r\n set: function(mat) {\r\n this._m11 = mat._m11;\r\n this._m12 = mat._m12;\r\n this._m13 = mat._m13;\r\n this._m14 = mat._m14;\r\n this._m21 = mat._m21;\r\n this._m22 = mat._m22;\r\n this._m23 = mat._m23;\r\n this._m24 = mat._m24;\r\n this._m31 = mat._m31;\r\n this._m32 = mat._m32;\r\n this._m33 = mat._m33;\r\n this._m34 = mat._m34;\r\n this._offsetX = mat._offsetX;\r\n this._offsetY = mat._offsetY;\r\n this._offsetZ = mat._offsetZ;\r\n this._m44 = mat._m44;\r\n this._isNotKnownToBeIdentity = true;\r\n },\r\n floatArray: function() {\r\n var array = new Array(16);\r\n array[0] = this._m11;\r\n array[1] = this._m12;\r\n array[2] = this._m13;\r\n array[3] = this._m14;\r\n array[4] = this._m21;\r\n array[5] = this._m22;\r\n array[6] = this._m23;\r\n array[7] = this._m24;\r\n array[8] = this._m31;\r\n array[9] = this._m32;\r\n array[10] = this._m33;\r\n array[11] = this._m34;\r\n array[12] = this._offsetX;\r\n array[13] = this._offsetY;\r\n array[14] = this._offsetZ;\r\n array[15] = this._m44;\r\n return array;\r\n },\r\n get_isIdentity: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return true;\r\n }\r\n if (((((this._m11 === 1) && (!this._m12)) && ((!this._m13) && (!this._m14))) && (((!this._m21) && (this._m22 === 1)) && ((!this._m23) && (!this._m24)))) && ((((!this._m31) && (!this._m32)) && ((this._m33 === 1) && (!this._m34))) && (((!this._offsetX) && (!this._offsetY)) && ((!this._offsetZ) && (this._m44 === 1))))) {\r\n this.set__isDistinguishedIdentity(true);\r\n return true;\r\n }\r\n return false;\r\n },\r\n prepend: function(matrix) {\r\n this.set(Matrix3d.multiplyMatrix(matrix, this));\r\n },\r\n append: function(matrix) {\r\n this._multiply(matrix);\r\n },\r\n scale: function(scale) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this._setScaleMatrix(scale);\r\n }\r\n else {\r\n this._m11 *= scale.x;\r\n this._m12 *= scale.y;\r\n this._m13 *= scale.z;\r\n this._m21 *= scale.x;\r\n this._m22 *= scale.y;\r\n this._m23 *= scale.z;\r\n this._m31 *= scale.x;\r\n this._m32 *= scale.y;\r\n this._m33 *= scale.z;\r\n this._offsetX *= scale.x;\r\n this._offsetY *= scale.y;\r\n this._offsetZ *= scale.z;\r\n }\r\n },\r\n scalePrepend: function(scale) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this._setScaleMatrix(scale);\r\n }\r\n else {\r\n this._m11 *= scale.x;\r\n this._m12 *= scale.x;\r\n this._m13 *= scale.x;\r\n this._m14 *= scale.x;\r\n this._m21 *= scale.y;\r\n this._m22 *= scale.y;\r\n this._m23 *= scale.y;\r\n this._m24 *= scale.y;\r\n this._m31 *= scale.z;\r\n this._m32 *= scale.z;\r\n this._m33 *= scale.z;\r\n this._m34 *= scale.z;\r\n }\r\n },\r\n scaleAt: function(scale, center) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this._setScaleMatrixCenter(scale, center);\r\n }\r\n else {\r\n var num = this._m14 * center.x;\r\n this._m11 = num + (scale.x * (this._m11 - num));\r\n num = this._m14 * center.y;\r\n this._m12 = num + (scale.y * (this._m12 - num));\r\n num = this._m14 * center.z;\r\n this._m13 = num + (scale.z * (this._m13 - num));\r\n num = this._m24 * center.x;\r\n this._m21 = num + (scale.x * (this._m21 - num));\r\n num = this._m24 * center.y;\r\n this._m22 = num + (scale.y * (this._m22 - num));\r\n num = this._m24 * center.z;\r\n this._m23 = num + (scale.z * (this._m23 - num));\r\n num = this._m34 * center.x;\r\n this._m31 = num + (scale.x * (this._m31 - num));\r\n num = this._m34 * center.y;\r\n this._m32 = num + (scale.y * (this._m32 - num));\r\n num = this._m34 * center.z;\r\n this._m33 = num + (scale.z * (this._m33 - num));\r\n num = this._m44 * center.x;\r\n this._offsetX = num + (scale.x * (this._offsetX - num));\r\n num = this._m44 * center.y;\r\n this._offsetY = num + (scale.y * (this._offsetY - num));\r\n num = this._m44 * center.z;\r\n this._offsetZ = num + (scale.z * (this._offsetZ - num));\r\n }\r\n },\r\n scaleAtPrepend: function(scale, center) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this._setScaleMatrixCenter(scale, center);\r\n }\r\n else {\r\n var num3 = center.x - (center.x * scale.x);\r\n var num2 = center.y - (center.y * scale.y);\r\n var num = center.z - (center.z * scale.z);\r\n this._offsetX += ((this._m11 * num3) + (this._m21 * num2)) + (this._m31 * num);\r\n this._offsetY += ((this._m12 * num3) + (this._m22 * num2)) + (this._m32 * num);\r\n this._offsetZ += ((this._m13 * num3) + (this._m23 * num2)) + (this._m33 * num);\r\n this._m44 += ((this._m14 * num3) + (this._m24 * num2)) + (this._m34 * num);\r\n this._m11 *= scale.x;\r\n this._m12 *= scale.x;\r\n this._m13 *= scale.x;\r\n this._m14 *= scale.x;\r\n this._m21 *= scale.y;\r\n this._m22 *= scale.y;\r\n this._m23 *= scale.y;\r\n this._m24 *= scale.y;\r\n this._m31 *= scale.z;\r\n this._m32 *= scale.z;\r\n this._m33 *= scale.z;\r\n this._m34 *= scale.z;\r\n }\r\n },\r\n translate: function(offset) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this._setTranslationMatrix(offset);\r\n }\r\n else {\r\n this._m11 += this._m14 * offset.x;\r\n this._m12 += this._m14 * offset.y;\r\n this._m13 += this._m14 * offset.z;\r\n this._m21 += this._m24 * offset.x;\r\n this._m22 += this._m24 * offset.y;\r\n this._m23 += this._m24 * offset.z;\r\n this._m31 += this._m34 * offset.x;\r\n this._m32 += this._m34 * offset.y;\r\n this._m33 += this._m34 * offset.z;\r\n this._offsetX += this._m44 * offset.x;\r\n this._offsetY += this._m44 * offset.y;\r\n this._offsetZ += this._m44 * offset.z;\r\n }\r\n },\r\n translatePrepend: function(offset) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this._setTranslationMatrix(offset);\r\n }\r\n else {\r\n this._offsetX += ((this._m11 * offset.x) + (this._m21 * offset.y)) + (this._m31 * offset.z);\r\n this._offsetY += ((this._m12 * offset.x) + (this._m22 * offset.y)) + (this._m32 * offset.z);\r\n this._offsetZ += ((this._m13 * offset.x) + (this._m23 * offset.y)) + (this._m33 * offset.z);\r\n this._m44 += ((this._m14 * offset.x) + (this._m24 * offset.y)) + (this._m34 * offset.z);\r\n }\r\n },\r\n transform: function(point) {\r\n var temp = new Vector3d();\r\n if (!this.get__isDistinguishedIdentity()) {\r\n var x = point.x;\r\n var y = point.y;\r\n var z = point.z;\r\n temp.x = (((x * this._m11) + (y * this._m21)) + (z * this._m31)) + this._offsetX;\r\n temp.y = (((x * this._m12) + (y * this._m22)) + (z * this._m32)) + this._offsetY;\r\n temp.z = (((x * this._m13) + (y * this._m23)) + (z * this._m33)) + this._offsetZ;\r\n if (!this.get_isAffine()) {\r\n var num4 = (((x * this._m14) + (y * this._m24)) + (z * this._m34)) + this._m44;\r\n temp.x /= num4;\r\n temp.y /= num4;\r\n temp.z /= num4;\r\n }\r\n }\r\n return temp;\r\n },\r\n _transformTo: function(input, output) {\r\n output.x = (((input.x * this._m11) + (input.y * this._m21)) + (input.z * this._m31)) + this._offsetX;\r\n output.y = (((input.x * this._m12) + (input.y * this._m22)) + (input.z * this._m32)) + this._offsetY;\r\n output.z = (((input.x * this._m13) + (input.y * this._m23)) + (input.z * this._m33)) + this._offsetZ;\r\n var num4 = (((input.x * this._m14) + (input.y * this._m24)) + (input.z * this._m34)) + this._m44;\r\n output.x /= num4;\r\n output.y /= num4;\r\n output.z /= num4;\r\n },\r\n transformArray: function(points) {\r\n if (points != null) {\r\n for (var i = 0; i < points.length; i++) {\r\n this._multiplyPoint(points[i]);\r\n }\r\n }\r\n },\r\n projectArrayToScreen: function(input, output) {\r\n if (input != null && output != null) {\r\n var affine = this.get_isAffine();\r\n for (var i = 0; i < input.length; i++) {\r\n var x = input[i].x;\r\n var y = input[i].y;\r\n var z = input[i].z;\r\n if (affine) {\r\n output[i].x = ((((x * this._m11) + (y * this._m21)) + (z * this._m31)) + this._offsetX);\r\n output[i].y = ((((x * this._m12) + (y * this._m22)) + (z * this._m32)) + this._offsetY);\r\n output[i].z = (((x * this._m13) + (y * this._m23)) + (z * this._m33)) + this._offsetZ;\r\n }\r\n else {\r\n var num4 = (((x * this._m14) + (y * this._m24)) + (z * this._m34)) + this._m44;\r\n output[i].x = (((((x * this._m11) + (y * this._m21)) + (z * this._m31)) + this._offsetX) / num4);\r\n output[i].y = (((((x * this._m12) + (y * this._m22)) + (z * this._m32)) + this._offsetY) / num4);\r\n output[i].z = ((((x * this._m13) + (y * this._m23)) + (z * this._m33)) + this._offsetZ) / num4;\r\n }\r\n }\r\n }\r\n },\r\n projectToScreen: function(input, width, height) {\r\n var output = new Vector3d();\r\n var x = input.x;\r\n var y = input.y;\r\n var z = input.z;\r\n if (this.get_isAffine()) {\r\n output.x = (((((x * this._m11) + (y * this._m21)) + (z * this._m31)) + this._offsetX) + 0.5) * width;\r\n output.y = (-((((x * this._m12) + (y * this._m22)) + (z * this._m32)) + this._offsetY) + 0.5) * height;\r\n output.z = (((x * this._m13) + (y * this._m23)) + (z * this._m33)) + this._offsetZ;\r\n }\r\n else {\r\n var num4 = (((x * this._m14) + (y * this._m24)) + (z * this._m34)) + this._m44;\r\n output.x = ((((((x * this._m11) + (y * this._m21)) + (z * this._m31)) + this._offsetX) / num4) + 0.5) * width;\r\n output.y = (-(((((x * this._m12) + (y * this._m22)) + (z * this._m32)) + this._offsetY) / num4) + 0.5) * height;\r\n output.z = ((((x * this._m13) + (y * this._m23)) + (z * this._m33)) + this._offsetZ) / num4;\r\n }\r\n return output;\r\n },\r\n get_isAffine: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return true;\r\n }\r\n if (((!this._m14) && (!this._m24)) && (!this._m34)) {\r\n return (this._m44 === 1);\r\n }\r\n return false;\r\n },\r\n get_determinant: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return 1;\r\n }\r\n if (this.get_isAffine()) {\r\n return this._getNormalizedAffineDeterminant();\r\n }\r\n var num6 = (this._m13 * this._m24) - (this._m23 * this._m14);\r\n var num5 = (this._m13 * this._m34) - (this._m33 * this._m14);\r\n var num4 = (this._m13 * this._m44) - (this._offsetZ * this._m14);\r\n var num3 = (this._m23 * this._m34) - (this._m33 * this._m24);\r\n var num2 = (this._m23 * this._m44) - (this._offsetZ * this._m24);\r\n var num = (this._m33 * this._m44) - (this._offsetZ * this._m34);\r\n var num10 = ((this._m22 * num5) - (this._m32 * num6)) - (this._m12 * num3);\r\n var num9 = ((this._m12 * num2) - (this._m22 * num4)) + (this._offsetY * num6);\r\n var num8 = ((this._m32 * num4) - (this._offsetY * num5)) - (this._m12 * num);\r\n var num7 = ((this._m22 * num) - (this._m32 * num2)) + (this._offsetY * num3);\r\n return ((((this._offsetX * num10) + (this._m31 * num9)) + (this._m21 * num8)) + (this._m11 * num7));\r\n },\r\n get_hasInverse: function() {\r\n return !DoubleUtilities.isZero(this.get_determinant());\r\n },\r\n invert: function() {\r\n if (!this._invertCore()) {\r\n return;\r\n }\r\n },\r\n transpose: function() {\r\n var that = new Matrix3d();\r\n that.set(this);\r\n this._m12 = that._m21;\r\n this._m13 = that._m31;\r\n this._m14 = that._offsetX;\r\n this._m23 = that._m32;\r\n this._m24 = that._offsetY;\r\n this._m34 = that._offsetZ;\r\n this._m21 = that._m12;\r\n this._m31 = that._m13;\r\n this._offsetX = that._m14;\r\n this._m32 = that._m23;\r\n this._offsetY = that._m24;\r\n this._offsetZ = that._m34;\r\n },\r\n get_m11: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return 1;\r\n }\r\n return this._m11;\r\n },\r\n set_m11: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m11 = value;\r\n return value;\r\n },\r\n get_m12: function() {\r\n return this._m12;\r\n },\r\n set_m12: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m12 = value;\r\n return value;\r\n },\r\n get_m13: function() {\r\n return this._m13;\r\n },\r\n set_m13: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m13 = value;\r\n return value;\r\n },\r\n get_m14: function() {\r\n return this._m14;\r\n },\r\n set_m14: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m14 = value;\r\n return value;\r\n },\r\n get_m21: function() {\r\n return this._m21;\r\n },\r\n set_m21: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m21 = value;\r\n return value;\r\n },\r\n get_m22: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return 1;\r\n }\r\n return this._m22;\r\n },\r\n set_m22: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m22 = value;\r\n return value;\r\n },\r\n get_m23: function() {\r\n return this._m23;\r\n },\r\n set_m23: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m23 = value;\r\n return value;\r\n },\r\n get_m24: function() {\r\n return this._m24;\r\n },\r\n set_m24: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m24 = value;\r\n return value;\r\n },\r\n get_m31: function() {\r\n return this._m31;\r\n },\r\n set_m31: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m31 = value;\r\n return value;\r\n },\r\n get_m32: function() {\r\n return this._m32;\r\n },\r\n set_m32: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m32 = value;\r\n return value;\r\n },\r\n get_m33: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return 1;\r\n }\r\n return this._m33;\r\n },\r\n set_m33: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m33 = value;\r\n return value;\r\n },\r\n get_m34: function() {\r\n return this._m34;\r\n },\r\n set_m34: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m34 = value;\r\n return value;\r\n },\r\n get_m41: function() {\r\n return this.get_offsetX();\r\n },\r\n set_m41: function(value) {\r\n this.set_offsetX(value);\r\n return value;\r\n },\r\n get_m42: function() {\r\n return this.get_offsetY();\r\n },\r\n set_m42: function(value) {\r\n this.set_offsetY(value);\r\n return value;\r\n },\r\n get_m43: function() {\r\n return this.get_offsetZ();\r\n },\r\n set_m43: function(value) {\r\n this.set_offsetZ(value);\r\n return value;\r\n },\r\n get_offsetX: function() {\r\n return this._offsetX;\r\n },\r\n set_offsetX: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._offsetX = value;\r\n return value;\r\n },\r\n get_offsetY: function() {\r\n return this._offsetY;\r\n },\r\n set_offsetY: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._offsetY = value;\r\n return value;\r\n },\r\n get_offsetZ: function() {\r\n return this._offsetZ;\r\n },\r\n set_offsetZ: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._offsetZ = value;\r\n return value;\r\n },\r\n get_m44: function() {\r\n if (this.get__isDistinguishedIdentity()) {\r\n return 1;\r\n }\r\n return this._m44;\r\n },\r\n set_m44: function(value) {\r\n if (this.get__isDistinguishedIdentity()) {\r\n this.set(Matrix3d._s_identity);\r\n this.set__isDistinguishedIdentity(false);\r\n }\r\n this._m44 = value;\r\n return value;\r\n },\r\n _setScaleMatrix: function(scale) {\r\n this._m11 = scale.x;\r\n this._m22 = scale.y;\r\n this._m33 = scale.z;\r\n this._m44 = 1;\r\n this.set__isDistinguishedIdentity(false);\r\n },\r\n _setScaleMatrixCenter: function(scale, center) {\r\n this._m11 = scale.x;\r\n this._m22 = scale.y;\r\n this._m33 = scale.z;\r\n this._m44 = 1;\r\n this._offsetX = center.x - (center.x * scale.x);\r\n this._offsetY = center.y - (center.y * scale.y);\r\n this._offsetZ = center.z - (center.z * scale.z);\r\n this.set__isDistinguishedIdentity(false);\r\n },\r\n _setTranslationMatrix: function(offset) {\r\n this._m11 = this._m22 = this._m33 = this._m44 = 1;\r\n this._offsetX = offset.x;\r\n this._offsetY = offset.y;\r\n this._offsetZ = offset.z;\r\n this.set__isDistinguishedIdentity(false);\r\n },\r\n _multiplyPoint: function(point) {\r\n if (!this.get__isDistinguishedIdentity()) {\r\n var x = point.x;\r\n var y = point.y;\r\n var z = point.z;\r\n point.x = (((x * this._m11) + (y * this._m21)) + (z * this._m31)) + this._offsetX;\r\n point.y = (((x * this._m12) + (y * this._m22)) + (z * this._m32)) + this._offsetY;\r\n point.z = (((x * this._m13) + (y * this._m23)) + (z * this._m33)) + this._offsetZ;\r\n if (!this.get_isAffine()) {\r\n var num4 = (((x * this._m14) + (y * this._m24)) + (z * this._m34)) + this._m44;\r\n point.x /= num4;\r\n point.y /= num4;\r\n point.z /= num4;\r\n }\r\n }\r\n },\r\n multiplyVector: function(vector) {\r\n if (!this.get__isDistinguishedIdentity()) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n vector.x = ((x * this._m11) + (y * this._m21)) + (z * this._m31);\r\n vector.y = ((x * this._m12) + (y * this._m22)) + (z * this._m32);\r\n vector.z = ((x * this._m13) + (y * this._m23)) + (z * this._m33);\r\n }\r\n },\r\n _getNormalizedAffineDeterminant: function() {\r\n var num3 = (this._m12 * this._m23) - (this._m22 * this._m13);\r\n var num2 = (this._m32 * this._m13) - (this._m12 * this._m33);\r\n var num = (this._m22 * this._m33) - (this._m32 * this._m23);\r\n return (((this._m31 * num3) + (this._m21 * num2)) + (this._m11 * num));\r\n },\r\n _normalizedAffineInvert: function() {\r\n var num11 = (this._m12 * this._m23) - (this._m22 * this._m13);\r\n var num10 = (this._m32 * this._m13) - (this._m12 * this._m33);\r\n var num9 = (this._m22 * this._m33) - (this._m32 * this._m23);\r\n var num8 = ((this._m31 * num11) + (this._m21 * num10)) + (this._m11 * num9);\r\n if (DoubleUtilities.isZero(num8)) {\r\n return false;\r\n }\r\n var num20 = (this._m21 * this._m13) - (this._m11 * this._m23);\r\n var num19 = (this._m11 * this._m33) - (this._m31 * this._m13);\r\n var num18 = (this._m31 * this._m23) - (this._m21 * this._m33);\r\n var num7 = (this._m11 * this._m22) - (this._m21 * this._m12);\r\n var num6 = (this._m11 * this._m32) - (this._m31 * this._m12);\r\n var num5 = (this._m11 * this._offsetY) - (this._offsetX * this._m12);\r\n var num4 = (this._m21 * this._m32) - (this._m31 * this._m22);\r\n var num3 = (this._m21 * this._offsetY) - (this._offsetX * this._m22);\r\n var num2 = (this._m31 * this._offsetY) - (this._offsetX * this._m32);\r\n var num17 = ((this._m23 * num5) - (this._offsetZ * num7)) - (this._m13 * num3);\r\n var num16 = ((this._m13 * num2) - (this._m33 * num5)) + (this._offsetZ * num6);\r\n var num15 = ((this._m33 * num3) - (this._offsetZ * num4)) - (this._m23 * num2);\r\n var num14 = num7;\r\n var num13 = -num6;\r\n var num12 = num4;\r\n var num = 1 / num8;\r\n this._m11 = num9 * num;\r\n this._m12 = num10 * num;\r\n this._m13 = num11 * num;\r\n this._m21 = num18 * num;\r\n this._m22 = num19 * num;\r\n this._m23 = num20 * num;\r\n this._m31 = num12 * num;\r\n this._m32 = num13 * num;\r\n this._m33 = num14 * num;\r\n this._offsetX = num15 * num;\r\n this._offsetY = num16 * num;\r\n this._offsetZ = num17 * num;\r\n return true;\r\n },\r\n _invertCore: function() {\r\n if (!this.get__isDistinguishedIdentity()) {\r\n if (this.get_isAffine()) {\r\n return this._normalizedAffineInvert();\r\n }\r\n var num7 = (this._m13 * this._m24) - (this._m23 * this._m14);\r\n var num6 = (this._m13 * this._m34) - (this._m33 * this._m14);\r\n var num5 = (this._m13 * this._m44) - (this._offsetZ * this._m14);\r\n var num4 = (this._m23 * this._m34) - (this._m33 * this._m24);\r\n var num3 = (this._m23 * this._m44) - (this._offsetZ * this._m24);\r\n var num2 = (this._m33 * this._m44) - (this._offsetZ * this._m34);\r\n var num12 = ((this._m22 * num6) - (this._m32 * num7)) - (this._m12 * num4);\r\n var num11 = ((this._m12 * num3) - (this._m22 * num5)) + (this._offsetY * num7);\r\n var num10 = ((this._m32 * num5) - (this._offsetY * num6)) - (this._m12 * num2);\r\n var num9 = ((this._m22 * num2) - (this._m32 * num3)) + (this._offsetY * num4);\r\n var num8 = (((this._offsetX * num12) + (this._m31 * num11)) + (this._m21 * num10)) + (this._m11 * num9);\r\n if (DoubleUtilities.isZero(num8)) {\r\n return false;\r\n }\r\n var num24 = ((this._m11 * num4) - (this._m21 * num6)) + (this._m31 * num7);\r\n var num23 = ((this._m21 * num5) - (this._offsetX * num7)) - (this._m11 * num3);\r\n var num22 = ((this._m11 * num2) - (this._m31 * num5)) + (this._offsetX * num6);\r\n var num21 = ((this._m31 * num3) - (this._offsetX * num4)) - (this._m21 * num2);\r\n num7 = (this._m11 * this._m22) - (this._m21 * this._m12);\r\n num6 = (this._m11 * this._m32) - (this._m31 * this._m12);\r\n num5 = (this._m11 * this._offsetY) - (this._offsetX * this._m12);\r\n num4 = (this._m21 * this._m32) - (this._m31 * this._m22);\r\n num3 = (this._m21 * this._offsetY) - (this._offsetX * this._m22);\r\n num2 = (this._m31 * this._offsetY) - (this._offsetX * this._m32);\r\n var num20 = ((this._m13 * num4) - (this._m23 * num6)) + (this._m33 * num7);\r\n var num19 = ((this._m23 * num5) - (this._offsetZ * num7)) - (this._m13 * num3);\r\n var num18 = ((this._m13 * num2) - (this._m33 * num5)) + (this._offsetZ * num6);\r\n var num17 = ((this._m33 * num3) - (this._offsetZ * num4)) - (this._m23 * num2);\r\n var num16 = ((this._m24 * num6) - (this._m34 * num7)) - (this._m14 * num4);\r\n var num15 = ((this._m14 * num3) - (this._m24 * num5)) + (this._m44 * num7);\r\n var num14 = ((this._m34 * num5) - (this._m44 * num6)) - (this._m14 * num2);\r\n var num13 = ((this._m24 * num2) - (this._m34 * num3)) + (this._m44 * num4);\r\n var num = 1 / num8;\r\n this._m11 = num9 * num;\r\n this._m12 = num10 * num;\r\n this._m13 = num11 * num;\r\n this._m14 = num12 * num;\r\n this._m21 = num21 * num;\r\n this._m22 = num22 * num;\r\n this._m23 = num23 * num;\r\n this._m24 = num24 * num;\r\n this._m31 = num13 * num;\r\n this._m32 = num14 * num;\r\n this._m33 = num15 * num;\r\n this._m34 = num16 * num;\r\n this._offsetX = num17 * num;\r\n this._offsetY = num18 * num;\r\n this._offsetZ = num19 * num;\r\n this._m44 = num20 * num;\r\n }\r\n return true;\r\n },\r\n get__isDistinguishedIdentity: function() {\r\n return !this._isNotKnownToBeIdentity;\r\n },\r\n set__isDistinguishedIdentity: function(value) {\r\n this._isNotKnownToBeIdentity = !value;\r\n return value;\r\n },\r\n _multiply: function(mat) {\r\n this.set(Matrix3d.multiplyMatrix(this, mat));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Matrix2d\r\n\r\n function Matrix2d() {\r\n this.m11 = 1;\r\n this.m12 = 0;\r\n this.m13 = 0;\r\n this.m21 = 0;\r\n this.m22 = 1;\r\n this.m23 = 0;\r\n this.m31 = 0;\r\n this.m32 = 0;\r\n this.m33 = 1;\r\n }\r\n Matrix2d.create = function(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\r\n var mat = new Matrix2d();\r\n mat.m11 = m11;\r\n mat.m12 = m12;\r\n mat.m13 = m13;\r\n mat.m21 = m21;\r\n mat.m22 = m22;\r\n mat.m23 = m23;\r\n mat.m31 = m31;\r\n mat.m32 = m32;\r\n mat.m33 = m33;\r\n return mat;\r\n };\r\n Matrix2d.rotation = function(angle) {\r\n var mat = new Matrix2d();\r\n mat.m11 = Math.cos(angle);\r\n mat.m21 = -Math.sin(angle);\r\n mat.m12 = Math.sin(angle);\r\n mat.m22 = Math.cos(angle);\r\n return mat;\r\n };\r\n Matrix2d.translation = function(x, y) {\r\n var mat = new Matrix2d();\r\n mat.m31 = x;\r\n mat.m32 = y;\r\n return mat;\r\n };\r\n Matrix2d.scaling = function(x, y) {\r\n var mat = new Matrix2d();\r\n mat.m11 = x;\r\n mat.m22 = y;\r\n return mat;\r\n };\r\n Matrix2d.multiply = function(matrix1, matrix2) {\r\n return Matrix2d.create((((matrix1.m11 * matrix2.m11) + (matrix1.m12 * matrix2.m21)) + (matrix1.m13 * matrix2.m31)), (((matrix1.m11 * matrix2.m12) + (matrix1.m12 * matrix2.m22)) + (matrix1.m13 * matrix2.m32)), (((matrix1.m11 * matrix2.m13) + (matrix1.m12 * matrix2.m23)) + (matrix1.m13 * matrix2.m33)), (((matrix1.m21 * matrix2.m11) + (matrix1.m22 * matrix2.m21)) + (matrix1.m23 * matrix2.m31)), (((matrix1.m21 * matrix2.m12) + (matrix1.m22 * matrix2.m22)) + (matrix1.m23 * matrix2.m32)), (((matrix1.m21 * matrix2.m13) + (matrix1.m22 * matrix2.m23)) + (matrix1.m23 * matrix2.m33)), (((matrix1.m31 * matrix2.m11) + (matrix1.m32 * matrix2.m21)) + (matrix1.m33 * matrix2.m31)), (((matrix1.m31 * matrix2.m12) + (matrix1.m32 * matrix2.m22)) + (matrix1.m33 * matrix2.m32)), (((matrix1.m31 * matrix2.m13) + (matrix1.m32 * matrix2.m23)) + (matrix1.m33 * matrix2.m33)));\r\n };\r\n Matrix2d.rotateAt = function(angle, pnt) {\r\n var matT0 = Matrix2d.translation(-pnt.x, -pnt.y);\r\n var matR = Matrix2d.rotation(angle);\r\n var matT1 = Matrix2d.translation(pnt.x, pnt.y);\r\n return Matrix2d.multiply(Matrix2d.multiply(matT0, matR), matT1);\r\n };\r\n var Matrix2d$ = {\r\n _transformPoints: function(points) {\r\n var $enum1 = ss.enumerate(points);\r\n while ($enum1.moveNext()) {\r\n var pnt = $enum1.current;\r\n this.multiplyPoint(pnt);\r\n }\r\n },\r\n multiplyPoint: function(point) {\r\n var x = point.x;\r\n var y = point.y;\r\n point.x = (((x * this.m11) + (y * this.m21)) + this.m31);\r\n point.y = (((x * this.m12) + (y * this.m22)) + this.m32);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.DoubleUtilities\r\n\r\n function DoubleUtilities() {\r\n }\r\n DoubleUtilities.isZero = function(value) {\r\n return (Math.abs(value) < 2.22044604925031E-50);\r\n };\r\n DoubleUtilities.isOne = function(value) {\r\n return (Math.abs(value - 1) < 2.22044604925031E-50);\r\n };\r\n DoubleUtilities.radiansToDegrees = function(radians) {\r\n return radians * 180 / Math.PI;\r\n };\r\n DoubleUtilities.degreesToRadians = function(degrees) {\r\n return degrees * Math.PI / 180;\r\n };\r\n DoubleUtilities.clamp = function(x, min, max) {\r\n return Math.max(min, Math.min(x, max));\r\n };\r\n\r\n\r\n // wwtlib.PlaneD\r\n\r\n function PlaneD(valuePointA, valuePointB, valuePointC, valuePointD) {\r\n this.a = 0;\r\n this.b = 0;\r\n this.c = 0;\r\n this.d = 0;\r\n this.a = valuePointA;\r\n this.b = valuePointB;\r\n this.c = valuePointC;\r\n this.d = valuePointD;\r\n }\r\n var PlaneD$ = {\r\n normalize: function() {\r\n var length = Math.sqrt(this.a * this.a + this.b * this.b + this.c * this.c);\r\n this.a /= length;\r\n this.b /= length;\r\n this.c /= length;\r\n this.d /= length;\r\n },\r\n dot: function(v) {\r\n return this.b * v.y + this.c * v.z + this.d * v.w + this.a * v.x;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Vector4d\r\n\r\n function Vector4d(valueX, valueY, valueZ, valueW) {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.w = 0;\r\n this.x = valueX;\r\n this.y = valueY;\r\n this.z = valueZ;\r\n this.w = valueW;\r\n }\r\n var Vector4d$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.PositionNormalTexturedX2\r\n\r\n function PositionNormalTexturedX2() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.nx = 0;\r\n this.ny = 0;\r\n this.nz = 0;\r\n this.tu = 0;\r\n this.tv = 0;\r\n this.tu1 = 0;\r\n this.tv1 = 0;\r\n }\r\n PositionNormalTexturedX2.create2UV = function(pos, nor, u, v, u1, v1) {\r\n var temp = new PositionNormalTexturedX2();\r\n temp.x = pos.x;\r\n temp.y = pos.y;\r\n temp.z = pos.z;\r\n temp.nx = nor.x;\r\n temp.ny = nor.y;\r\n temp.nz = nor.z;\r\n temp.tu = u;\r\n temp.tv = v;\r\n temp.tu1 = u1;\r\n temp.tv1 = v1;\r\n return temp;\r\n };\r\n PositionNormalTexturedX2.create = function(pos, nor, u, v) {\r\n var temp = new PositionNormalTexturedX2();\r\n temp.x = pos.x;\r\n temp.y = pos.y;\r\n temp.z = pos.z;\r\n temp.nx = nor.x;\r\n temp.ny = nor.y;\r\n temp.nz = nor.z;\r\n temp.tu = u;\r\n temp.tv = v;\r\n var result = Coordinates.cartesianToSpherical2(nor);\r\n temp.tu1 = ((result.get_lng() + 180) / 360);\r\n temp.tv1 = (1 - ((result.get_lat() + 90) / 180));\r\n return temp;\r\n };\r\n PositionNormalTexturedX2.createLong2UV = function(xvalue, yvalue, zvalue, nxvalue, nyvalue, nzvalue, u, v, u1, v1) {\r\n var temp = new PositionNormalTexturedX2();\r\n temp.x = xvalue;\r\n temp.y = yvalue;\r\n temp.z = zvalue;\r\n temp.nx = nxvalue;\r\n temp.ny = nyvalue;\r\n temp.nz = nzvalue;\r\n temp.tu = u;\r\n temp.tv = v;\r\n temp.tu1 = u1;\r\n temp.tv1 = v1;\r\n return temp;\r\n };\r\n PositionNormalTexturedX2.get_strideSize = function() {\r\n return 40;\r\n };\r\n var PositionNormalTexturedX2$ = {\r\n get_lat: function() {\r\n return (1 - this.tv1) * 180 - 90;\r\n },\r\n set_lat: function(value) {\r\n this.tv1 = (1 - ((value + 90) / 180));\r\n return value;\r\n },\r\n get_lng: function() {\r\n return this.tu1 * 360 - 180;\r\n },\r\n set_lng: function(value) {\r\n this.tu1 = ((value + 180) / 360);\r\n return value;\r\n },\r\n createLong: function(xvalue, yvalue, zvalue, nxvalue, nyvalue, nzvalue, u, v) {\r\n var temp = new PositionNormalTexturedX2();\r\n temp.x = xvalue;\r\n temp.y = yvalue;\r\n temp.z = zvalue;\r\n temp.nx = nxvalue;\r\n temp.ny = nyvalue;\r\n temp.nz = nzvalue;\r\n temp.tu = u;\r\n temp.tv = v;\r\n var result = Coordinates.cartesianToSpherical2(Vector3d.create(this.nx, this.ny, this.nz));\r\n temp.tu1 = ((result.get_lng() + 180) / 360);\r\n temp.tv1 = (1 - ((result.get_lat() + 90) / 180));\r\n return temp;\r\n },\r\n get_normal: function() {\r\n return Vector3d.create(this.nx, this.ny, this.nz);\r\n },\r\n set_normal: function(value) {\r\n this.nx = value.x;\r\n this.ny = value.y;\r\n this.nz = value.z;\r\n return value;\r\n },\r\n get_position: function() {\r\n return Vector3d.create(this.x, this.y, this.y);\r\n },\r\n set_position: function(value) {\r\n this.x = value.x;\r\n this.y = value.y;\r\n this.z = value.z;\r\n return value;\r\n },\r\n toString: function() {\r\n return ss.format('X={0}, Y={1}, Z={2}, Nx={3}, Ny={4}, Nz={5}, U={6}, V={7}, U1={8}, U2={9}', this.x, this.y, this.z, this.nx, this.ny, this.nz, this.tu, this.tv, this.tu1, this.tv1);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionNormalTextured\r\n\r\n function PositionNormalTextured() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.nx = 0;\r\n this.ny = 0;\r\n this.nz = 0;\r\n this.tu = 0;\r\n this.tv = 0;\r\n }\r\n PositionNormalTextured.createShort = function(pos, nor, u, v) {\r\n var temp = new PositionNormalTextured();\r\n temp.x = pos.x;\r\n temp.y = pos.y;\r\n temp.z = pos.z;\r\n temp.nx = nor.x;\r\n temp.ny = nor.y;\r\n temp.nz = nor.z;\r\n temp.tu = u;\r\n temp.tv = v;\r\n return temp;\r\n };\r\n PositionNormalTextured._create = function(x, y, z, nx, ny, nz, tu, tv) {\r\n var temp = new PositionNormalTextured();\r\n temp.x = x;\r\n temp.y = y;\r\n temp.z = z;\r\n temp.nx = nx;\r\n temp.ny = ny;\r\n temp.nz = nz;\r\n temp.tu = tu;\r\n temp.tv = tv;\r\n return temp;\r\n };\r\n PositionNormalTextured.createUV = function(pos, nor, uv) {\r\n var temp = new PositionNormalTextured();\r\n temp.x = pos.x;\r\n temp.y = pos.y;\r\n temp.z = pos.z;\r\n temp.nx = nor.x;\r\n temp.ny = nor.y;\r\n temp.nz = nor.z;\r\n temp.tu = uv.x;\r\n temp.tv = uv.y;\r\n return temp;\r\n };\r\n var PositionNormalTextured$ = {\r\n createLong: function(xvalue, yvalue, zvalue, nxvalue, nyvalue, nzvalue, u, v) {\r\n var temp = new PositionNormalTexturedX2();\r\n temp.x = xvalue;\r\n temp.y = yvalue;\r\n temp.z = zvalue;\r\n temp.nx = nxvalue;\r\n temp.ny = nyvalue;\r\n temp.nz = nzvalue;\r\n temp.tu = u;\r\n temp.tv = v;\r\n return temp;\r\n },\r\n get_normal: function() {\r\n return Vector3d.create(this.nx, this.ny, this.nz);\r\n },\r\n set_normal: function(value) {\r\n this.nx = value.x;\r\n this.ny = value.y;\r\n this.nz = value.z;\r\n return value;\r\n },\r\n get_position: function() {\r\n return Vector3d.create(this.x, this.y, this.z);\r\n },\r\n set_position: function(value) {\r\n this.x = value.x;\r\n this.y = value.y;\r\n this.z = value.z;\r\n return value;\r\n },\r\n toString: function() {\r\n return ss.format('X={0}, Y={1}, Z={2}, Nx={3}, Ny={4}, Nz={5}, U={6}, V={7}, U1={8}, U2={9}', this.x, this.y, this.z, this.nx, this.ny, this.nz, this.tu, this.tv);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SphereHull\r\n\r\n function SphereHull() {\r\n this.radius = 0;\r\n }\r\n SphereHull._create = function(Center, Radius) {\r\n var temp = new SphereHull();\r\n temp.center = Center;\r\n temp.radius = Radius;\r\n return temp;\r\n };\r\n var SphereHull$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ConvexHull\r\n\r\n function ConvexHull() {\r\n }\r\n ConvexHull.findEnclosingSphereFast = function(points) {\r\n var result = new SphereHull();\r\n var count = points.length;\r\n var center = Vector3d.zero;\r\n for (var i = 0; i < count; ++i) {\r\n center.add(points[i]);\r\n }\r\n center.multiply(1 / count);\r\n var radius = 0;\r\n for (var i = 0; i < count; ++i) {\r\n var distance = Vector3d.getLengthSq(Vector3d.subtractVectors(points[i], center));\r\n if (distance > radius) {\r\n radius = distance;\r\n }\r\n }\r\n radius = Math.sqrt(radius);\r\n result.center = center;\r\n result.radius = radius;\r\n return result;\r\n };\r\n ConvexHull.findEnclosingSphere = function(list) {\r\n var Center = new Vector3d();\r\n var Radius = 0;\r\n var count = list.length;\r\n var i;\r\n var dx;\r\n var dy;\r\n var dz;\r\n var rad_sq;\r\n var xspan;\r\n var yspan;\r\n var zspan;\r\n var maxspan;\r\n var old_to_p;\r\n var old_to_p_sq;\r\n var old_to_new;\r\n var xmin = new Vector3d();\r\n var xmax = new Vector3d();\r\n var ymin = new Vector3d();\r\n var ymax = new Vector3d();\r\n var zmin = new Vector3d();\r\n var zmax = new Vector3d();\r\n var dia1 = new Vector3d();\r\n var dia2 = new Vector3d();\r\n xmin.x = ymin.y = zmin.z = 100000000;\r\n xmax.x = ymax.y = zmax.z = -1000000000;\r\n for (i = 0; i < count; i++) {\r\n var current = list[i];\r\n if (current.x < xmin.x) {\r\n xmin = current;\r\n }\r\n if (current.x > xmax.x) {\r\n xmax = current;\r\n }\r\n if (current.y < ymin.y) {\r\n ymin = current;\r\n }\r\n if (current.y > ymax.y) {\r\n ymax = current;\r\n }\r\n if (current.z < zmin.z) {\r\n zmin = current;\r\n }\r\n if (current.z > zmax.z) {\r\n zmax = current;\r\n }\r\n }\r\n dx = xmax.x - xmin.x;\r\n dy = xmax.y - xmin.y;\r\n dz = xmax.z - xmin.z;\r\n xspan = dx * dx + dy * dy + dz * dz;\r\n dx = ymax.x - ymin.x;\r\n dy = ymax.y - ymin.y;\r\n dz = ymax.z - ymin.z;\r\n yspan = dx * dx + dy * dy + dz * dz;\r\n dx = zmax.x - zmin.x;\r\n dy = zmax.y - zmin.y;\r\n dz = zmax.z - zmin.z;\r\n zspan = dx * dx + dy * dy + dz * dz;\r\n dia1 = xmin;\r\n dia2 = xmax;\r\n maxspan = xspan;\r\n if (yspan > maxspan) {\r\n maxspan = yspan;\r\n dia1 = ymin;\r\n dia2 = ymax;\r\n }\r\n if (zspan > maxspan) {\r\n dia1 = zmin;\r\n dia2 = zmax;\r\n }\r\n Center.x = (dia1.x + dia2.x) / 2;\r\n Center.y = (dia1.y + dia2.y) / 2;\r\n Center.z = (dia1.z + dia2.z) / 2;\r\n dx = dia2.x - Center.x;\r\n dy = dia2.y - Center.y;\r\n dz = dia2.z - Center.z;\r\n rad_sq = dx * dx + dy * dy + dz * dz;\r\n Radius = Math.sqrt(rad_sq);\r\n for (i = 0; i < count; i++) {\r\n var current = list[i];\r\n dx = current.x - Center.x;\r\n dy = current.y - Center.y;\r\n dz = current.z - Center.z;\r\n old_to_p_sq = dx * dx + dy * dy + dz * dz;\r\n if (old_to_p_sq > rad_sq) {\r\n old_to_p = Math.sqrt(old_to_p_sq);\r\n Radius = (Radius + old_to_p) / 2;\r\n rad_sq = Radius * Radius;\r\n old_to_new = old_to_p - Radius;\r\n Center.x = (Radius * Center.x + old_to_new * current.x) / old_to_p;\r\n Center.y = (Radius * Center.y + old_to_new * current.y) / old_to_p;\r\n Center.z = (Radius * Center.z + old_to_new * current.z) / old_to_p;\r\n }\r\n }\r\n return SphereHull._create(Center, Radius);\r\n };\r\n var ConvexHull$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Folder\r\n\r\n function Folder() {\r\n this.parent = null;\r\n this.isProxy = false;\r\n this._versionDependent = false;\r\n this._readOnly = true;\r\n this._dirty = false;\r\n this._thumbnail = null;\r\n this._proxyFolder = null;\r\n this._lastUpdate = new Date();\r\n this._childList = [];\r\n this._itemsField = [];\r\n this._imagesets = [];\r\n this._tours = [];\r\n this._folders = [];\r\n this._places = [];\r\n this._groupField = 0;\r\n this._refreshTypeField = 0;\r\n this._refreshTypeFieldSpecified = false;\r\n this._browseableField = true;\r\n this._browseableFieldSpecified = false;\r\n this._searchableField = false;\r\n this._typeField = 0;\r\n this._communityIdField = 0;\r\n this._componentIdField = 0;\r\n this._permissionField = 0;\r\n }\r\n var Folder$ = {\r\n toString: function() {\r\n return this._nameField;\r\n },\r\n get_versionDependent: function() {\r\n return this._versionDependent;\r\n },\r\n set_versionDependent: function(value) {\r\n this._versionDependent = value;\r\n var $enum1 = ss.enumerate(this._folders);\r\n while ($enum1.moveNext()) {\r\n var folder = $enum1.current;\r\n folder.set_versionDependent(this._versionDependent);\r\n }\r\n return value;\r\n },\r\n get_readOnly: function() {\r\n return this._readOnly;\r\n },\r\n set_readOnly: function(value) {\r\n this._readOnly = value;\r\n return value;\r\n },\r\n get_dirty: function() {\r\n return this._dirty;\r\n },\r\n set_dirty: function(value) {\r\n this._dirty = value;\r\n return value;\r\n },\r\n loadFromUrlWithErrorCallback: function(url, complete, onError) {\r\n this._onError = onError;\r\n this.loadFromUrl(url, complete);\r\n },\r\n loadFromUrl: function(url, complete) {\r\n this._onComplete = complete;\r\n this._webFile = new WebFile(URLHelpers.singleton.rewrite(url, 1));\r\n this._webFile.onStateChange = ss.bind('_loadData', this);\r\n this._webFile.send();\r\n },\r\n _loadData: function() {\r\n if (this._webFile.get_state() === 2) {\r\n console.error(this._webFile.get_message());\r\n if (this._onError != null) {\r\n this._onError();\r\n }\r\n }\r\n else if (this._webFile.get_state() === 1) {\r\n var node = Util.selectSingleNode(this._webFile.getXml(), 'Folder');\r\n if (node == null) {\r\n var doc = this._webFile.getXml();\r\n if (doc != null) {\r\n node = Util.selectSingleNode(doc, 'Folder');\r\n }\r\n }\r\n if (node != null) {\r\n this._clearChildren();\r\n this._parseXML(node);\r\n }\r\n if (this._onComplete != null) {\r\n this._onComplete();\r\n }\r\n }\r\n },\r\n _clearChildren: function() {\r\n this._folders.length = 0;\r\n this._tours.length = 0;\r\n this._places.length = 0;\r\n this.get_imagesets().length = 0;\r\n },\r\n _parseXML: function(node) {\r\n if (node.attributes.getNamedItem('Name') != null) {\r\n this._nameField = node.attributes.getNamedItem('Name').nodeValue;\r\n }\r\n else {\r\n this._nameField = '';\r\n }\r\n if (node.attributes.getNamedItem('Url') != null) {\r\n this._urlField = node.attributes.getNamedItem('Url').nodeValue;\r\n }\r\n if (node.attributes.getNamedItem('Thumbnail') != null) {\r\n this._thumbnailUrlField = node.attributes.getNamedItem('Thumbnail').nodeValue;\r\n }\r\n var $enum1 = ss.enumerate(node.childNodes);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n switch (child.nodeName) {\r\n case 'Folder':\r\n var temp = new Folder();\r\n temp.parent = this;\r\n temp._parseXML(child);\r\n this._folders.push(temp);\r\n break;\r\n case 'Place':\r\n this._places.push(Place._fromXml(child));\r\n break;\r\n case 'ImageSet':\r\n this.get_imagesets().push(Imageset.fromXMLNode(child));\r\n break;\r\n case 'Tour':\r\n this.get_tours().push(Tour._fromXml(child));\r\n break;\r\n }\r\n }\r\n },\r\n addChildFolder: function(child) {\r\n this._folders.push(child);\r\n this._dirty = true;\r\n },\r\n removeChildFolder: function(child) {\r\n ss.remove(this._folders, child);\r\n this._dirty = true;\r\n },\r\n addChildPlace: function(child) {\r\n this._places.push(child);\r\n this._dirty = true;\r\n },\r\n removeChildPlace: function(child) {\r\n ss.remove(this._places, child);\r\n this._dirty = true;\r\n },\r\n get_thumbnail: function() {\r\n return this._thumbnail;\r\n },\r\n set_thumbnail: function(value) {\r\n this._thumbnail = value;\r\n return value;\r\n },\r\n get_bounds: function() {\r\n return this._bounds;\r\n },\r\n set_bounds: function(value) {\r\n this._bounds = value;\r\n return value;\r\n },\r\n get_isImage: function() {\r\n return false;\r\n },\r\n get_isTour: function() {\r\n return false;\r\n },\r\n get_isFolder: function() {\r\n return true;\r\n },\r\n get_isCloudCommunityItem: function() {\r\n return !!this._communityIdField || this._permissionField > 0;\r\n },\r\n refresh: function() {\r\n if (this._proxyFolder == null) {\r\n this._proxyFolder = new Folder();\r\n this._proxyFolder.isProxy = true;\r\n this._proxyFolder.parent = this.parent;\r\n }\r\n this._proxyFolder.loadFromUrlWithErrorCallback(this._urlField, this._childReadyCallback, this._childReadyCallback);\r\n this._childReadyCallback = null;\r\n },\r\n childLoadCallback: function(callback) {\r\n this._childReadyCallback = callback;\r\n var temp = this.get_children();\r\n if (this._proxyFolder == null) {\r\n callback();\r\n }\r\n },\r\n get_children: function() {\r\n if (ss.emptyString(this._urlField)) {\r\n this._childList.length = 0;\r\n if (this.parent != null) {\r\n var folderUp = new FolderUp();\r\n folderUp.parent = this.parent;\r\n this._childList.push(folderUp);\r\n }\r\n if (this.get_folders() != null) {\r\n var $enum1 = ss.enumerate(this.get_folders());\r\n while ($enum1.moveNext()) {\r\n var folder = $enum1.current;\r\n this._childList.push(folder);\r\n }\r\n }\r\n if (this.get_imagesets() != null) {\r\n var $enum2 = ss.enumerate(this.get_imagesets());\r\n while ($enum2.moveNext()) {\r\n var imset = $enum2.current;\r\n this._childList.push(imset);\r\n }\r\n }\r\n if (this.get_places() != null) {\r\n var $enum3 = ss.enumerate(this.get_places());\r\n while ($enum3.moveNext()) {\r\n var place = $enum3.current;\r\n this._childList.push(place);\r\n }\r\n }\r\n if (this.get_tours() != null) {\r\n var $enum4 = ss.enumerate(this.get_tours());\r\n while ($enum4.moveNext()) {\r\n var tour = $enum4.current;\r\n this._childList.push(tour);\r\n }\r\n }\r\n return this._childList;\r\n }\r\n else {\r\n var ts = (this._lastUpdate - ss.now()) / 1000;\r\n if (this.get_refreshType() === 1 || this._proxyFolder == null || (!this.get_refreshType() && (parseInt(this._refreshIntervalField) < ts))) {\r\n this.refresh();\r\n }\r\n if (this._proxyFolder != null) {\r\n return this._proxyFolder.get_children();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n },\r\n get_msrCommunityId: function() {\r\n return this._communityIdField;\r\n },\r\n set_msrCommunityId: function(value) {\r\n this._communityIdField = value;\r\n return value;\r\n },\r\n get_msrComponentId: function() {\r\n return this._componentIdField;\r\n },\r\n set_msrComponentId: function(value) {\r\n this._componentIdField = value;\r\n return value;\r\n },\r\n get_permission: function() {\r\n return this._permissionField;\r\n },\r\n set_permission: function(value) {\r\n this._permissionField = value;\r\n return value;\r\n },\r\n get_folders: function() {\r\n return this._folders;\r\n },\r\n set_folders: function(value) {\r\n this._folders = value;\r\n return value;\r\n },\r\n get_places: function() {\r\n return this._places;\r\n },\r\n set_places: function(value) {\r\n this._places = value;\r\n return value;\r\n },\r\n get_imagesets: function() {\r\n return this._imagesets;\r\n },\r\n set_imagesets: function(value) {\r\n this._imagesets = value;\r\n return value;\r\n },\r\n get_tours: function() {\r\n return this._tours;\r\n },\r\n set_tours: function(value) {\r\n this._tours = value;\r\n return value;\r\n },\r\n get_name: function() {\r\n if (this._nameField == null) {\r\n return '';\r\n }\r\n else {\r\n return this._nameField;\r\n }\r\n },\r\n set_name: function(value) {\r\n this._nameField = value;\r\n return value;\r\n },\r\n get_group: function() {\r\n return this._groupField;\r\n },\r\n set_group: function(value) {\r\n this._groupField = value;\r\n return value;\r\n },\r\n get_url: function() {\r\n return this._urlField;\r\n },\r\n set_url: function(value) {\r\n this._urlField = value;\r\n return value;\r\n },\r\n get_thumbnailUrl: function() {\r\n if (ss.emptyString(this._thumbnailUrlField)) {\r\n return URLHelpers.singleton.coreStaticUrl('wwtweb/thumbnail.aspx?name=folder');\r\n }\r\n return this._thumbnailUrlField;\r\n },\r\n set_thumbnailUrl: function(value) {\r\n this._thumbnailUrlField = value;\r\n return value;\r\n },\r\n get_refreshType: function() {\r\n return this._refreshTypeField;\r\n },\r\n set_refreshType: function(value) {\r\n this._refreshTypeField = value;\r\n this.set_refreshTypeSpecified(true);\r\n return value;\r\n },\r\n get_refreshTypeSpecified: function() {\r\n return this._refreshTypeFieldSpecified;\r\n },\r\n set_refreshTypeSpecified: function(value) {\r\n this._refreshTypeFieldSpecified = value;\r\n return value;\r\n },\r\n get_refreshInterval: function() {\r\n return this._refreshIntervalField;\r\n },\r\n set_refreshInterval: function(value) {\r\n this._refreshIntervalField = value;\r\n return value;\r\n },\r\n get_browseable: function() {\r\n return this._browseableField;\r\n },\r\n set_browseable: function(value) {\r\n this._browseableField = value;\r\n this._browseableFieldSpecified = true;\r\n return value;\r\n },\r\n get_browseableSpecified: function() {\r\n return this._browseableFieldSpecified;\r\n },\r\n set_browseableSpecified: function(value) {\r\n this._browseableFieldSpecified = value;\r\n return value;\r\n },\r\n get_searchable: function() {\r\n return this._searchableField;\r\n },\r\n set_searchable: function(value) {\r\n this._searchableField = value;\r\n return value;\r\n },\r\n get_type: function() {\r\n return this._typeField;\r\n },\r\n set_type: function(value) {\r\n this._typeField = value;\r\n return value;\r\n },\r\n get_subType: function() {\r\n return this._subTypeField;\r\n },\r\n set_subType: function(value) {\r\n this._subTypeField = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FolderBrowser\r\n\r\n function FolderBrowser() {\r\n this._items = [];\r\n this.top = 10;\r\n this.left = 10;\r\n this._indexTouchDown = -1;\r\n this._mouseDown = false;\r\n this._lastX = 0;\r\n this._lastY = 0;\r\n this._ignoreClick = false;\r\n this._thumbnailSize = 0;\r\n this._horzSpacing = 110;\r\n this._vertSpacing = 75;\r\n this._thumbHeight = 65;\r\n this._thumbWidth = 110;\r\n this._horzMultiple = 110;\r\n this._rowCount = 1;\r\n this._colCount = 6;\r\n this._dragging = false;\r\n this._startIndex = 0;\r\n this._startOffset = 0;\r\n this._selectedItem = -1;\r\n this._hoverItem = -1;\r\n this.showAddButton = false;\r\n this.width = 0;\r\n this.height = 0;\r\n this._addButtonHover = false;\r\n this.imageClicked = false;\r\n }\r\n FolderBrowser.create = function() {\r\n var temp = new FolderBrowser();\r\n temp.height = 85;\r\n temp.width = 1920;\r\n temp.canvas = document.createElement('canvas');\r\n temp.canvas.width = temp.width;\r\n temp.canvas.height = temp.height;\r\n temp.setup();\r\n temp.loadImages();\r\n return temp;\r\n };\r\n var FolderBrowser$ = {\r\n setup: function() {\r\n this.canvas.addEventListener('click', ss.bind('onClick', this), false);\r\n this.canvas.addEventListener('dblclick', ss.bind('onDoubleClick', this), false);\r\n this.canvas.addEventListener('mousemove', ss.bind('onMouseMove', this), false);\r\n this.canvas.addEventListener('mouseup', ss.bind('onMouseUp', this), false);\r\n this.canvas.addEventListener('mousedown', ss.bind('onMouseDown', this), false);\r\n this.canvas.addEventListener('touchstart', ss.bind('onTouchStart', this), false);\r\n this.canvas.addEventListener('touchmove', ss.bind('onTouchMove', this), false);\r\n this.canvas.addEventListener('touchend', ss.bind('onTouchEnd', this), false);\r\n this.canvas.addEventListener('mouseout', ss.bind('onMouseUp', this), false);\r\n },\r\n onTouchStart: function(e) {\r\n var ev = e;\r\n ev.preventDefault();\r\n this._mouseDown = true;\r\n this._lastX = ev.targetTouches[0].pageX;\r\n this._lastY = ev.targetTouches[0].pageY;\r\n this._indexTouchDown = this._getItemIndexFromCursor(Vector2d.create(ev.targetTouches[0].pageX, ev.targetTouches[0].pageY));\r\n },\r\n onTouchMove: function(e) {\r\n var ev = e;\r\n ev.preventDefault();\r\n if (this._mouseDown) {\r\n var curX = ev.targetTouches[0].pageX - this._lastX;\r\n var curY = ev.targetTouches[0].pageY - this._lastY;\r\n if (this._mouseDown) {\r\n this._dragging = true;\r\n }\r\n if (!this._dragging) {\r\n var newHover = this._getItemIndexFromCursor(Vector2d.create(ev.targetTouches[0].pageX, ev.targetTouches[0].pageY));\r\n if (this._hoverItem !== newHover) {\r\n this._hoverItem = newHover;\r\n }\r\n }\r\n else {\r\n var tiles = Math.round(((ev.targetTouches[0].pageX - this._lastX) + this._startOffset) / this._horzSpacing);\r\n var offset = Math.round(((ev.targetTouches[0].pageX - this._lastX) + this._startOffset) - (tiles * this._horzSpacing));\r\n this._startOffset = offset;\r\n this._startIndex -= tiles;\r\n if (this._startIndex < 0) {\r\n this._startOffset -= (this._horzSpacing * this._startIndex);\r\n this._startIndex = 0;\r\n }\r\n this._lastX = ev.targetTouches[0].pageX;\r\n this._lastY = ev.targetTouches[0].pageY;\r\n }\r\n this.refresh();\r\n }\r\n },\r\n onTouchEnd: function(e) {\r\n var ev = e;\r\n ev.preventDefault();\r\n if (this._dragging) {\r\n this._dragging = false;\r\n this._ignoreClick = true;\r\n }\r\n else if (this._indexTouchDown > -1 && this._mouseDown) {\r\n this._handleClick(this._indexTouchDown);\r\n }\r\n this._startOffset = 0;\r\n this._mouseDown = false;\r\n this.refresh();\r\n },\r\n onClick: function(e) {\r\n if (!this._ignoreClick) {\r\n var index = this._getItemIndexFromCursor(Vector2d.create(e.offsetX, e.offsetY));\r\n this._handleClick(index);\r\n }\r\n else {\r\n this._ignoreClick = false;\r\n }\r\n },\r\n _handleClick: function(index) {\r\n var $this = this;\r\n\r\n if (index > -1) {\r\n if (ss.canCast(this._items[index], Place)) {\r\n var place = this._items[index];\r\n WWTControl.singleton.gotoTarget(place, false, false, true);\r\n return;\r\n }\r\n if (ss.canCast(this._items[index], Imageset)) {\r\n var imageset = this._items[index];\r\n WWTControl.singleton.renderContext.set_backgroundImageset(imageset);\r\n return;\r\n }\r\n if (ss.canCast(this._items[index], Tour)) {\r\n var tour = this._items[index];\r\n WWTControl.singleton.playTour(tour.get_tourUrl());\r\n return;\r\n }\r\n if (ss.canCast(this._items[index], Folder)) {\r\n var folder = this._items[index];\r\n this._startIndex = 0;\r\n folder.childLoadCallback(function() {\r\n $this._items = folder.get_children();\r\n $this.refresh();\r\n });\r\n return;\r\n }\r\n if (ss.canCast(this._items[index], FolderUp)) {\r\n var folderUp = this._items[index];\r\n if (folderUp.parent != null) {\r\n this._startIndex = 0;\r\n folderUp.parent.childLoadCallback(function() {\r\n $this._items = folderUp.parent.get_children();\r\n $this.refresh();\r\n });\r\n }\r\n return;\r\n }\r\n }\r\n return;\r\n },\r\n onDoubleClick: function(e) {\r\n RenderTriangle.renderingOn = !RenderTriangle.renderingOn;\r\n },\r\n onGestureChange: function(e) {\r\n var g = e;\r\n this._mouseDown = false;\r\n var delta = g.scale;\r\n },\r\n onMouseDown: function(e) {\r\n this._mouseDown = true;\r\n this._lastX = Mouse.offsetX(this.canvas, e);\r\n this._lastY = Mouse.offsetY(this.canvas, e);\r\n },\r\n onMouseMove: function(e) {\r\n if (this._mouseDown) {\r\n this._dragging = true;\r\n }\r\n if (!this._dragging) {\r\n var newHover = this._getItemIndexFromCursor(Vector2d.create(Mouse.offsetX(this.canvas, e), Mouse.offsetY(this.canvas, e)));\r\n if (this._hoverItem !== newHover) {\r\n this._hoverItem = newHover;\r\n }\r\n }\r\n else {\r\n var tiles = Math.round(((Mouse.offsetX(this.canvas, e) - this._lastX) + this._startOffset) / this._horzSpacing);\r\n var offset = Math.round(((Mouse.offsetX(this.canvas, e) - this._lastX) + this._startOffset) - (tiles * this._horzSpacing));\r\n this._startOffset = offset;\r\n this._startIndex -= tiles;\r\n if (this._startIndex < 0) {\r\n this._startOffset -= (this._horzSpacing * this._startIndex);\r\n this._startIndex = 0;\r\n }\r\n this._lastX = Mouse.offsetX(this.canvas, e);\r\n this._lastY = Mouse.offsetY(this.canvas, e);\r\n }\r\n this.refresh();\r\n },\r\n onMouseUp: function(e) {\r\n if (this._dragging) {\r\n this._startOffset = 0;\r\n this._dragging = false;\r\n this._ignoreClick = true;\r\n }\r\n this._mouseDown = false;\r\n this.refresh();\r\n },\r\n loadImages: function() {\r\n var $this = this;\r\n\r\n if (!FolderBrowser._imagesLoaded && !FolderBrowser._downloading) {\r\n FolderBrowser._imageLoadCount = 0;\r\n FolderBrowser._imagesLoaded = false;\r\n FolderBrowser._downloading = true;\r\n FolderBrowser._bmpBackground = document.createElement('img');\r\n FolderBrowser._bmpBackground.src = 'images/thumbBackground.png';\r\n FolderBrowser._bmpBackground.addEventListener('load', function(e) {\r\n FolderBrowser._imageLoadCount++;\r\n if (FolderBrowser._imageLoadCount === 5) {\r\n FolderBrowser._downloading = false;\r\n FolderBrowser._imagesLoaded = true;\r\n $this.refresh();\r\n }\r\n }, false);\r\n FolderBrowser._bmpBackgroundHover = document.createElement('img');\r\n FolderBrowser._bmpBackgroundHover.src = 'images/thumbBackgroundHover.png';\r\n FolderBrowser._bmpBackgroundHover.addEventListener('load', function(e) {\r\n FolderBrowser._imageLoadCount++;\r\n if (FolderBrowser._imageLoadCount === 5) {\r\n FolderBrowser._downloading = false;\r\n FolderBrowser._imagesLoaded = true;\r\n $this.refresh();\r\n }\r\n }, false);\r\n FolderBrowser._bmpBackgroundWide = document.createElement('img');\r\n FolderBrowser._bmpBackgroundWide.src = 'images/thumbBackgroundWide.png';\r\n FolderBrowser._bmpBackgroundWide.addEventListener('load', function(e) {\r\n FolderBrowser._imageLoadCount++;\r\n if (FolderBrowser._imageLoadCount === 5) {\r\n FolderBrowser._downloading = false;\r\n FolderBrowser._imagesLoaded = true;\r\n $this.refresh();\r\n }\r\n }, false);\r\n FolderBrowser._bmpBackgroundWideHover = document.createElement('img');\r\n FolderBrowser._bmpBackgroundWideHover.src = 'images/thumbBackgroundWideHover.png';\r\n FolderBrowser._bmpBackgroundWideHover.addEventListener('load', function(e) {\r\n FolderBrowser._imageLoadCount++;\r\n if (FolderBrowser._imageLoadCount === 5) {\r\n FolderBrowser._downloading = false;\r\n FolderBrowser._imagesLoaded = true;\r\n $this.refresh();\r\n }\r\n }, false);\r\n FolderBrowser._bmpDropInsertMarker = document.createElement('img');\r\n FolderBrowser._bmpDropInsertMarker.src = 'images/dragInsertMarker.png';\r\n FolderBrowser._bmpDropInsertMarker.addEventListener('load', function(e) {\r\n FolderBrowser._imageLoadCount++;\r\n if (FolderBrowser._imageLoadCount === 5) {\r\n FolderBrowser._downloading = false;\r\n FolderBrowser._imagesLoaded = true;\r\n $this.refresh();\r\n }\r\n }, false);\r\n }\r\n },\r\n get_thumbnailSize: function() {\r\n return this._thumbnailSize;\r\n },\r\n set_thumbnailSize: function(value) {\r\n this._thumbnailSize = value;\r\n switch (value) {\r\n case 1:\r\n this._horzSpacing = 180;\r\n this._vertSpacing = 75;\r\n this._thumbHeight = 65;\r\n this._thumbWidth = 180;\r\n break;\r\n case 0:\r\n this._horzSpacing = 110;\r\n this._vertSpacing = 75;\r\n this._thumbHeight = 65;\r\n this._thumbWidth = 110;\r\n break;\r\n }\r\n this._updatePaginator();\r\n this.refresh();\r\n return value;\r\n },\r\n refresh: function() {\r\n if (this.width !== window.innerWidth) {\r\n this.width = window.innerWidth;\r\n this.canvas.width = this.canvas.width;\r\n }\r\n this.paint();\r\n },\r\n get_rowCount: function() {\r\n return this._rowCount;\r\n },\r\n set_rowCount: function(value) {\r\n if (this._rowCount !== value) {\r\n this._rowCount = value;\r\n this._updatePaginator();\r\n }\r\n return value;\r\n },\r\n _updatePaginator: function() {\r\n },\r\n get_colCount: function() {\r\n return this._colCount;\r\n },\r\n set_colCount: function(value) {\r\n if (this._colCount !== value) {\r\n this._colCount = value;\r\n this._updatePaginator();\r\n }\r\n return value;\r\n },\r\n get_itemsPerPage: function() {\r\n return this._rowCount * this._colCount;\r\n },\r\n get_currentPage: function() {\r\n return this._startIndex / this.get_itemsPerPage();\r\n },\r\n get_pageCount: function() {\r\n return Math.max(1, ((this._items.length + this.get_itemsPerPage() - 1) + ((this.showAddButton) ? 1 : 0)) / this.get_itemsPerPage());\r\n },\r\n paint: function() {\r\n var $this = this;\r\n\r\n var g = this.canvas.getContext('2d');\r\n g.fillStyle = 'rgb(20, 22, 31)';\r\n g.fillRect(0, 0, this.width, this.height);\r\n if (!FolderBrowser._imagesLoaded) {\r\n return;\r\n }\r\n var netHeight = (this.height - 10 * 2);\r\n var netWidth = (this.width - 10 * 2);\r\n this.set_rowCount(Math.round(Math.max(netHeight / this._thumbHeight, 1)));\r\n this.set_colCount(Math.round(Math.max(netWidth / this._horzSpacing, 1)));\r\n this._horzMultiple = (netWidth + 13) / this.get_colCount();\r\n this._startIndex = Math.round((this._startIndex / this.get_itemsPerPage()) * this.get_itemsPerPage());\r\n var rectf;\r\n var index = this._startIndex;\r\n for (var y = 0; y < this._rowCount; y++) {\r\n for (var x = 0; x < this._colCount; x++) {\r\n if (index >= this._items.length) {\r\n if (!this._items.length || this.showAddButton) {\r\n rectf = Rectangle.create(this.left + x * this._horzMultiple + 3 + this._startOffset, this.top + y * this._vertSpacing, this._thumbWidth - 10, 60);\r\n g.drawImage((this._thumbnailSize === 1) ? FolderBrowser._bmpBackgroundWide : FolderBrowser._bmpBackground, ss.truncate((x * this._horzMultiple)) + this._startOffset, y * this._vertSpacing);\r\n }\r\n break;\r\n }\r\n rectf = Rectangle.create(this.left + x * this._horzMultiple + 3 + this._startOffset, this.top + y * this._vertSpacing, this._thumbWidth - 14, 60);\r\n var textBrush = 'white';\r\n if (index === this._hoverItem || (index === this._selectedItem && this._hoverItem === -1)) {\r\n g.drawImage((this._thumbnailSize === 1) ? FolderBrowser._bmpBackgroundWideHover : FolderBrowser._bmpBackgroundHover, this.left + ss.truncate((x * this._horzMultiple)) + this._startOffset, this.top + y * this._vertSpacing);\r\n textBrush = 'yellow';\r\n }\r\n else {\r\n g.drawImage((this._thumbnailSize === 1) ? FolderBrowser._bmpBackgroundWide : FolderBrowser._bmpBackground, this.left + ss.truncate((x * this._horzMultiple)) + this._startOffset, this.top + y * this._vertSpacing);\r\n }\r\n this._items[index].set_bounds(Rectangle.create((this.left + x * this._horzMultiple) + this._startOffset, this.top + (y * this._vertSpacing), ss.truncate(this._horzMultiple), this._vertSpacing));\r\n try {\r\n var bmpThumb = this._items[index].get_thumbnail();\r\n if (bmpThumb != null) {\r\n g.drawImage(bmpThumb, this.left + (x * this._horzMultiple) + 2 + this._startOffset, this.top + y * this._vertSpacing + 3);\r\n g.strokeStyle = 'rgb(0,0,0)';\r\n g.rect(this.left + ss.truncate((x * this._horzMultiple)) + 2 + this._startOffset, this.top + y * this._vertSpacing + 3, this._items[index].get_thumbnail().width, this._items[index].get_thumbnail().height);\r\n }\r\n else {\r\n this._items[index].set_thumbnail(document.createElement('img'));\r\n this._items[index].get_thumbnail().src = this._items[index].get_thumbnailUrl();\r\n this._items[index].get_thumbnail().addEventListener('load', function(e) {\r\n $this.refresh();\r\n }, false);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n g.fillStyle = textBrush;\r\n g.strokeStyle = textBrush;\r\n g.lineWidth = 1;\r\n g.font = 'normal 8pt Arial';\r\n g.fillText(this._items[index].get_name(), rectf.x, rectf.y + rectf.height, rectf.width);\r\n index++;\r\n }\r\n if (index >= this._items.length) {\r\n break;\r\n }\r\n }\r\n },\r\n _getItemIndexFromCursor: function(testPointIn) {\r\n var testPoint = Vector2d.create(testPointIn.x + this.left, testPointIn.y + this.top);\r\n this.imageClicked = false;\r\n var index = -1;\r\n var xpos = ss.truncate((testPoint.x / this._horzMultiple));\r\n var xPart = ss.truncate((testPoint.x % this._horzMultiple));\r\n if (xpos >= this._colCount) {\r\n return -1;\r\n }\r\n if (xpos < 0) {\r\n return -1;\r\n }\r\n var ypos = ss.truncate((testPoint.y / this._vertSpacing));\r\n var yPart = ss.truncate((testPoint.y % this._vertSpacing));\r\n if (ypos >= this._rowCount) {\r\n return -1;\r\n }\r\n if (ypos < 0) {\r\n return -1;\r\n }\r\n index = this._startIndex + ypos * this._colCount + xpos;\r\n if (index === this._items.length) {\r\n this._addButtonHover = true;\r\n }\r\n else {\r\n this._addButtonHover = false;\r\n }\r\n if (index > this._items.length - 1) {\r\n return -1;\r\n }\r\n if ((this._items[index]).get_isImage() && yPart < 16 && xPart > 78) {\r\n this.imageClicked = true;\r\n }\r\n return index;\r\n },\r\n _addItems: function(list) {\r\n this._items = list;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FolderUp\r\n\r\n function FolderUp() {\r\n this.parent = null;\r\n this._bounds = new Rectangle();\r\n }\r\n var FolderUp$ = {\r\n get_name: function() {\r\n return 'Up Level';\r\n },\r\n get_thumbnail: function() {\r\n return this._thumbnail;\r\n },\r\n set_thumbnail: function(value) {\r\n this._thumbnail = value;\r\n return value;\r\n },\r\n get_thumbnailUrl: function() {\r\n return URLHelpers.singleton.coreStaticUrl('wwtweb/thumbnail.aspx?name=folderup');\r\n },\r\n set_thumbnailUrl: function(value) {\r\n return value;\r\n },\r\n get_bounds: function() {\r\n return this._bounds;\r\n },\r\n set_bounds: function(value) {\r\n this._bounds = value;\r\n return value;\r\n },\r\n get_isImage: function() {\r\n return false;\r\n },\r\n get_isTour: function() {\r\n return false;\r\n },\r\n get_isFolder: function() {\r\n return false;\r\n },\r\n get_isCloudCommunityItem: function() {\r\n return false;\r\n },\r\n get_readOnly: function() {\r\n return false;\r\n },\r\n get_children: function() {\r\n if (this.parent == null) {\r\n return [];\r\n }\r\n else {\r\n return this.parent.get_children();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ShortIndexBuffer\r\n\r\n function ShortIndexBuffer(indexes) {\r\n this.buffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this.buffer);\r\n Tile.prepDevice.bufferData(34963, indexes, 35044);\r\n }\r\n var ShortIndexBuffer$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.IndexBuffer\r\n\r\n function IndexBuffer(indexes) {\r\n this.buffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this.buffer);\r\n Tile.prepDevice.bufferData(34963, indexes, 35044);\r\n }\r\n var IndexBuffer$ = {\r\n dispose: function() {\r\n Tile.prepDevice.bindBuffer(34963, null);\r\n Tile.prepDevice.deleteBuffer(this.buffer);\r\n this.buffer = null;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VertexBufferBase\r\n\r\n function VertexBufferBase() {\r\n }\r\n var VertexBufferBase$ = {\r\n dispose: function() {\r\n Tile.prepDevice.bindBuffer(34962, null);\r\n Tile.prepDevice.deleteBuffer(this.vertexBuffer);\r\n this.vertexBuffer = null;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Dates\r\n\r\n function Dates(start, end) {\r\n this.startDate = 0;\r\n this.endDate = 0;\r\n this.startDate = start;\r\n this.endDate = end;\r\n }\r\n Dates.empty = function() {\r\n return new Dates(0, 0);\r\n };\r\n var Dates$ = {\r\n copy: function() {\r\n return new Dates(this.startDate, this.endDate);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SimpleLineList\r\n\r\n function SimpleLineList() {\r\n this._zBuffer = true;\r\n this._linePoints = [];\r\n this._usingLocalCenter = false;\r\n this.sky = true;\r\n this.aaFix = true;\r\n this.pure2D = false;\r\n this.viewTransform = Matrix3d.get_identity();\r\n this._lineBuffers = [];\r\n this._lineBufferCounts = [];\r\n this.useLocalCenters = false;\r\n }\r\n var SimpleLineList$ = {\r\n get_depthBuffered: function() {\r\n return this._zBuffer;\r\n },\r\n set_depthBuffered: function(value) {\r\n this._zBuffer = value;\r\n return value;\r\n },\r\n addLine: function(v1, v2) {\r\n this._linePoints.push(v1);\r\n this._linePoints.push(v2);\r\n this._emptyLineBuffer();\r\n },\r\n clear: function() {\r\n this._linePoints.length = 0;\r\n this._emptyLineBuffer();\r\n },\r\n drawLines: function(renderContext, opacity, color) {\r\n if (this._linePoints.length < 2) {\r\n return;\r\n }\r\n this._initLineBuffer(renderContext);\r\n var count = this._linePoints.length;\r\n if (renderContext.gl == null) {\r\n var viewPoint = Vector3d._transformCoordinate(renderContext.get_viewPoint(), this.viewTransform);\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.strokeStyle = color.toString();\r\n ctx.lineWidth = 2;\r\n ctx.globalAlpha = 0.25;\r\n var firstPoint = new Vector3d();\r\n var secondPoint = new Vector3d();\r\n for (var i = 0; i < count; i += 2) {\r\n firstPoint = renderContext.WVP.transform(this._linePoints[i]);\r\n secondPoint = renderContext.WVP.transform(this._linePoints[i + 1]);\r\n if (Vector3d.dot(this._linePoints[i], viewPoint) > 0.6) {\r\n ctx.beginPath();\r\n ctx.moveTo(firstPoint.x, firstPoint.y);\r\n ctx.lineTo(secondPoint.x, secondPoint.y);\r\n ctx.stroke();\r\n }\r\n }\r\n ctx.restore();\r\n }\r\n else {\r\n var $enum1 = ss.enumerate(this._lineBuffers);\r\n while ($enum1.moveNext()) {\r\n var lineBuffer = $enum1.current;\r\n if (this.pure2D) {\r\n SimpleLineShader2D.use(renderContext, lineBuffer.vertexBuffer, color, this._zBuffer);\r\n }\r\n else {\r\n SimpleLineShader.use(renderContext, lineBuffer.vertexBuffer, color, this._zBuffer);\r\n }\r\n renderContext.gl.drawArrays(1, 0, lineBuffer.count);\r\n }\r\n }\r\n },\r\n _initLineBuffer: function(renderContext) {\r\n if (renderContext.gl != null) {\r\n if (!this._lineBuffers.length) {\r\n var count = this._linePoints.length;\r\n var lineBuffer = null;\r\n var linePointList = null;\r\n this._localCenter = new Vector3d();\r\n if (this.get_depthBuffered()) {\r\n var $enum1 = ss.enumerate(this._linePoints);\r\n while ($enum1.moveNext()) {\r\n var point = $enum1.current;\r\n this._localCenter.add(point);\r\n }\r\n this._localCenter.x /= count;\r\n this._localCenter.y /= count;\r\n this._localCenter.z /= count;\r\n }\r\n var countLeft = count;\r\n var index = 0;\r\n var counter = 0;\r\n var temp;\r\n var $enum2 = ss.enumerate(this._linePoints);\r\n while ($enum2.moveNext()) {\r\n var point = $enum2.current;\r\n if (counter >= 100000 || linePointList == null) {\r\n if (lineBuffer != null) {\r\n lineBuffer.unlock();\r\n }\r\n var thisCount = Math.min(100000, countLeft);\r\n countLeft -= thisCount;\r\n lineBuffer = new PositionVertexBuffer(thisCount);\r\n linePointList = lineBuffer.lock();\r\n this._lineBuffers.push(lineBuffer);\r\n this._lineBufferCounts.push(thisCount);\r\n counter = 0;\r\n }\r\n if (this.useLocalCenters) {\r\n temp = Vector3d.subtractVectors(point, this._localCenter);\r\n linePointList[counter] = temp;\r\n }\r\n else {\r\n linePointList[counter] = point;\r\n }\r\n index++;\r\n counter++;\r\n }\r\n if (lineBuffer != null) {\r\n lineBuffer.unlock();\r\n }\r\n }\r\n }\r\n },\r\n _emptyLineBuffer: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.OrbitLineList\r\n\r\n function OrbitLineList() {\r\n this._zBuffer = true;\r\n this._linePoints = [];\r\n this._lineColors = [];\r\n this.sky = true;\r\n this.aaFix = true;\r\n this.viewTransform = Matrix3d.get_identity();\r\n this._lineBuffers = [];\r\n this._lineBufferCounts = [];\r\n this.useLocalCenters = false;\r\n }\r\n var OrbitLineList$ = {\r\n get_depthBuffered: function() {\r\n return this._zBuffer;\r\n },\r\n set_depthBuffered: function(value) {\r\n this._zBuffer = value;\r\n return value;\r\n },\r\n addLine: function(v1, v2, c1, c2) {\r\n this._linePoints.push(v1);\r\n this._lineColors.push(c1);\r\n this._linePoints.push(v2);\r\n this._lineColors.push(c2);\r\n this._emptyLineBuffer();\r\n },\r\n clear: function() {\r\n this._linePoints.length = 0;\r\n this._emptyLineBuffer();\r\n },\r\n drawLines: function(renderContext, opacity, color) {\r\n if (this._linePoints.length < 2) {\r\n return;\r\n }\r\n this._initLineBuffer(renderContext);\r\n var count = this._linePoints.length;\r\n var $enum1 = ss.enumerate(this._lineBuffers);\r\n while ($enum1.moveNext()) {\r\n var lineBuffer = $enum1.current;\r\n OrbitLineShader.use(renderContext, lineBuffer.vertexBuffer, color);\r\n renderContext.gl.drawArrays(1, 0, lineBuffer.count);\r\n }\r\n },\r\n _initLineBuffer: function(renderContext) {\r\n if (renderContext.gl != null) {\r\n if (!this._lineBuffers.length) {\r\n var count = this._linePoints.length;\r\n var lineBuffer = null;\r\n var linePointList = null;\r\n this._localCenter = new Vector3d();\r\n if (this.get_depthBuffered()) {\r\n var $enum1 = ss.enumerate(this._linePoints);\r\n while ($enum1.moveNext()) {\r\n var point = $enum1.current;\r\n this._localCenter.add(point);\r\n }\r\n this._localCenter.x /= count;\r\n this._localCenter.y /= count;\r\n this._localCenter.z /= count;\r\n }\r\n var countLeft = count;\r\n var index = 0;\r\n var counter = 0;\r\n var temp;\r\n var $enum2 = ss.enumerate(this._linePoints);\r\n while ($enum2.moveNext()) {\r\n var point = $enum2.current;\r\n if (counter >= 100000 || linePointList == null) {\r\n if (lineBuffer != null) {\r\n lineBuffer.unlock();\r\n }\r\n var thisCount = Math.min(100000, countLeft);\r\n countLeft -= thisCount;\r\n lineBuffer = new PositionColoredVertexBuffer(thisCount);\r\n linePointList = lineBuffer.lock();\r\n this._lineBuffers.push(lineBuffer);\r\n this._lineBufferCounts.push(thisCount);\r\n counter = 0;\r\n }\r\n if (this.useLocalCenters) {\r\n temp = Vector3d.subtractVectors(point, this._localCenter);\r\n linePointList[counter] = new PositionColored(temp, this._lineColors[index]);\r\n }\r\n else {\r\n linePointList[counter] = new PositionColored(point, this._lineColors[index]);\r\n }\r\n index++;\r\n counter++;\r\n }\r\n if (lineBuffer != null) {\r\n lineBuffer.unlock();\r\n }\r\n }\r\n }\r\n },\r\n _emptyLineBuffer: function() {\r\n var $enum1 = ss.enumerate(this._lineBuffers);\r\n while ($enum1.moveNext()) {\r\n var lineBuffer = $enum1.current;\r\n lineBuffer.dispose();\r\n }\r\n this._lineBuffers.length = 0;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.LineList\r\n\r\n function LineList() {\r\n this._zBuffer = true;\r\n this.timeSeries = false;\r\n this.showFarSide = true;\r\n this.sky = false;\r\n this.decay = 0;\r\n this.useNonRotatingFrame = false;\r\n this.jNow = 0;\r\n this._linePoints = [];\r\n this._lineColors = [];\r\n this._lineDates = [];\r\n this._usingLocalCenter = true;\r\n this._lineBuffers = [];\r\n this._lineBufferCounts = [];\r\n }\r\n var LineList$ = {\r\n get_depthBuffered: function() {\r\n return this._zBuffer;\r\n },\r\n set_depthBuffered: function(value) {\r\n this._zBuffer = value;\r\n return value;\r\n },\r\n addLine: function(v1, v2, color, date) {\r\n this._linePoints.push(v1);\r\n this._linePoints.push(v2);\r\n this._lineColors.push(color);\r\n this._lineDates.push(date);\r\n this._emptyLineBuffer();\r\n },\r\n addLineNoDate: function(v1, v2, color) {\r\n this._linePoints.push(v1);\r\n this._linePoints.push(v2);\r\n this._lineColors.push(color);\r\n this._lineDates.push(new Dates(0, 0));\r\n this._emptyLineBuffer();\r\n },\r\n clear: function() {\r\n this._linePoints.length = 0;\r\n this._lineColors.length = 0;\r\n this._lineDates.length = 0;\r\n },\r\n drawLines: function(renderContext, opacity) {\r\n if (this._linePoints.length < 2 || opacity <= 0) {\r\n return;\r\n }\r\n if (renderContext.gl == null) {\r\n }\r\n else {\r\n this._initLineBuffer();\r\n var $enum1 = ss.enumerate(this._lineBuffers);\r\n while ($enum1.moveNext()) {\r\n var lineBuffer = $enum1.current;\r\n LineShaderNormalDates.use(renderContext, lineBuffer.vertexBuffer, Color.fromArgb(255, 255, 255, 255), this._zBuffer, this.jNow, (this.timeSeries) ? this.decay : 0);\r\n renderContext.gl.drawArrays(1, 0, lineBuffer.count);\r\n }\r\n }\r\n },\r\n _initLineBuffer: function() {\r\n if (!this._lineBuffers.length) {\r\n var count = this._linePoints.length;\r\n var lineBuffer = null;\r\n var linePointList = null;\r\n var countLeft = count;\r\n var index = 0;\r\n var counter = 0;\r\n var temp;\r\n var $enum1 = ss.enumerate(this._linePoints);\r\n while ($enum1.moveNext()) {\r\n var point = $enum1.current;\r\n if (counter >= 100000 || linePointList == null) {\r\n if (lineBuffer != null) {\r\n lineBuffer.unlock();\r\n }\r\n var thisCount = Math.min(100000, countLeft);\r\n countLeft -= thisCount;\r\n lineBuffer = new TimeSeriesLineVertexBuffer(thisCount);\r\n linePointList = lineBuffer.lock();\r\n this._lineBuffers.push(lineBuffer);\r\n this._lineBufferCounts.push(thisCount);\r\n counter = 0;\r\n }\r\n var div2 = ss.truncate((index / 2));\r\n temp = point;\r\n linePointList[counter] = new TimeSeriesLineVertex();\r\n linePointList[counter].position = temp;\r\n linePointList[counter].normal = point;\r\n linePointList[counter].tu = this._lineDates[div2].startDate;\r\n linePointList[counter].tv = this._lineDates[div2].endDate;\r\n linePointList[counter].set_color(this._lineColors[div2]);\r\n index++;\r\n counter++;\r\n }\r\n if (lineBuffer != null) {\r\n lineBuffer.unlock();\r\n }\r\n }\r\n },\r\n _emptyLineBuffer: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TriangleList\r\n\r\n function TriangleList() {\r\n this._trianglePoints = [];\r\n this._triangleColors = [];\r\n this._triangleDates = [];\r\n this.timeSeries = false;\r\n this.showFarSide = false;\r\n this.sky = false;\r\n this.depthBuffered = true;\r\n this.writeZbuffer = false;\r\n this.decay = 0;\r\n this.autoTime = true;\r\n this.jNow = 0;\r\n this._dataToDraw = false;\r\n this._triangleBuffers = [];\r\n this._triangleBufferCounts = [];\r\n }\r\n var TriangleList$ = {\r\n addTriangle: function(v1, v2, v3, color, date) {\r\n this._trianglePoints.push(v1);\r\n this._trianglePoints.push(v2);\r\n this._trianglePoints.push(v3);\r\n this._triangleColors.push(color);\r\n this._triangleDates.push(date);\r\n this._emptyTriangleBuffer();\r\n },\r\n addSubdividedTriangles: function(v1, v2, v3, color, date, subdivisions) {\r\n subdivisions--;\r\n if (subdivisions < 0) {\r\n this.addTriangle(v1, v2, v3, color, date);\r\n }\r\n else {\r\n var v12;\r\n var v23;\r\n var v31;\r\n v12 = Vector3d.midPointByLength(v1, v2);\r\n v23 = Vector3d.midPointByLength(v2, v3);\r\n v31 = Vector3d.midPointByLength(v3, v1);\r\n this.addSubdividedTriangles(v1, v12, v31, color, date, subdivisions);\r\n this.addSubdividedTriangles(v12, v23, v31, color, date, subdivisions);\r\n this.addSubdividedTriangles(v12, v2, v23, color, date, subdivisions);\r\n this.addSubdividedTriangles(v23, v3, v31, color, date, subdivisions);\r\n }\r\n },\r\n addQuad: function(v1, v2, v3, v4, color, date) {\r\n this._trianglePoints.push(v1);\r\n this._trianglePoints.push(v3);\r\n this._trianglePoints.push(v2);\r\n this._trianglePoints.push(v2);\r\n this._trianglePoints.push(v3);\r\n this._trianglePoints.push(v4);\r\n this._triangleColors.push(color);\r\n this._triangleDates.push(date);\r\n this._triangleColors.push(color);\r\n this._triangleDates.push(date);\r\n this._emptyTriangleBuffer();\r\n },\r\n clear: function() {\r\n this._triangleColors.length = 0;\r\n this._trianglePoints.length = 0;\r\n this._triangleDates.length = 0;\r\n this._emptyTriangleBuffer();\r\n },\r\n _emptyTriangleBuffer: function() {\r\n },\r\n _initTriangleBuffer: function() {\r\n if (!this._triangleBuffers.length) {\r\n var count = this._trianglePoints.length;\r\n var triangleBuffer = null;\r\n var triPointList = null;\r\n var countLeft = count;\r\n var index = 0;\r\n var counter = 0;\r\n var $enum1 = ss.enumerate(this._trianglePoints);\r\n while ($enum1.moveNext()) {\r\n var point = $enum1.current;\r\n if (counter >= 90000 || triangleBuffer == null) {\r\n if (triangleBuffer != null) {\r\n triangleBuffer.unlock();\r\n }\r\n var thisCount = Math.min(90000, countLeft);\r\n countLeft -= thisCount;\r\n triangleBuffer = new TimeSeriesLineVertexBuffer(thisCount);\r\n this._triangleBuffers.push(triangleBuffer);\r\n this._triangleBufferCounts.push(thisCount);\r\n triPointList = triangleBuffer.lock();\r\n counter = 0;\r\n }\r\n triPointList[counter] = new TimeSeriesLineVertex();\r\n triPointList[counter].position = point;\r\n triPointList[counter].normal = point;\r\n var div3 = ss.truncate((index / 3));\r\n triPointList[counter].set_color(this._triangleColors[div3]);\r\n triPointList[counter].tu = this._triangleDates[div3].startDate;\r\n triPointList[counter].tv = this._triangleDates[div3].endDate;\r\n index++;\r\n counter++;\r\n }\r\n if (triangleBuffer != null) {\r\n triangleBuffer.unlock();\r\n }\r\n this._triangleColors.length = 0;\r\n this._triangleDates.length = 0;\r\n this._trianglePoints.length = 0;\r\n this._dataToDraw = true;\r\n }\r\n },\r\n draw: function(renderContext, opacity, cull) {\r\n if (this._trianglePoints.length < 1 && !this._dataToDraw) {\r\n return;\r\n }\r\n if (renderContext.gl == null) {\r\n }\r\n else {\r\n this._initTriangleBuffer();\r\n var $enum1 = ss.enumerate(this._triangleBuffers);\r\n while ($enum1.moveNext()) {\r\n var triBuffer = $enum1.current;\r\n LineShaderNormalDates.use(renderContext, triBuffer.vertexBuffer, Color.fromArgb(255, 255, 255, 255), this.depthBuffered, this.jNow, (this.timeSeries) ? this.decay : 0);\r\n renderContext.gl.drawArrays(4, 0, triBuffer.count);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TriangleFanList\r\n\r\n function TriangleFanList() {\r\n this._zBuffer = true;\r\n this.timeSeries = false;\r\n this.decay = 0;\r\n this.jNow = 0;\r\n this._shapes = [];\r\n this._colors = [];\r\n this._dates = [];\r\n this._buffers = [];\r\n this._bufferCounts = [];\r\n }\r\n var TriangleFanList$ = {\r\n get_depthBuffered: function() {\r\n return this._zBuffer;\r\n },\r\n set_depthBuffered: function(value) {\r\n this._zBuffer = value;\r\n return value;\r\n },\r\n addShape: function(shapePoints, color, date) {\r\n this._shapes.push(shapePoints);\r\n this._colors.push(color);\r\n this._dates.push(date);\r\n },\r\n draw: function(renderContext, opacity) {\r\n if (opacity <= 0) {\r\n return;\r\n }\r\n if (renderContext.gl != null) {\r\n this._initBuffer();\r\n var $enum1 = ss.enumerate(this._buffers);\r\n while ($enum1.moveNext()) {\r\n var buffer = $enum1.current;\r\n LineShaderNormalDates.use(renderContext, buffer.vertexBuffer, Color.fromArgb(255, 255, 255, 255), this._zBuffer, this.jNow, (this.timeSeries) ? this.decay : 0);\r\n renderContext.gl.drawArrays(6, 0, buffer.count);\r\n }\r\n }\r\n },\r\n _initBuffer: function() {\r\n if (this._buffers.length !== this._shapes.length) {\r\n this._buffers.length = 0;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._shapes);\r\n while ($enum1.moveNext()) {\r\n var shape = $enum1.current;\r\n var buffer = new TimeSeriesLineVertexBuffer(shape.length);\r\n var pointList = buffer.lock();\r\n this._buffers.push(buffer);\r\n this._bufferCounts.push(shape.length);\r\n var counter = 0;\r\n var $enum2 = ss.enumerate(shape);\r\n while ($enum2.moveNext()) {\r\n var point = $enum2.current;\r\n pointList[counter] = new TimeSeriesLineVertex();\r\n pointList[counter].position = point;\r\n pointList[counter].tu = this._dates[index].startDate;\r\n pointList[counter].tv = this._dates[index].endDate;\r\n pointList[counter].set_color(this._colors[index]);\r\n counter++;\r\n }\r\n index++;\r\n if (buffer != null) {\r\n buffer.unlock();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PointList\r\n\r\n function PointList(device) {\r\n this._points = [];\r\n this._colors = [];\r\n this._dates = [];\r\n this._sizes = [];\r\n this.timeSeries = false;\r\n this.showFarSide = false;\r\n this.sky = false;\r\n this.depthBuffered = true;\r\n this.decay = 0;\r\n this.scale = 1;\r\n this.autoTime = true;\r\n this.jNow = 0;\r\n this._dataToDraw = false;\r\n this.items = [];\r\n this._imageReady = false;\r\n this._init = false;\r\n this.minSize = 2;\r\n this._pointBuffers = [];\r\n this._pointBufferCounts = [];\r\n this._device = device;\r\n }\r\n var PointList$ = {\r\n addPoint: function(v1, color, date, size) {\r\n this._points.push(v1);\r\n this._colors.push(color._clone());\r\n this._dates.push(date);\r\n this._sizes.push(size);\r\n this._emptyPointBuffer();\r\n },\r\n clear: function() {\r\n this._colors.length = 0;\r\n this._points.length = 0;\r\n this._dates.length = 0;\r\n this._sizes.length = 0;\r\n this._emptyPointBuffer();\r\n },\r\n _emptyPointBuffer: function() {\r\n var $enum1 = ss.enumerate(this._pointBuffers);\r\n while ($enum1.moveNext()) {\r\n var pointBuffer = $enum1.current;\r\n pointBuffer.dispose();\r\n }\r\n this._pointBuffers.length = 0;\r\n this._init = false;\r\n },\r\n _initBuffer: function(renderContext) {\r\n var $this = this;\r\n\r\n if (!this._init) {\r\n if (renderContext.gl == null) {\r\n this._starProfile = document.createElement('img');\r\n this._starProfile.addEventListener('load', function(e) {\r\n $this._imageReady = true;\r\n }, false);\r\n this._starProfile.src = URLHelpers.singleton.engineAssetUrl('StarProfileAlpha.png');\r\n this._worldList = new Array(this._points.length);\r\n this._transformedList = new Array(this._points.length);\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._points);\r\n while ($enum1.moveNext()) {\r\n var pnt = $enum1.current;\r\n var item = new DataItem();\r\n item.location = pnt;\r\n item.tranformed = new Vector3d();\r\n item.size = this._sizes[index];\r\n item.color = this._colors[index];\r\n this._worldList[index] = item.location;\r\n this._transformedList[index] = item.tranformed;\r\n this.items.push(item);\r\n index++;\r\n }\r\n }\r\n else {\r\n if (!this._pointBuffers.length) {\r\n if (PointList.starTexture == null) {\r\n PointList.starTexture = Planets.loadPlanetTexture(URLHelpers.singleton.engineAssetUrl('StarProfileAlpha.png'));\r\n }\r\n var count = this._points.length;\r\n var pointBuffer = null;\r\n var pointList = null;\r\n var countLeft = count;\r\n var index = 0;\r\n var counter = 0;\r\n var $enum2 = ss.enumerate(this._points);\r\n while ($enum2.moveNext()) {\r\n var point = $enum2.current;\r\n if (counter >= 100000 || pointList == null) {\r\n if (pointBuffer != null) {\r\n pointBuffer.unlock();\r\n }\r\n var thisCount = Math.min(100000, countLeft);\r\n countLeft -= thisCount;\r\n pointBuffer = new TimeSeriesPointVertexBuffer(thisCount);\r\n pointList = pointBuffer.lock();\r\n this._pointBuffers.push(pointBuffer);\r\n this._pointBufferCounts.push(thisCount);\r\n counter = 0;\r\n }\r\n pointList[counter] = new TimeSeriesPointVertex();\r\n pointList[counter].position = point;\r\n pointList[counter].pointSize = this._sizes[index];\r\n pointList[counter].tu = this._dates[index].startDate;\r\n pointList[counter].tv = this._dates[index].endDate;\r\n pointList[counter].set_color(this._colors[index]);\r\n index++;\r\n counter++;\r\n }\r\n if (pointBuffer != null) {\r\n pointBuffer.unlock();\r\n }\r\n }\r\n }\r\n this._init = true;\r\n }\r\n },\r\n draw: function(renderContext, opacity, cull) {\r\n this._initBuffer(renderContext);\r\n if (renderContext.gl == null) {\r\n if (!this._imageReady) {\r\n return;\r\n }\r\n renderContext.device.save();\r\n renderContext.WVP.projectArrayToScreen(this._worldList, this._transformedList);\r\n var ctx = renderContext.device;\r\n ctx.globalAlpha = 0.4;\r\n var width = renderContext.width;\r\n var height = renderContext.height;\r\n var viewPoint = Vector3d.makeCopy(renderContext.get_viewPoint());\r\n var scaleFactor = renderContext.get_fovScale() / 100;\r\n var $enum1 = ss.enumerate(this.items);\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (item.tranformed.z < 1) {\r\n var x = item.tranformed.x;\r\n var y = item.tranformed.y;\r\n var size = 0.1 * item.size / scaleFactor;\r\n var half = size / 2;\r\n if (x > -half && x < width + half && y > -half && y < height + half) {\r\n ctx.beginPath();\r\n ctx.fillStyle = item.color.toFormat();\r\n ctx.arc(x, y, size, 0, Math.PI * 2, true);\r\n ctx.fill();\r\n }\r\n }\r\n }\r\n renderContext.device.restore();\r\n }\r\n else {\r\n var zero = new Vector3d();\r\n var matInv = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n matInv.invert();\r\n var cam = Vector3d._transformCoordinate(zero, matInv);\r\n var $enum2 = ss.enumerate(this._pointBuffers);\r\n while ($enum2.moveNext()) {\r\n var pointBuffer = $enum2.current;\r\n TimeSeriesPointSpriteShader.use(renderContext, pointBuffer.vertexBuffer, PointList.starTexture.texture2d, Color.fromArgb(255 * opacity, 255, 255, 255), this.depthBuffered, this.jNow, (this.timeSeries) ? this.decay : 0, cam, (this.scale * (renderContext.height / 960)), this.minSize, this.showFarSide, this.sky);\r\n renderContext.gl.drawArrays(0, 0, pointBuffer.count);\r\n }\r\n }\r\n },\r\n drawTextured: function(renderContext, texture, opacity) {\r\n this._initBuffer(renderContext);\r\n var zero = new Vector3d();\r\n var matInv = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n matInv.invert();\r\n var cam = Vector3d._transformCoordinate(zero, matInv);\r\n var $enum1 = ss.enumerate(this._pointBuffers);\r\n while ($enum1.moveNext()) {\r\n var pointBuffer = $enum1.current;\r\n TimeSeriesPointSpriteShader.use(renderContext, pointBuffer.vertexBuffer, texture, Color.fromArgb(255 * opacity, 255, 255, 255), this.depthBuffered, this.jNow, this.decay, cam, (this.scale * (renderContext.height / 960)), this.minSize, this.showFarSide, this.sky);\r\n renderContext.gl.drawArrays(0, 0, pointBuffer.count);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TimeSeriesLineVertex\r\n\r\n function TimeSeriesLineVertex() {\r\n this.position = new Vector3d();\r\n this.normal = new Vector3d();\r\n this.tu = 0;\r\n this.tv = 0;\r\n }\r\n TimeSeriesLineVertex.create = function(position, normal, time, color) {\r\n var temp = new TimeSeriesLineVertex();\r\n temp.position = position;\r\n temp.normal = normal;\r\n temp.tu = time;\r\n temp.tv = 0;\r\n temp.color = color;\r\n return temp;\r\n };\r\n var TimeSeriesLineVertex$ = {\r\n get_color: function() {\r\n return this.color;\r\n },\r\n set_color: function(value) {\r\n this.color = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TimeSeriesPointVertex\r\n\r\n function TimeSeriesPointVertex() {\r\n this.pointSize = 0;\r\n this.tu = 0;\r\n this.tv = 0;\r\n }\r\n TimeSeriesPointVertex.create = function(position, size, time, color) {\r\n var tmp = new TimeSeriesPointVertex();\r\n tmp.position = position;\r\n tmp.pointSize = size;\r\n tmp.tu = time;\r\n tmp.tv = 0;\r\n tmp.color = color;\r\n return tmp;\r\n };\r\n var TimeSeriesPointVertex$ = {\r\n get_color: function() {\r\n return this.color;\r\n },\r\n set_color: function(value) {\r\n this.color = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SimpleLineShader\r\n\r\n function SimpleLineShader() {\r\n }\r\n SimpleLineShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision highp float; \\n' + ' uniform vec4 lineColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_FragColor = lineColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' } \\n' + ' \\n';\r\n SimpleLineShader._frag = gl.createShader(35632);\r\n gl.shaderSource(SimpleLineShader._frag, fragShaderText);\r\n gl.compileShader(SimpleLineShader._frag);\r\n var stat = gl.getShaderParameter(SimpleLineShader._frag, 35713);\r\n SimpleLineShader._vert = gl.createShader(35633);\r\n gl.shaderSource(SimpleLineShader._vert, vertexShaderText);\r\n gl.compileShader(SimpleLineShader._vert);\r\n var stat1 = gl.getShaderParameter(SimpleLineShader._vert, 35713);\r\n SimpleLineShader._prog = gl.createProgram();\r\n gl.attachShader(SimpleLineShader._prog, SimpleLineShader._vert);\r\n gl.attachShader(SimpleLineShader._prog, SimpleLineShader._frag);\r\n gl.linkProgram(SimpleLineShader._prog);\r\n var errcode = gl.getProgramParameter(SimpleLineShader._prog, 35714);\r\n gl.useProgram(SimpleLineShader._prog);\r\n SimpleLineShader.vertLoc = gl.getAttribLocation(SimpleLineShader._prog, 'aVertexPosition');\r\n SimpleLineShader.lineColorLoc = gl.getUniformLocation(SimpleLineShader._prog, 'lineColor');\r\n SimpleLineShader.projMatLoc = gl.getUniformLocation(SimpleLineShader._prog, 'uPMatrix');\r\n SimpleLineShader.mvMatLoc = gl.getUniformLocation(SimpleLineShader._prog, 'uMVMatrix');\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n SimpleLineShader.initialized = true;\r\n };\r\n SimpleLineShader.use = function(renderContext, vertex, lineColor, useDepth) {\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!SimpleLineShader.initialized) {\r\n SimpleLineShader.init(renderContext);\r\n }\r\n gl.useProgram(SimpleLineShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(SimpleLineShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(SimpleLineShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform4f(SimpleLineShader.lineColorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, 1);\r\n if (renderContext.space || !useDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.enableVertexAttribArray(SimpleLineShader.vertLoc);\r\n gl.bindBuffer(34962, vertex);\r\n gl.bindBuffer(34963, null);\r\n gl.vertexAttribPointer(SimpleLineShader.vertLoc, 3, 5126, false, 0, 0);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var SimpleLineShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.SimpleLineShader2D\r\n\r\n function SimpleLineShader2D() {\r\n }\r\n SimpleLineShader2D.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision highp float; \\n' + ' uniform vec4 lineColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_FragColor = lineColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = vec4(aVertexPosition, 1.0); \\n' + ' } \\n' + ' \\n';\r\n SimpleLineShader2D._frag = gl.createShader(35632);\r\n gl.shaderSource(SimpleLineShader2D._frag, fragShaderText);\r\n gl.compileShader(SimpleLineShader2D._frag);\r\n var stat = gl.getShaderParameter(SimpleLineShader2D._frag, 35713);\r\n SimpleLineShader2D._vert = gl.createShader(35633);\r\n gl.shaderSource(SimpleLineShader2D._vert, vertexShaderText);\r\n gl.compileShader(SimpleLineShader2D._vert);\r\n var stat1 = gl.getShaderParameter(SimpleLineShader2D._vert, 35713);\r\n SimpleLineShader2D._prog = gl.createProgram();\r\n gl.attachShader(SimpleLineShader2D._prog, SimpleLineShader2D._vert);\r\n gl.attachShader(SimpleLineShader2D._prog, SimpleLineShader2D._frag);\r\n gl.linkProgram(SimpleLineShader2D._prog);\r\n var errcode = gl.getProgramParameter(SimpleLineShader2D._prog, 35714);\r\n gl.useProgram(SimpleLineShader2D._prog);\r\n SimpleLineShader2D.vertLoc = gl.getAttribLocation(SimpleLineShader2D._prog, 'aVertexPosition');\r\n SimpleLineShader2D.lineColorLoc = gl.getUniformLocation(SimpleLineShader2D._prog, 'lineColor');\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n SimpleLineShader2D.initialized = true;\r\n };\r\n SimpleLineShader2D.use = function(renderContext, vertex, lineColor, useDepth) {\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!SimpleLineShader2D.initialized) {\r\n SimpleLineShader2D.init(renderContext);\r\n }\r\n gl.useProgram(SimpleLineShader2D._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform4f(SimpleLineShader2D.lineColorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, 1);\r\n if (renderContext.space || !useDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.enableVertexAttribArray(SimpleLineShader2D.vertLoc);\r\n gl.bindBuffer(34962, vertex);\r\n gl.bindBuffer(34963, null);\r\n gl.vertexAttribPointer(SimpleLineShader2D.vertLoc, 3, 5126, false, 0, 0);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var SimpleLineShader2D$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.OrbitLineShader\r\n\r\n function OrbitLineShader() {\r\n }\r\n OrbitLineShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision highp float; \\n' + ' uniform vec4 lineColor; \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_FragColor = lineColor * vColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec4 aVertexColor; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vColor = aVertexColor; \\n' + ' } \\n' + ' \\n';\r\n OrbitLineShader._frag = gl.createShader(35632);\r\n gl.shaderSource(OrbitLineShader._frag, fragShaderText);\r\n gl.compileShader(OrbitLineShader._frag);\r\n var stat = gl.getShaderParameter(OrbitLineShader._frag, 35713);\r\n OrbitLineShader._vert = gl.createShader(35633);\r\n gl.shaderSource(OrbitLineShader._vert, vertexShaderText);\r\n gl.compileShader(OrbitLineShader._vert);\r\n var stat1 = gl.getShaderParameter(OrbitLineShader._vert, 35713);\r\n OrbitLineShader._prog = gl.createProgram();\r\n gl.attachShader(OrbitLineShader._prog, OrbitLineShader._vert);\r\n gl.attachShader(OrbitLineShader._prog, OrbitLineShader._frag);\r\n gl.linkProgram(OrbitLineShader._prog);\r\n var errcode = gl.getProgramParameter(OrbitLineShader._prog, 35714);\r\n gl.useProgram(OrbitLineShader._prog);\r\n OrbitLineShader.vertLoc = gl.getAttribLocation(OrbitLineShader._prog, 'aVertexPosition');\r\n OrbitLineShader.colorLoc = gl.getAttribLocation(OrbitLineShader._prog, 'aVertexColor');\r\n OrbitLineShader.lineColorLoc = gl.getUniformLocation(OrbitLineShader._prog, 'lineColor');\r\n OrbitLineShader.projMatLoc = gl.getUniformLocation(OrbitLineShader._prog, 'uPMatrix');\r\n OrbitLineShader.mvMatLoc = gl.getUniformLocation(OrbitLineShader._prog, 'uMVMatrix');\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n OrbitLineShader.initialized = true;\r\n };\r\n OrbitLineShader.use = function(renderContext, vertex, lineColor) {\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!OrbitLineShader.initialized) {\r\n OrbitLineShader.init(renderContext);\r\n }\r\n gl.useProgram(OrbitLineShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(OrbitLineShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(OrbitLineShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform4f(OrbitLineShader.lineColorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, 1);\r\n if (renderContext.space) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.bindBuffer(34963, null);\r\n gl.enableVertexAttribArray(OrbitLineShader.vertLoc);\r\n gl.enableVertexAttribArray(OrbitLineShader.colorLoc);\r\n gl.vertexAttribPointer(OrbitLineShader.vertLoc, 3, 5126, false, 28, 0);\r\n gl.vertexAttribPointer(OrbitLineShader.colorLoc, 4, 5126, false, 28, 12);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var OrbitLineShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.LineShaderNormalDates\r\n\r\n function LineShaderNormalDates() {\r\n }\r\n LineShaderNormalDates.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision highp float; \\n' + ' uniform vec4 lineColor; \\n' + ' varying lowp vec4 vColor; \\n' + ' void main(void) \\n' + ' { \\n' + ' gl_FragColor = lineColor * vColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec4 aVertexColor; \\n' + ' attribute vec2 aTime; \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' uniform float jNow; \\n' + ' uniform float decay; \\n' + ' \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' void main(void) \\n' + ' { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' float dAlpha = 1.0; \\n' + ' if ( decay > 0.0) \\n' + ' { \\n' + ' dAlpha = 1.0 - ((jNow - aTime.y) / decay); \\n ' + ' if (dAlpha > 1.0 ) \\n' + ' { \\n' + ' dAlpha = 1.0; \\n' + ' } \\n' + ' } \\n' + ' if (jNow < aTime.x && decay > 0.0) \\n' + ' { \\n' + ' vColor = vec4(1, 1, 1, 1); \\n' + ' } \\n' + ' else \\n' + ' { \\n' + ' vColor = vec4(aVertexColor.r, aVertexColor.g, aVertexColor.b, dAlpha * aVertexColor.a); \\n' + ' } \\n' + ' } \\n' + ' \\n';\r\n LineShaderNormalDates._frag = gl.createShader(35632);\r\n gl.shaderSource(LineShaderNormalDates._frag, fragShaderText);\r\n gl.compileShader(LineShaderNormalDates._frag);\r\n var stat = gl.getShaderParameter(LineShaderNormalDates._frag, 35713);\r\n LineShaderNormalDates._vert = gl.createShader(35633);\r\n gl.shaderSource(LineShaderNormalDates._vert, vertexShaderText);\r\n gl.compileShader(LineShaderNormalDates._vert);\r\n var stat1 = gl.getShaderParameter(LineShaderNormalDates._vert, 35713);\r\n LineShaderNormalDates._prog = gl.createProgram();\r\n gl.attachShader(LineShaderNormalDates._prog, LineShaderNormalDates._vert);\r\n gl.attachShader(LineShaderNormalDates._prog, LineShaderNormalDates._frag);\r\n gl.linkProgram(LineShaderNormalDates._prog);\r\n var errcode = gl.getProgramParameter(LineShaderNormalDates._prog, 35714);\r\n gl.useProgram(LineShaderNormalDates._prog);\r\n LineShaderNormalDates.vertLoc = gl.getAttribLocation(LineShaderNormalDates._prog, 'aVertexPosition');\r\n LineShaderNormalDates.colorLoc = gl.getAttribLocation(LineShaderNormalDates._prog, 'aVertexColor');\r\n LineShaderNormalDates.timeLoc = gl.getAttribLocation(LineShaderNormalDates._prog, 'aTime');\r\n LineShaderNormalDates.lineColorLoc = gl.getUniformLocation(LineShaderNormalDates._prog, 'lineColor');\r\n LineShaderNormalDates.projMatLoc = gl.getUniformLocation(LineShaderNormalDates._prog, 'uPMatrix');\r\n LineShaderNormalDates.mvMatLoc = gl.getUniformLocation(LineShaderNormalDates._prog, 'uMVMatrix');\r\n LineShaderNormalDates.jNowLoc = gl.getUniformLocation(LineShaderNormalDates._prog, 'jNow');\r\n LineShaderNormalDates.decayLoc = gl.getUniformLocation(LineShaderNormalDates._prog, 'decay');\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n LineShaderNormalDates.initialized = true;\r\n };\r\n LineShaderNormalDates.use = function(renderContext, vertex, lineColor, zBuffer, jNow, decay) {\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!LineShaderNormalDates.initialized) {\r\n LineShaderNormalDates.init(renderContext);\r\n }\r\n gl.useProgram(LineShaderNormalDates._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(LineShaderNormalDates.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(LineShaderNormalDates.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform4f(LineShaderNormalDates.lineColorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, 1);\r\n gl.uniform1f(LineShaderNormalDates.jNowLoc, jNow);\r\n gl.uniform1f(LineShaderNormalDates.decayLoc, decay);\r\n if (zBuffer) {\r\n gl.enable(2929);\r\n }\r\n else {\r\n gl.disable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.bindBuffer(34963, null);\r\n gl.enableVertexAttribArray(LineShaderNormalDates.vertLoc);\r\n gl.enableVertexAttribArray(LineShaderNormalDates.colorLoc);\r\n gl.vertexAttribPointer(LineShaderNormalDates.vertLoc, 3, 5126, false, 36, 0);\r\n gl.vertexAttribPointer(LineShaderNormalDates.colorLoc, 4, 5126, false, 36, 12);\r\n gl.vertexAttribPointer(LineShaderNormalDates.timeLoc, 2, 5126, false, 36, 28);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var LineShaderNormalDates$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TimeSeriesPointSpriteShader\r\n\r\n function TimeSeriesPointSpriteShader() {\r\n }\r\n TimeSeriesPointSpriteShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' uniform vec4 lineColor; \\n' + ' varying lowp vec4 vColor; \\n' + ' uniform sampler2D uSampler; \\n' + ' void main(void) \\n' + ' { \\n' + ' vec4 texColor; \\n' + ' texColor = texture2D(uSampler, gl_PointCoord); \\n' + ' \\n' + ' \\n' + ' gl_FragColor = lineColor * vColor * texColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec4 aVertexColor; \\n' + ' attribute vec2 aTime; \\n' + ' attribute float aPointSize; \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' uniform float jNow; \\n' + ' uniform vec3 cameraPosition; \\n' + ' uniform float decay; \\n' + ' uniform float scale; \\n' + ' uniform float minSize; \\n' + ' uniform float sky; \\n' + ' uniform float showFarSide; \\n' + ' \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' void main(void) \\n' + ' { \\n' + ' float dotCam = dot( normalize(cameraPosition-aVertexPosition), normalize(aVertexPosition)); \\n' + ' float dist = distance(aVertexPosition, cameraPosition); \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' float dAlpha = 1.0; \\n' + ' if ( decay > 0.0) \\n' + ' { \\n' + ' dAlpha = 1.0 - ((jNow - aTime.y) / decay); \\n ' + ' if (dAlpha > 1.0 ) \\n' + ' { \\n' + ' dAlpha = 1.0; \\n' + ' } \\n' + ' } \\n' + ' if ( showFarSide == 0.0 && (dotCam * sky) < 0.0 || (jNow < aTime.x && decay > 0.0)) \\n' + ' { \\n' + ' vColor = vec4(0.0, 0.0, 0.0, 0.0); \\n' + ' } \\n' + ' else \\n' + ' { \\n' + ' vColor = vec4(aVertexColor.r, aVertexColor.g, aVertexColor.b, dAlpha); \\n' + ' } \\n' + ' float lSize = scale; \\n' + ' if (scale < 0.0) \\n' + ' { \\n' + ' lSize = -scale; \\n' + ' dist = 1.0; \\n' + ' } \\n' + ' gl_PointSize = max(minSize, (lSize * ( aPointSize ) / dist)); \\n' + ' } \\n' + ' \\n';\r\n TimeSeriesPointSpriteShader._frag = gl.createShader(35632);\r\n gl.shaderSource(TimeSeriesPointSpriteShader._frag, fragShaderText);\r\n gl.compileShader(TimeSeriesPointSpriteShader._frag);\r\n var stat = gl.getShaderParameter(TimeSeriesPointSpriteShader._frag, 35713);\r\n TimeSeriesPointSpriteShader._vert = gl.createShader(35633);\r\n gl.shaderSource(TimeSeriesPointSpriteShader._vert, vertexShaderText);\r\n gl.compileShader(TimeSeriesPointSpriteShader._vert);\r\n var stat1 = gl.getShaderParameter(TimeSeriesPointSpriteShader._vert, 35713);\r\n var compilationLog = gl.getShaderInfoLog(TimeSeriesPointSpriteShader._vert);\r\n TimeSeriesPointSpriteShader._prog = gl.createProgram();\r\n gl.attachShader(TimeSeriesPointSpriteShader._prog, TimeSeriesPointSpriteShader._vert);\r\n gl.attachShader(TimeSeriesPointSpriteShader._prog, TimeSeriesPointSpriteShader._frag);\r\n gl.linkProgram(TimeSeriesPointSpriteShader._prog);\r\n var errcode = gl.getProgramParameter(TimeSeriesPointSpriteShader._prog, 35714);\r\n gl.useProgram(TimeSeriesPointSpriteShader._prog);\r\n TimeSeriesPointSpriteShader.vertLoc = gl.getAttribLocation(TimeSeriesPointSpriteShader._prog, 'aVertexPosition');\r\n TimeSeriesPointSpriteShader.colorLoc = gl.getAttribLocation(TimeSeriesPointSpriteShader._prog, 'aVertexColor');\r\n TimeSeriesPointSpriteShader.pointSizeLoc = gl.getAttribLocation(TimeSeriesPointSpriteShader._prog, 'aPointSize');\r\n TimeSeriesPointSpriteShader.timeLoc = gl.getAttribLocation(TimeSeriesPointSpriteShader._prog, 'aTime');\r\n TimeSeriesPointSpriteShader.projMatLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'uPMatrix');\r\n TimeSeriesPointSpriteShader.mvMatLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'uMVMatrix');\r\n TimeSeriesPointSpriteShader.sampLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'uSampler');\r\n TimeSeriesPointSpriteShader.jNowLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'jNow');\r\n TimeSeriesPointSpriteShader.decayLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'decay');\r\n TimeSeriesPointSpriteShader.lineColorLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'lineColor');\r\n TimeSeriesPointSpriteShader.cameraPosLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'cameraPosition');\r\n TimeSeriesPointSpriteShader.scaleLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'scale');\r\n TimeSeriesPointSpriteShader.skyLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'sky');\r\n TimeSeriesPointSpriteShader.showFarSideLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'showFarSide');\r\n TimeSeriesPointSpriteShader.minSizeLoc = gl.getUniformLocation(TimeSeriesPointSpriteShader._prog, 'minSize');\r\n gl.enable(3042);\r\n TimeSeriesPointSpriteShader.initialized = true;\r\n };\r\n TimeSeriesPointSpriteShader.use = function(renderContext, vertex, texture, lineColor, zBuffer, jNow, decay, camera, scale, minSize, showFarSide, sky) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!TimeSeriesPointSpriteShader.initialized) {\r\n TimeSeriesPointSpriteShader.init(renderContext);\r\n }\r\n gl.useProgram(TimeSeriesPointSpriteShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(TimeSeriesPointSpriteShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(TimeSeriesPointSpriteShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(TimeSeriesPointSpriteShader.sampLoc, 0);\r\n gl.uniform1f(TimeSeriesPointSpriteShader.jNowLoc, jNow);\r\n gl.uniform1f(TimeSeriesPointSpriteShader.decayLoc, decay);\r\n gl.uniform4f(TimeSeriesPointSpriteShader.lineColorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, lineColor.a / 255);\r\n gl.uniform3f(TimeSeriesPointSpriteShader.cameraPosLoc, camera.x, camera.y, camera.z);\r\n gl.uniform1f(TimeSeriesPointSpriteShader.scaleLoc, scale);\r\n gl.uniform1f(TimeSeriesPointSpriteShader.minSizeLoc, minSize);\r\n gl.uniform1f(TimeSeriesPointSpriteShader.showFarSideLoc, (showFarSide) ? 1 : 0);\r\n gl.uniform1f(TimeSeriesPointSpriteShader.skyLoc, (sky) ? -1 : 1);\r\n if (zBuffer) {\r\n gl.enable(2929);\r\n }\r\n else {\r\n gl.disable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.bindBuffer(34963, null);\r\n gl.enableVertexAttribArray(TimeSeriesPointSpriteShader.vertLoc);\r\n gl.enableVertexAttribArray(TimeSeriesPointSpriteShader.colorLoc);\r\n gl.enableVertexAttribArray(TimeSeriesPointSpriteShader.pointSizeLoc);\r\n gl.enableVertexAttribArray(TimeSeriesPointSpriteShader.timeLoc);\r\n gl.vertexAttribPointer(TimeSeriesPointSpriteShader.vertLoc, 3, 5126, false, 40, 0);\r\n gl.vertexAttribPointer(TimeSeriesPointSpriteShader.colorLoc, 4, 5126, false, 40, 12);\r\n gl.vertexAttribPointer(TimeSeriesPointSpriteShader.pointSizeLoc, 1, 5126, false, 40, 36);\r\n gl.vertexAttribPointer(TimeSeriesPointSpriteShader.timeLoc, 2, 5126, false, 40, 28);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 1);\r\n }\r\n };\r\n var TimeSeriesPointSpriteShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.KeplerPointSpriteShader\r\n\r\n function KeplerPointSpriteShader() {\r\n }\r\n KeplerPointSpriteShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' uniform vec4 lineColor; \\n' + ' varying lowp vec4 vColor; \\n' + ' uniform sampler2D uSampler; \\n' + ' void main(void) \\n' + ' { \\n' + ' vec4 texColor; \\n' + ' texColor = texture2D(uSampler, gl_PointCoord); \\n' + ' \\n' + ' \\n' + ' gl_FragColor = lineColor * vColor * texColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 ABC; \\n' + ' attribute vec3 abc; \\n' + ' attribute float PointSize; \\n' + ' attribute vec4 Color; \\n' + ' attribute vec2 we; \\n' + ' attribute vec2 nT; \\n' + ' attribute vec2 az; \\n' + ' attribute vec2 orbit; \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' uniform float jNow; \\n' + ' uniform vec3 cameraPosition; \\n' + ' uniform float MM; \\n' + ' uniform float scaling; \\n' + ' uniform float minSize; \\n' + ' uniform float opacity; \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' void main(void) \\n' + ' { \\n' + ' float M = nT.x * (jNow - nT.y) * 0.01745329251994; \\n' + ' float e = we.y; \\n' + ' float a = az.x; \\n' + ' float PI = 3.1415926535897932384; \\n' + ' float w = we.x* 0.01745329251994; \\n' + ' float F = 1.0; \\n' + ' if (M < 0.0) \\n' + ' F = -1.0; \\n' + ' M = abs(M) / (2.0 * PI); \\n' + ' M = (M - float(int(M)))*2.0 *PI *F; \\n' + ' if (MM != 0.0) \\n' + ' { \\n' + ' M = MM + (1.0- orbit.x) *2.0 *PI; \\n' + ' if (M > (2.0*PI)) \\n' + ' M = M - (2.0*PI); \\n' + ' } \\n' + ' \\n' + ' if (M < 0.0) \\n' + ' M += 2.0 *PI; \\n' + ' F = 1.0; \\n' + ' if (M > PI) \\n' + ' F = -1.0; \\n' + ' if (M > PI) \\n' + ' M = 2.0 *PI - M; \\n' + ' \\n' + ' float E = PI / 2.0; \\n' + ' float scale = PI / 4.0; \\n' + ' for (int i =0; i<23; i++) \\n' + ' { \\n' + ' float R = E - e *sin(E); \\n' + ' if (M > R) \\n' + ' \\tE += scale; \\n' + ' else \\n' + ' \\tE -= scale; \\n' + ' scale /= 2.0; \\n' + ' } \\n' + ' E = E * F; \\n' + ' \\n' + ' float v = 2.0 * atan(sqrt((1.0 + e) / (1.0 -e )) * tan(E/2.0)); \\n' + ' float r = a * (1.0-e * cos(E)); \\n' + ' \\n' + ' vec4 pnt; \\n' + ' pnt.x = r * abc.x * sin(ABC.x + w + v); \\n' + ' pnt.z = r * abc.y * sin(ABC.y + w + v); \\n' + ' pnt.y = r * abc.z * sin(ABC.z + w + v); \\n' + ' pnt.w = 1.0; \\n' + ' \\n' + ' float dist = distance(pnt.xyz, cameraPosition.xyz); \\n' + ' gl_Position = uPMatrix * uMVMatrix * pnt; \\n' + ' vColor.a = opacity * (1.0-(orbit.x)); \\n' + ' vColor.r = Color.r; \\n' + ' vColor.g = Color.g; \\n' + ' vColor.b = Color.b; \\n' + ' gl_PointSize = max(minSize, scaling * (PointSize / dist)); \\n' + ' } \\n';\r\n KeplerPointSpriteShader._frag = gl.createShader(35632);\r\n gl.shaderSource(KeplerPointSpriteShader._frag, fragShaderText);\r\n gl.compileShader(KeplerPointSpriteShader._frag);\r\n var stat = gl.getShaderParameter(KeplerPointSpriteShader._frag, 35713);\r\n KeplerPointSpriteShader._vert = gl.createShader(35633);\r\n gl.shaderSource(KeplerPointSpriteShader._vert, vertexShaderText);\r\n gl.compileShader(KeplerPointSpriteShader._vert);\r\n var stat1 = gl.getShaderParameter(KeplerPointSpriteShader._vert, 35713);\r\n var compilationLog = gl.getShaderInfoLog(KeplerPointSpriteShader._vert);\r\n KeplerPointSpriteShader._prog = gl.createProgram();\r\n gl.attachShader(KeplerPointSpriteShader._prog, KeplerPointSpriteShader._vert);\r\n gl.attachShader(KeplerPointSpriteShader._prog, KeplerPointSpriteShader._frag);\r\n gl.linkProgram(KeplerPointSpriteShader._prog);\r\n var errcode = gl.getProgramParameter(KeplerPointSpriteShader._prog, 35714);\r\n gl.useProgram(KeplerPointSpriteShader._prog);\r\n KeplerPointSpriteShader.abcLoc1 = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'abc');\r\n KeplerPointSpriteShader.abcLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'ABC');\r\n KeplerPointSpriteShader.pointSizeLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'PointSize');\r\n KeplerPointSpriteShader.colorLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'Color');\r\n KeplerPointSpriteShader.weLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'we');\r\n KeplerPointSpriteShader.nTLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'nT');\r\n KeplerPointSpriteShader.azLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'az');\r\n KeplerPointSpriteShader.orbitLoc = gl.getAttribLocation(KeplerPointSpriteShader._prog, 'orbit');\r\n KeplerPointSpriteShader.projMatLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'uPMatrix');\r\n KeplerPointSpriteShader.mvMatLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'uMVMatrix');\r\n KeplerPointSpriteShader.jNowLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'jNow');\r\n KeplerPointSpriteShader.cameraPosLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'cameraPosition');\r\n KeplerPointSpriteShader.mmLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'MM');\r\n KeplerPointSpriteShader.scaleLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'scaling');\r\n KeplerPointSpriteShader.minSizeLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'minSize');\r\n KeplerPointSpriteShader.lineColorLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'lineColor');\r\n KeplerPointSpriteShader.opacityLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'opacity');\r\n KeplerPointSpriteShader.sampLoc = gl.getUniformLocation(KeplerPointSpriteShader._prog, 'uSampler');\r\n gl.enable(3042);\r\n KeplerPointSpriteShader.initialized = true;\r\n };\r\n KeplerPointSpriteShader.use = function(renderContext, worldView, vertex, texture, lineColor, opacity, zBuffer, jNow, MM, camera, scale, minSize) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!KeplerPointSpriteShader.initialized) {\r\n KeplerPointSpriteShader.init(renderContext);\r\n }\r\n gl.useProgram(KeplerPointSpriteShader._prog);\r\n gl.uniformMatrix4fv(KeplerPointSpriteShader.mvMatLoc, false, worldView.floatArray());\r\n gl.uniformMatrix4fv(KeplerPointSpriteShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(KeplerPointSpriteShader.sampLoc, 0);\r\n gl.uniform1f(KeplerPointSpriteShader.jNowLoc, jNow);\r\n gl.uniform1f(KeplerPointSpriteShader.mmLoc, MM);\r\n gl.uniform4f(KeplerPointSpriteShader.lineColorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, lineColor.a / 255);\r\n gl.uniform1f(KeplerPointSpriteShader.opacityLoc, opacity);\r\n gl.uniform3f(KeplerPointSpriteShader.cameraPosLoc, camera.x, camera.y, camera.z);\r\n gl.uniform1f(KeplerPointSpriteShader.scaleLoc, scale);\r\n gl.uniform1f(KeplerPointSpriteShader.minSizeLoc, minSize);\r\n if (zBuffer) {\r\n gl.enable(2929);\r\n }\r\n else {\r\n gl.disable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.bindBuffer(34963, null);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.abcLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.abcLoc1);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.colorLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.pointSizeLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.weLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.nTLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.azLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.orbitLoc);\r\n gl.enableVertexAttribArray(KeplerPointSpriteShader.weLoc);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.abcLoc, 3, 5126, false, 76, 0);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.abcLoc1, 3, 5126, false, 76, 12);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.pointSizeLoc, 1, 5126, false, 76, 24);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.colorLoc, 4, 5126, false, 76, 28);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.weLoc, 2, 5126, false, 76, 44);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.nTLoc, 2, 5126, false, 76, 52);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.azLoc, 2, 5126, false, 76, 60);\r\n gl.vertexAttribPointer(KeplerPointSpriteShader.orbitLoc, 2, 5126, false, 76, 68);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 1);\r\n }\r\n };\r\n var KeplerPointSpriteShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.EllipseShader\r\n\r\n function EllipseShader() {\r\n }\r\n EllipseShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' varying lowp vec4 vColor; \\n' + ' void main(void) \\n' + ' { \\n' + ' gl_FragColor = vColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 Angle; \\n' + ' uniform mat4 matWVP; \\n' + ' uniform mat4 matPosition; \\n' + ' uniform vec3 positionNow; \\n' + ' uniform float semiMajorAxis; \\n' + ' uniform float eccentricity; \\n' + ' uniform vec4 color; \\n' + ' uniform float eccentricAnomaly; \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' void main(void) \\n' + ' { \\n' + ' float fade = (1.0 - Angle.x); \\n' + ' float PI = 3.1415927; \\n' + ' float E = eccentricAnomaly - Angle.x * 2.0 * PI; \\n' + ' vec2 semiAxes = vec2(1.0, sqrt(1.0 - eccentricity * eccentricity)) * semiMajorAxis; \\n' + ' vec2 planePos = semiAxes * vec2(cos(E) - eccentricity, sin(E)); \\n' + ' if (Angle.x == 0.0) \\n' + ' gl_Position = matPosition * vec4(positionNow, 1.0); \\n' + ' else \\n' + ' gl_Position = matWVP * vec4(planePos.x, planePos.y, 0.0, 1.0); \\n' + ' vColor = vec4(color.rgb, fade * color.a); \\n' + ' } \\n';\r\n EllipseShader._frag = gl.createShader(35632);\r\n gl.shaderSource(EllipseShader._frag, fragShaderText);\r\n gl.compileShader(EllipseShader._frag);\r\n var stat = gl.getShaderParameter(EllipseShader._frag, 35713);\r\n EllipseShader._vert = gl.createShader(35633);\r\n gl.shaderSource(EllipseShader._vert, vertexShaderText);\r\n gl.compileShader(EllipseShader._vert);\r\n var stat1 = gl.getShaderParameter(EllipseShader._vert, 35713);\r\n var compilationLog = gl.getShaderInfoLog(EllipseShader._vert);\r\n EllipseShader._prog = gl.createProgram();\r\n gl.attachShader(EllipseShader._prog, EllipseShader._vert);\r\n gl.attachShader(EllipseShader._prog, EllipseShader._frag);\r\n gl.linkProgram(EllipseShader._prog);\r\n var errcode = gl.getProgramParameter(EllipseShader._prog, 35714);\r\n gl.useProgram(EllipseShader._prog);\r\n EllipseShader.angleLoc = gl.getAttribLocation(EllipseShader._prog, 'Angle');\r\n EllipseShader.matWVPLoc = gl.getUniformLocation(EllipseShader._prog, 'matWVP');\r\n EllipseShader.matPositionLoc = gl.getUniformLocation(EllipseShader._prog, 'matPosition');\r\n EllipseShader.positionNowLoc = gl.getUniformLocation(EllipseShader._prog, 'positionNow');\r\n EllipseShader.colorLoc = gl.getUniformLocation(EllipseShader._prog, 'color');\r\n EllipseShader.semiMajorAxisLoc = gl.getUniformLocation(EllipseShader._prog, 'semiMajorAxis');\r\n EllipseShader.eccentricityLoc = gl.getUniformLocation(EllipseShader._prog, 'eccentricity');\r\n EllipseShader.eccentricAnomalyLoc = gl.getUniformLocation(EllipseShader._prog, 'eccentricAnomaly');\r\n gl.enable(3042);\r\n EllipseShader.initialized = true;\r\n };\r\n EllipseShader.use = function(renderContext, semiMajorAxis, eccentricity, eccentricAnomaly, lineColor, opacity, world, positionNow) {\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!EllipseShader.initialized) {\r\n EllipseShader.init(renderContext);\r\n }\r\n gl.useProgram(EllipseShader._prog);\r\n var WVPPos = Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(world, renderContext.get_view()), renderContext.get_projection());\r\n var WVP = Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view()), renderContext.get_projection());\r\n gl.uniformMatrix4fv(EllipseShader.matWVPLoc, false, WVP.floatArray());\r\n gl.uniformMatrix4fv(EllipseShader.matPositionLoc, false, WVPPos.floatArray());\r\n gl.uniform3f(EllipseShader.positionNowLoc, positionNow.x, positionNow.y, positionNow.z);\r\n gl.uniform4f(EllipseShader.colorLoc, lineColor.r / 255, lineColor.g / 255, lineColor.b / 255, lineColor.a / 255);\r\n gl.uniform1f(EllipseShader.semiMajorAxisLoc, semiMajorAxis);\r\n gl.uniform1f(EllipseShader.eccentricityLoc, eccentricity);\r\n gl.uniform1f(EllipseShader.eccentricAnomalyLoc, eccentricAnomaly);\r\n gl.disable(2929);\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.enableVertexAttribArray(EllipseShader.angleLoc);\r\n gl.vertexAttribPointer(EllipseShader.angleLoc, 3, 5126, false, 0, 0);\r\n gl.lineWidth(1);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 1);\r\n }\r\n };\r\n var EllipseShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ModelShader\r\n\r\n function ModelShader() {\r\n }\r\n ModelShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' uniform sampler2D uSampler; \\n' + ' uniform float opacity; \\n' + ' uniform vec3 uSunPosition; \\n' + ' uniform float uMinBrightness; \\n' + ' uniform vec3 uAtmosphereColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' vec3 normal = normalize(vNormal); \\n' + ' vec3 camVN = normalize(vCamVector); \\n' + ' vec3 cam = normalize(vec3(0.0,0.0,-1.0)); \\n' + ' float dt = uMinBrightness + pow(max(0.0,- dot(normal,uSunPosition)),0.5); \\n' + ' float atm = max(0.0, 1.0 - 2.5 * dot(cam,camVN)) + 0.3 * dt; \\n' + ' atm = (dt > uMinBrightness) ? atm : 0.0; \\n' + ' if ( uMinBrightness == 1.0 ) { dt = 1.0; atm= 0.0; } \\n' + ' vec4 col = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); \\n' + ' gl_FragColor = col * opacity; \\n' + ' gl_FragColor.rgb *= dt; \\n' + ' gl_FragColor.rgb += atm * uAtmosphereColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec3 aNormal; \\n' + ' attribute vec2 aTextureCoord; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vCamVector = normalize((mat3(uMVMatrix) * aVertexPosition).xyz); \\n' + ' vec3 normalT = normalize(mat3(uMVMatrix) * aNormal); \\n' + ' vTextureCoord = aTextureCoord; \\n' + ' vNormal = normalT; \\n' + ' } \\n' + ' \\n';\r\n ModelShader._frag = gl.createShader(35632);\r\n gl.shaderSource(ModelShader._frag, fragShaderText);\r\n gl.compileShader(ModelShader._frag);\r\n var stat = gl.getShaderParameter(ModelShader._frag, 35713);\r\n if (!stat) {\r\n var errorF = gl.getShaderInfoLog(ModelShader._frag);\r\n }\r\n ModelShader._vert = gl.createShader(35633);\r\n gl.shaderSource(ModelShader._vert, vertexShaderText);\r\n gl.compileShader(ModelShader._vert);\r\n var stat1 = gl.getShaderParameter(ModelShader._vert, 35713);\r\n if (!stat1) {\r\n var errorV = gl.getShaderInfoLog(ModelShader._vert);\r\n }\r\n ModelShader._prog = gl.createProgram();\r\n gl.attachShader(ModelShader._prog, ModelShader._vert);\r\n gl.attachShader(ModelShader._prog, ModelShader._frag);\r\n gl.linkProgram(ModelShader._prog);\r\n var errcode = gl.getProgramParameter(ModelShader._prog, 35714);\r\n gl.useProgram(ModelShader._prog);\r\n ModelShader.vertLoc = gl.getAttribLocation(ModelShader._prog, 'aVertexPosition');\r\n ModelShader.normalLoc = gl.getAttribLocation(ModelShader._prog, 'aNormal');\r\n ModelShader.textureLoc = gl.getAttribLocation(ModelShader._prog, 'aTextureCoord');\r\n ModelShader.projMatLoc = gl.getUniformLocation(ModelShader._prog, 'uPMatrix');\r\n ModelShader.mvMatLoc = gl.getUniformLocation(ModelShader._prog, 'uMVMatrix');\r\n ModelShader.sampLoc = gl.getUniformLocation(ModelShader._prog, 'uSampler');\r\n ModelShader.sunLoc = gl.getUniformLocation(ModelShader._prog, 'uSunPosition');\r\n ModelShader.minBrightnessLoc = gl.getUniformLocation(ModelShader._prog, 'uMinBrightness');\r\n ModelShader.opacityLoc = gl.getUniformLocation(ModelShader._prog, 'opacity');\r\n ModelShader.atmosphereColorLoc = gl.getUniformLocation(ModelShader._prog, 'uAtmosphereColor');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n ModelShader.initialized = true;\r\n };\r\n ModelShader.use = function(renderContext, vertex, index, texture, opacity, noDepth, stride) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!ModelShader.initialized) {\r\n ModelShader.init(renderContext);\r\n }\r\n gl.useProgram(ModelShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform1f(ModelShader.opacityLoc, opacity);\r\n gl.uniform1f(ModelShader.minBrightnessLoc, (renderContext.lighting) ? ModelShader.minLightingBrightness : 1);\r\n if (renderContext.lighting) {\r\n gl.uniform3f(ModelShader.atmosphereColorLoc, ModelShader.atmosphereColor.r / 255, ModelShader.atmosphereColor.g / 255, ModelShader.atmosphereColor.b / 255);\r\n }\r\n else {\r\n gl.uniform3f(ModelShader.atmosphereColorLoc, 0, 0, 0);\r\n }\r\n gl.uniformMatrix4fv(ModelShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(ModelShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n ModelShader.sunPosition.normalize();\r\n var mvInv = renderContext.get_view().clone();\r\n mvInv.set_m41(0);\r\n mvInv.set_m42(0);\r\n mvInv.set_m43(0);\r\n mvInv.set_m44(1);\r\n var sp = Vector3d._transformCoordinate(ModelShader.sunPosition, mvInv);\r\n sp.normalize();\r\n gl.uniform3f(ModelShader.sunLoc, sp.x, sp.y, sp.z);\r\n gl.uniform1i(ModelShader.sampLoc, 0);\r\n if (renderContext.space || noDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(ModelShader.vertLoc);\r\n gl.enableVertexAttribArray(ModelShader.normalLoc);\r\n gl.enableVertexAttribArray(ModelShader.textureLoc);\r\n gl.vertexAttribPointer(ModelShader.vertLoc, 3, 5126, false, stride, 0);\r\n gl.vertexAttribPointer(ModelShader.normalLoc, 3, 5126, false, stride, 12);\r\n gl.vertexAttribPointer(ModelShader.textureLoc, 2, 5126, false, stride, stride - 8);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, index);\r\n gl.enable(3042);\r\n if (noDepth) {\r\n gl.blendFunc(770, 1);\r\n }\r\n else {\r\n gl.blendFunc(770, 771);\r\n }\r\n }\r\n };\r\n var ModelShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ModelShaderTan\r\n\r\n function ModelShaderTan() {\r\n }\r\n ModelShaderTan.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' uniform sampler2D uSampler; \\n' + ' uniform float opacity; \\n' + ' uniform vec3 uSunPosition; \\n' + ' uniform float uMinBrightness; \\n' + ' uniform vec3 uAtmosphereColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' vec3 normal = normalize(vNormal); \\n' + ' vec3 camVN = normalize(vCamVector); \\n' + ' vec3 cam = normalize(vec3(0.0,0.0,-1.0)); \\n' + ' float dt = uMinBrightness + pow(max(0.0,- dot(normal,uSunPosition)),0.5); \\n' + ' float atm = max(0.0, 1.0 - 2.5 * dot(cam,camVN)) + 0.3 * dt; \\n' + ' atm = (dt > uMinBrightness) ? atm : 0.0; \\n' + ' if ( uMinBrightness == 1.0 ) { dt = 1.0; atm= 0.0; } \\n' + ' vec4 col = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); \\n' + ' gl_FragColor = col * opacity; \\n' + ' gl_FragColor.rgb *= dt; \\n' + ' gl_FragColor.rgb += atm * uAtmosphereColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec3 aNormal; \\n' + ' attribute vec2 aTextureCoord; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vCamVector = normalize((mat3(uMVMatrix) * aVertexPosition).xyz); \\n' + ' vec3 normalT = normalize(mat3(uMVMatrix) * aNormal); \\n' + ' vTextureCoord = aTextureCoord; \\n' + ' vNormal = normalT; \\n' + ' } \\n' + ' \\n';\r\n ModelShaderTan._frag = gl.createShader(35632);\r\n gl.shaderSource(ModelShaderTan._frag, fragShaderText);\r\n gl.compileShader(ModelShaderTan._frag);\r\n var stat = gl.getShaderParameter(ModelShaderTan._frag, 35713);\r\n if (!stat) {\r\n var errorF = gl.getShaderInfoLog(ModelShaderTan._frag);\r\n }\r\n ModelShaderTan._vert = gl.createShader(35633);\r\n gl.shaderSource(ModelShaderTan._vert, vertexShaderText);\r\n gl.compileShader(ModelShaderTan._vert);\r\n var stat1 = gl.getShaderParameter(ModelShaderTan._vert, 35713);\r\n if (!stat1) {\r\n var errorV = gl.getShaderInfoLog(ModelShaderTan._vert);\r\n }\r\n ModelShaderTan._prog = gl.createProgram();\r\n gl.attachShader(ModelShaderTan._prog, ModelShaderTan._vert);\r\n gl.attachShader(ModelShaderTan._prog, ModelShaderTan._frag);\r\n gl.linkProgram(ModelShaderTan._prog);\r\n var errcode = gl.getProgramParameter(ModelShaderTan._prog, 35714);\r\n gl.useProgram(ModelShaderTan._prog);\r\n ModelShaderTan.vertLoc = gl.getAttribLocation(ModelShaderTan._prog, 'aVertexPosition');\r\n ModelShaderTan.normalLoc = gl.getAttribLocation(ModelShaderTan._prog, 'aNormal');\r\n ModelShaderTan.textureLoc = gl.getAttribLocation(ModelShaderTan._prog, 'aTextureCoord');\r\n ModelShaderTan.projMatLoc = gl.getUniformLocation(ModelShaderTan._prog, 'uPMatrix');\r\n ModelShaderTan.mvMatLoc = gl.getUniformLocation(ModelShaderTan._prog, 'uMVMatrix');\r\n ModelShaderTan.sampLoc = gl.getUniformLocation(ModelShaderTan._prog, 'uSampler');\r\n ModelShaderTan.sunLoc = gl.getUniformLocation(ModelShaderTan._prog, 'uSunPosition');\r\n ModelShaderTan.minBrightnessLoc = gl.getUniformLocation(ModelShaderTan._prog, 'uMinBrightness');\r\n ModelShaderTan.opacityLoc = gl.getUniformLocation(ModelShaderTan._prog, 'opacity');\r\n ModelShaderTan.atmosphereColorLoc = gl.getUniformLocation(ModelShaderTan._prog, 'uAtmosphereColor');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n ModelShaderTan.initialized = true;\r\n };\r\n ModelShaderTan.use = function(renderContext, vertex, index, texture, opacity, noDepth, stride) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!ModelShaderTan.initialized) {\r\n ModelShaderTan.init(renderContext);\r\n }\r\n gl.useProgram(ModelShaderTan._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform1f(ModelShaderTan.opacityLoc, opacity);\r\n gl.uniform1f(ModelShaderTan.minBrightnessLoc, (renderContext.lighting) ? ModelShaderTan.minLightingBrightness : 1);\r\n if (renderContext.lighting) {\r\n gl.uniform3f(ModelShaderTan.atmosphereColorLoc, ModelShaderTan.atmosphereColor.r / 255, ModelShaderTan.atmosphereColor.g / 255, ModelShaderTan.atmosphereColor.b / 255);\r\n }\r\n else {\r\n gl.uniform3f(ModelShaderTan.atmosphereColorLoc, 0, 0, 0);\r\n }\r\n gl.uniformMatrix4fv(ModelShaderTan.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(ModelShaderTan.projMatLoc, false, renderContext.get_projection().floatArray());\r\n ModelShaderTan.sunPosition.normalize();\r\n var mvInv = renderContext.get_view().clone();\r\n mvInv.set_m41(0);\r\n mvInv.set_m42(0);\r\n mvInv.set_m43(0);\r\n mvInv.set_m44(1);\r\n var sp = Vector3d._transformCoordinate(ModelShaderTan.sunPosition, mvInv);\r\n sp.normalize();\r\n gl.uniform3f(ModelShaderTan.sunLoc, -sp.x, -sp.y, -sp.z);\r\n gl.uniform1i(ModelShaderTan.sampLoc, 0);\r\n if (renderContext.space || noDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(ModelShaderTan.vertLoc);\r\n gl.enableVertexAttribArray(ModelShaderTan.normalLoc);\r\n gl.enableVertexAttribArray(ModelShaderTan.textureLoc);\r\n gl.vertexAttribPointer(ModelShaderTan.vertLoc, 3, 5126, false, stride, 0);\r\n gl.vertexAttribPointer(ModelShaderTan.normalLoc, 3, 5126, false, stride, 12);\r\n gl.vertexAttribPointer(ModelShaderTan.textureLoc, 2, 5126, false, stride, stride - 8);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, index);\r\n gl.enable(3042);\r\n if (noDepth) {\r\n gl.blendFunc(770, 1);\r\n }\r\n else {\r\n gl.blendFunc(770, 771);\r\n }\r\n }\r\n };\r\n var ModelShaderTan$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TileShader\r\n\r\n function TileShader() {\r\n }\r\n TileShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' uniform sampler2D uSampler; \\n' + ' uniform float opacity; \\n' + ' uniform vec3 uSunPosition; \\n' + ' uniform float uMinBrightness; \\n' + ' uniform vec3 uAtmosphereColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' vec3 normal = normalize(vNormal); \\n' + ' vec3 camVN = normalize(vCamVector); \\n' + ' vec3 cam = normalize(vec3(0.0,0.0,-1.0)); \\n' + ' float dt = uMinBrightness + pow(max(0.0,- dot(normal,uSunPosition)),0.5); \\n' + ' float atm = max(0.0, 1.0 - 2.5 * dot(cam,camVN)) + 0.3 * dt; \\n' + ' atm = (dt > uMinBrightness) ? atm : 0.0; \\n' + ' if ( uMinBrightness == 1.0 ) { dt = 1.0; atm= 0.0; } \\n' + ' vec4 col = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); \\n' + ' gl_FragColor = col * opacity; \\n' + ' gl_FragColor.rgb *= dt; \\n' + ' gl_FragColor.rgb += atm * uAtmosphereColor; \\n' + ' } \\n';\r\n var vertexShaderText = '\\r\\n attribute vec3 aVertexPosition;\\r\\n attribute vec2 aTextureCoord;\\r\\n \\r\\n uniform mat4 uMVMatrix;\\r\\n uniform mat4 uPMatrix;\\r\\n uniform vec3 uCenterScreen;\\r\\n uniform vec3 uCenterWorld;\\r\\n\\r\\n varying vec2 vTextureCoord;\\r\\n varying vec3 vNormal;\\r\\n varying vec3 vCamVector;\\r\\n \\r\\n void main(void) {\\r\\n vec3 normal;\\r\\n if(length(uCenterWorld) > 0.00001){\\r\\n gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 0.0) + vec4(uCenterScreen, 1.0);\\r\\n vCamVector = normalize((mat3(uMVMatrix) * (aVertexPosition + uCenterWorld)).xyz);\\r\\n normal = normalize(aVertexPosition + uCenterWorld);\\r\\n } else {\\r\\n gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\\r\\n vCamVector = normalize((mat3(uMVMatrix) * aVertexPosition).xyz);\\r\\n normal = normalize(aVertexPosition);\\r\\n }\\r\\n vec3 normalT = normalize(mat3(uMVMatrix) * normal);\\r\\n vTextureCoord = aTextureCoord;\\r\\n vNormal = normalT;\\r\\n }';\r\n TileShader._frag = gl.createShader(35632);\r\n gl.shaderSource(TileShader._frag, fragShaderText);\r\n gl.compileShader(TileShader._frag);\r\n var stat = gl.getShaderParameter(TileShader._frag, 35713);\r\n if (!stat) {\r\n var errorF = gl.getShaderInfoLog(TileShader._frag);\r\n }\r\n TileShader._vert = gl.createShader(35633);\r\n gl.shaderSource(TileShader._vert, vertexShaderText);\r\n gl.compileShader(TileShader._vert);\r\n var stat1 = gl.getShaderParameter(TileShader._vert, 35713);\r\n if (!stat1) {\r\n var errorV = gl.getShaderInfoLog(TileShader._vert);\r\n }\r\n TileShader._prog = gl.createProgram();\r\n gl.attachShader(TileShader._prog, TileShader._vert);\r\n gl.attachShader(TileShader._prog, TileShader._frag);\r\n gl.linkProgram(TileShader._prog);\r\n var errcode = gl.getProgramParameter(TileShader._prog, 35714);\r\n gl.useProgram(TileShader._prog);\r\n TileShader.vertLoc = gl.getAttribLocation(TileShader._prog, 'aVertexPosition');\r\n TileShader.textureLoc = gl.getAttribLocation(TileShader._prog, 'aTextureCoord');\r\n TileShader.projMatLoc = gl.getUniformLocation(TileShader._prog, 'uPMatrix');\r\n TileShader.mvMatLoc = gl.getUniformLocation(TileShader._prog, 'uMVMatrix');\r\n TileShader.sampLoc = gl.getUniformLocation(TileShader._prog, 'uSampler');\r\n TileShader.centerScreenLoc = gl.getUniformLocation(TileShader._prog, 'uCenterScreen');\r\n TileShader.centerWorldLoc = gl.getUniformLocation(TileShader._prog, 'uCenterWorld');\r\n TileShader.sunLoc = gl.getUniformLocation(TileShader._prog, 'uSunPosition');\r\n TileShader.minBrightnessLoc = gl.getUniformLocation(TileShader._prog, 'uMinBrightness');\r\n TileShader.opacityLoc = gl.getUniformLocation(TileShader._prog, 'opacity');\r\n TileShader.atmosphereColorLoc = gl.getUniformLocation(TileShader._prog, 'uAtmosphereColor');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n TileShader.initialized = true;\r\n };\r\n TileShader.use = function(renderContext, vertex, index, texture, opacity, noDepth, centerWorld) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!TileShader.initialized) {\r\n TileShader.init(renderContext);\r\n }\r\n gl.useProgram(TileShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform1f(TileShader.opacityLoc, opacity);\r\n gl.uniform1f(TileShader.minBrightnessLoc, (renderContext.lighting) ? TileShader.minLightingBrightness : 1);\r\n if (renderContext.lighting) {\r\n gl.uniform3f(TileShader.atmosphereColorLoc, TileShader.atmosphereColor.r / 255, TileShader.atmosphereColor.g / 255, TileShader.atmosphereColor.b / 255);\r\n }\r\n else {\r\n gl.uniform3f(TileShader.atmosphereColorLoc, 0, 0, 0);\r\n }\r\n gl.uniform3f(TileShader.centerWorldLoc, centerWorld.x, centerWorld.y, centerWorld.z);\r\n if (centerWorld.lengthSq() > 0.001) {\r\n var wvp = Matrix3d.multiplyMatrix(mvMat, renderContext.get_projection());\r\n var centerScreen = wvp.transform(centerWorld);\r\n gl.uniform3f(TileShader.centerScreenLoc, centerScreen.x, centerScreen.y, centerScreen.z);\r\n }\r\n else {\r\n gl.uniform3f(TileShader.centerScreenLoc, 0, 0, 0);\r\n }\r\n gl.uniformMatrix4fv(TileShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(TileShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n TileShader.sunPosition.normalize();\r\n var mvInv = renderContext.get_view().clone();\r\n mvInv.set_m41(0);\r\n mvInv.set_m42(0);\r\n mvInv.set_m43(0);\r\n mvInv.set_m44(1);\r\n var sp = Vector3d._transformCoordinate(TileShader.sunPosition, mvInv);\r\n sp.normalize();\r\n gl.uniform3f(TileShader.sunLoc, -sp.x, -sp.y, -sp.z);\r\n gl.uniform1i(TileShader.sampLoc, 0);\r\n if (renderContext.space || noDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(TileShader.vertLoc);\r\n gl.enableVertexAttribArray(TileShader.textureLoc);\r\n gl.vertexAttribPointer(TileShader.vertLoc, 3, 5126, false, 20, 0);\r\n gl.vertexAttribPointer(TileShader.textureLoc, 2, 5126, false, 20, 12);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, index);\r\n gl.enable(3042);\r\n if (noDepth) {\r\n gl.blendFunc(770, 1);\r\n }\r\n else {\r\n gl.blendFunc(770, 771);\r\n }\r\n }\r\n };\r\n var TileShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.FitsShader\r\n\r\n function FitsShader() {\r\n }\r\n FitsShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = '#version 300 es\\r\\n precision mediump float;\\r\\n in vec2 vTextureCoord;\\r\\n in vec3 vNormal;\\r\\n in vec3 vCamVector;\\r\\n out vec4 fragmentColor;\\r\\n\\r\\n uniform sampler2D uSampler;\\r\\n uniform sampler2D colorSampler;\\r\\n uniform float blank;\\r\\n uniform float bzero;\\r\\n uniform float bscale;\\r\\n uniform float min;\\r\\n uniform float max;\\r\\n uniform bool containsBlanks;\\r\\n uniform bool transparentBlack;\\r\\n uniform int scaleType;\\r\\n uniform float opacity;\\r\\n \\r\\n bool isNaN(float value) {\\r\\n // See https://stackoverflow.com/questions/9446888/best-way-to-detect-nans-in-opengl-shaders\\r\\n // PKGW also finds that we need `value != value` on his Dell laptop running\\r\\n // Chrome on Linux.\\r\\n return (value != value) || !(value < 0.0 || 0.0 < value || value == 0.0);\\r\\n }\\r\\n\\r\\n void main(void) {\\r\\n //FITS images are flipped on the y axis\\r\\n vec4 color = texture(uSampler, vec2(vTextureCoord.x, 1.0 - vTextureCoord.y));\\r\\n if(isNaN(color.r) || (containsBlanks && abs(blank - color.r) < 0.00000001)){\\r\\n fragmentColor = vec4(0.0, 0.0, 0.0, 0.0);\\r\\n } else {\\r\\n float physicalValue = (bzero + bscale * color.r - min) / (max - min);\\r\\n if(transparentBlack && physicalValue <= 0.0){\\r\\n fragmentColor = vec4(0.0, 0.0, 0.0, 0.0);\\r\\n return;\\r\\n }\\r\\n \\r\\n physicalValue = clamp(physicalValue, 0.0, 1.0);\\r\\n\\r\\n switch(scaleType){\\r\\n case 1:\\r\\n physicalValue = log(physicalValue * 255.0 + 1.0 ) / log(256.0);\\r\\n break;\\r\\n case 2:\\r\\n physicalValue = physicalValue * physicalValue;\\r\\n break;\\r\\n case 3:\\r\\n physicalValue = sqrt(physicalValue);\\r\\n break;\\r\\n }\\r\\n vec4 colorFromColorMapper = texture(colorSampler, vec2(physicalValue, 0.5));\\r\\n fragmentColor = vec4(colorFromColorMapper.rgb, opacity);\\r\\n }\\r\\n }\\r\\n ';\r\n var vertexShaderText = '#version 300 es\\r\\n in vec3 aVertexPosition;\\r\\n in vec2 aTextureCoord;\\r\\n \\r\\n uniform mat4 uMVMatrix;\\r\\n uniform mat4 uPMatrix;\\r\\n uniform vec3 uCenterScreen;\\r\\n \\r\\n out vec2 vTextureCoord;\\r\\n \\r\\n void main(void) {\\r\\n if(length(uCenterScreen) > 0.0000001) {\\r\\n gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 0.0) + vec4(uCenterScreen, 1.0);\\r\\n } else {\\r\\n gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);\\r\\n }\\r\\n vTextureCoord = aTextureCoord;\\r\\n }\\r\\n ';\r\n FitsShader._frag = gl.createShader(35632);\r\n gl.shaderSource(FitsShader._frag, fragShaderText);\r\n gl.compileShader(FitsShader._frag);\r\n var stat = gl.getShaderParameter(FitsShader._frag, 35713);\r\n if (!stat) {\r\n var errorF = gl.getShaderInfoLog(FitsShader._frag);\r\n console.log(errorF);\r\n }\r\n FitsShader._vert = gl.createShader(35633);\r\n gl.shaderSource(FitsShader._vert, vertexShaderText);\r\n gl.compileShader(FitsShader._vert);\r\n var stat1 = gl.getShaderParameter(FitsShader._vert, 35713);\r\n if (!stat1) {\r\n var errorV = gl.getShaderInfoLog(FitsShader._vert);\r\n console.log(errorV);\r\n }\r\n FitsShader._prog = gl.createProgram();\r\n gl.attachShader(FitsShader._prog, FitsShader._vert);\r\n gl.attachShader(FitsShader._prog, FitsShader._frag);\r\n gl.linkProgram(FitsShader._prog);\r\n var errcode = gl.getProgramParameter(FitsShader._prog, 35714);\r\n gl.useProgram(FitsShader._prog);\r\n FitsShader.vertLoc = gl.getAttribLocation(FitsShader._prog, 'aVertexPosition');\r\n FitsShader.textureLoc = gl.getAttribLocation(FitsShader._prog, 'aTextureCoord');\r\n FitsShader.projMatLoc = gl.getUniformLocation(FitsShader._prog, 'uPMatrix');\r\n FitsShader.mvMatLoc = gl.getUniformLocation(FitsShader._prog, 'uMVMatrix');\r\n FitsShader.sampLoc = gl.getUniformLocation(FitsShader._prog, 'uSampler');\r\n FitsShader.colorLoc = gl.getUniformLocation(FitsShader._prog, 'colorSampler');\r\n FitsShader.centerScreenLoc = gl.getUniformLocation(FitsShader._prog, 'uCenterScreen');\r\n FitsShader.blank = gl.getUniformLocation(FitsShader._prog, 'blank');\r\n FitsShader.bzero = gl.getUniformLocation(FitsShader._prog, 'bzero');\r\n FitsShader.bscale = gl.getUniformLocation(FitsShader._prog, 'bscale');\r\n FitsShader.minLoc = gl.getUniformLocation(FitsShader._prog, 'min');\r\n FitsShader.maxLoc = gl.getUniformLocation(FitsShader._prog, 'max');\r\n FitsShader.transparentBlackLoc = gl.getUniformLocation(FitsShader._prog, 'transparentBlack');\r\n FitsShader.containsBlanksLoc = gl.getUniformLocation(FitsShader._prog, 'containsBlanks');\r\n FitsShader.scalingLocation = gl.getUniformLocation(FitsShader._prog, 'scaleType');\r\n FitsShader.opacityLoc = gl.getUniformLocation(FitsShader._prog, 'opacity');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n FitsShader.initialized = true;\r\n };\r\n FitsShader.use = function(renderContext, vertex, index, texture, opacity, noDepth, centerWorld) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!FitsShader.initialized) {\r\n FitsShader.init(renderContext);\r\n }\r\n gl.useProgram(FitsShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform1f(FitsShader.opacityLoc, opacity);\r\n gl.uniformMatrix4fv(FitsShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(FitsShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n if (centerWorld.lengthSq() > 0.001) {\r\n var wvp = Matrix3d.multiplyMatrix(mvMat, renderContext.get_projection());\r\n var centerScreen = wvp.transform(centerWorld);\r\n gl.uniform3f(FitsShader.centerScreenLoc, centerScreen.x, centerScreen.y, centerScreen.z);\r\n }\r\n else {\r\n gl.uniform3f(FitsShader.centerScreenLoc, 0, 0, 0);\r\n }\r\n gl.uniform1i(FitsShader.sampLoc, 0);\r\n gl.uniform1i(FitsShader.colorLoc, 1);\r\n gl.uniform1f(FitsShader.blank, FitsShader.blankValue);\r\n gl.uniform1f(FitsShader.bzero, FitsShader.bZero);\r\n gl.uniform1f(FitsShader.bscale, FitsShader.bScale);\r\n gl.uniform1f(FitsShader.minLoc, FitsShader.min);\r\n gl.uniform1f(FitsShader.maxLoc, FitsShader.max);\r\n gl.uniform1i(FitsShader.transparentBlackLoc, FitsShader.transparentBlack);\r\n gl.uniform1i(FitsShader.containsBlanksLoc, FitsShader.containsBlanks);\r\n gl.uniform1i(FitsShader.scalingLocation, FitsShader.scaleType);\r\n if (renderContext.space || noDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(FitsShader.vertLoc);\r\n gl.enableVertexAttribArray(FitsShader.textureLoc);\r\n gl.vertexAttribPointer(FitsShader.vertLoc, 3, 5126, false, 20, 0);\r\n gl.vertexAttribPointer(FitsShader.textureLoc, 2, 5126, false, 20, 12);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, index);\r\n gl.enable(3042);\r\n if (noDepth) {\r\n gl.blendFunc(770, 1);\r\n }\r\n else {\r\n gl.blendFunc(770, 771);\r\n }\r\n }\r\n };\r\n var FitsShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ImageShader\r\n\r\n function ImageShader() {\r\n }\r\n ImageShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' \\n' + ' uniform sampler2D uSampler; \\n' + ' uniform float opacity; \\n' + ' \\n' + ' void main(void) { \\n' + ' vec4 col = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); \\n' + ' gl_FragColor = col * opacity; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec2 aTextureCoord; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vTextureCoord = aTextureCoord; \\n' + ' } \\n' + ' \\n';\r\n ImageShader._frag = gl.createShader(35632);\r\n gl.shaderSource(ImageShader._frag, fragShaderText);\r\n gl.compileShader(ImageShader._frag);\r\n var stat = gl.getShaderParameter(ImageShader._frag, 35713);\r\n if (!stat) {\r\n var errorF = gl.getShaderInfoLog(ImageShader._frag);\r\n }\r\n ImageShader._vert = gl.createShader(35633);\r\n gl.shaderSource(ImageShader._vert, vertexShaderText);\r\n gl.compileShader(ImageShader._vert);\r\n var stat1 = gl.getShaderParameter(ImageShader._vert, 35713);\r\n if (!stat1) {\r\n var errorV = gl.getShaderInfoLog(ImageShader._vert);\r\n }\r\n ImageShader._prog = gl.createProgram();\r\n gl.attachShader(ImageShader._prog, ImageShader._vert);\r\n gl.attachShader(ImageShader._prog, ImageShader._frag);\r\n gl.linkProgram(ImageShader._prog);\r\n var errcode = gl.getProgramParameter(ImageShader._prog, 35714);\r\n gl.useProgram(ImageShader._prog);\r\n ImageShader.vertLoc = gl.getAttribLocation(ImageShader._prog, 'aVertexPosition');\r\n ImageShader.textureLoc = gl.getAttribLocation(ImageShader._prog, 'aTextureCoord');\r\n ImageShader.projMatLoc = gl.getUniformLocation(ImageShader._prog, 'uPMatrix');\r\n ImageShader.mvMatLoc = gl.getUniformLocation(ImageShader._prog, 'uMVMatrix');\r\n ImageShader.sampLoc = gl.getUniformLocation(ImageShader._prog, 'uSampler');\r\n ImageShader.opacityLoc = gl.getUniformLocation(ImageShader._prog, 'opacity');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n ImageShader.initialized = true;\r\n };\r\n ImageShader.use = function(renderContext, vertex, index, texture, opacity, noDepth) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!ImageShader.initialized) {\r\n ImageShader.init(renderContext);\r\n }\r\n gl.useProgram(ImageShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform1f(ImageShader.opacityLoc, opacity);\r\n gl.uniformMatrix4fv(ImageShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(ImageShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(ImageShader.sampLoc, 0);\r\n if (renderContext.space || noDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(ImageShader.vertLoc);\r\n gl.enableVertexAttribArray(ImageShader.textureLoc);\r\n gl.vertexAttribPointer(ImageShader.vertLoc, 3, 5126, false, 20, 0);\r\n gl.vertexAttribPointer(ImageShader.textureLoc, 2, 5126, false, 20, 12);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, index);\r\n gl.enable(3042);\r\n if (noDepth) {\r\n gl.blendFunc(770, 1);\r\n }\r\n else {\r\n gl.blendFunc(770, 771);\r\n }\r\n }\r\n };\r\n var ImageShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ImageShader2\r\n\r\n function ImageShader2() {\r\n }\r\n ImageShader2.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' \\n' + ' uniform sampler2D uSampler; \\n' + ' uniform float opacity; \\n' + ' \\n' + ' void main(void) { \\n' + ' vec4 col = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); \\n' + ' gl_FragColor = col * opacity; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec2 aTextureCoord; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec3 vNormal; \\n' + ' varying vec3 vCamVector; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vTextureCoord = aTextureCoord; \\n' + ' } \\n' + ' \\n';\r\n ImageShader2._frag = gl.createShader(35632);\r\n gl.shaderSource(ImageShader2._frag, fragShaderText);\r\n gl.compileShader(ImageShader2._frag);\r\n var stat = gl.getShaderParameter(ImageShader2._frag, 35713);\r\n if (!stat) {\r\n var errorF = gl.getShaderInfoLog(ImageShader2._frag);\r\n }\r\n ImageShader2._vert = gl.createShader(35633);\r\n gl.shaderSource(ImageShader2._vert, vertexShaderText);\r\n gl.compileShader(ImageShader2._vert);\r\n var stat1 = gl.getShaderParameter(ImageShader2._vert, 35713);\r\n if (!stat1) {\r\n var errorV = gl.getShaderInfoLog(ImageShader2._vert);\r\n }\r\n ImageShader2._prog = gl.createProgram();\r\n gl.attachShader(ImageShader2._prog, ImageShader2._vert);\r\n gl.attachShader(ImageShader2._prog, ImageShader2._frag);\r\n gl.linkProgram(ImageShader2._prog);\r\n var errcode = gl.getProgramParameter(ImageShader2._prog, 35714);\r\n gl.useProgram(ImageShader2._prog);\r\n ImageShader2.vertLoc = gl.getAttribLocation(ImageShader2._prog, 'aVertexPosition');\r\n ImageShader2.textureLoc = gl.getAttribLocation(ImageShader2._prog, 'aTextureCoord');\r\n ImageShader2.projMatLoc = gl.getUniformLocation(ImageShader2._prog, 'uPMatrix');\r\n ImageShader2.mvMatLoc = gl.getUniformLocation(ImageShader2._prog, 'uMVMatrix');\r\n ImageShader2.sampLoc = gl.getUniformLocation(ImageShader2._prog, 'uSampler');\r\n ImageShader2.opacityLoc = gl.getUniformLocation(ImageShader2._prog, 'opacity');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n ImageShader2.initialized = true;\r\n };\r\n ImageShader2.use = function(renderContext, vertex, index, texture, opacity, noDepth) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!ImageShader2.initialized) {\r\n ImageShader2.init(renderContext);\r\n }\r\n gl.useProgram(ImageShader2._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniform1f(ImageShader2.opacityLoc, opacity);\r\n gl.uniformMatrix4fv(ImageShader2.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(ImageShader2.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(ImageShader2.sampLoc, 0);\r\n if (renderContext.space || noDepth) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(ImageShader2.vertLoc);\r\n gl.enableVertexAttribArray(ImageShader2.textureLoc);\r\n gl.vertexAttribPointer(ImageShader2.vertLoc, 3, 5126, false, 32, 0);\r\n gl.vertexAttribPointer(ImageShader2.textureLoc, 2, 5126, false, 32, 24);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, index);\r\n gl.enable(3042);\r\n if (noDepth) {\r\n gl.blendFunc(770, 1);\r\n }\r\n else {\r\n gl.blendFunc(770, 771);\r\n }\r\n }\r\n };\r\n var ImageShader2$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.SpriteShader\r\n\r\n function SpriteShader() {\r\n }\r\n SpriteShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying lowp vec4 vColor; \\n' + ' uniform sampler2D uSampler; \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)) * vColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec2 aTextureCoord; \\n' + ' attribute lowp vec4 aColor; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec4 vColor; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vTextureCoord = aTextureCoord; \\n' + ' vColor = aColor; \\n' + ' } \\n' + ' \\n';\r\n SpriteShader._frag = gl.createShader(35632);\r\n gl.shaderSource(SpriteShader._frag, fragShaderText);\r\n gl.compileShader(SpriteShader._frag);\r\n var stat = gl.getShaderParameter(SpriteShader._frag, 35713);\r\n SpriteShader._vert = gl.createShader(35633);\r\n gl.shaderSource(SpriteShader._vert, vertexShaderText);\r\n gl.compileShader(SpriteShader._vert);\r\n var stat1 = gl.getShaderParameter(SpriteShader._vert, 35713);\r\n SpriteShader._prog = gl.createProgram();\r\n gl.attachShader(SpriteShader._prog, SpriteShader._vert);\r\n gl.attachShader(SpriteShader._prog, SpriteShader._frag);\r\n gl.linkProgram(SpriteShader._prog);\r\n var errcode = gl.getProgramParameter(SpriteShader._prog, 35714);\r\n gl.useProgram(SpriteShader._prog);\r\n SpriteShader.vertLoc = gl.getAttribLocation(SpriteShader._prog, 'aVertexPosition');\r\n SpriteShader.textureLoc = gl.getAttribLocation(SpriteShader._prog, 'aTextureCoord');\r\n SpriteShader.colorLoc = gl.getAttribLocation(SpriteShader._prog, 'aColor');\r\n SpriteShader.projMatLoc = gl.getUniformLocation(SpriteShader._prog, 'uPMatrix');\r\n SpriteShader.mvMatLoc = gl.getUniformLocation(SpriteShader._prog, 'uMVMatrix');\r\n SpriteShader.sampLoc = gl.getUniformLocation(SpriteShader._prog, 'uSampler');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n SpriteShader.initialized = true;\r\n };\r\n SpriteShader.use = function(renderContext, vertex, texture) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!SpriteShader.initialized) {\r\n SpriteShader.init(renderContext);\r\n }\r\n gl.useProgram(SpriteShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(SpriteShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(SpriteShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(SpriteShader.sampLoc, 0);\r\n gl.disable(2929);\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(SpriteShader.vertLoc);\r\n gl.enableVertexAttribArray(SpriteShader.textureLoc);\r\n gl.enableVertexAttribArray(SpriteShader.colorLoc);\r\n gl.vertexAttribPointer(SpriteShader.vertLoc, 3, 5126, false, 36, 0);\r\n gl.vertexAttribPointer(SpriteShader.colorLoc, 4, 5126, false, 36, 12);\r\n gl.vertexAttribPointer(SpriteShader.textureLoc, 2, 5126, false, 36, 28);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.bindBuffer(34963, null);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var SpriteShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ShapeSpriteShader\r\n\r\n function ShapeSpriteShader() {\r\n }\r\n ShapeSpriteShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying lowp vec4 vColor; \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_FragColor = vColor; \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute lowp vec4 aColor; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' varying vec4 vColor; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vColor = aColor; \\n' + ' } \\n' + ' \\n';\r\n ShapeSpriteShader._frag = gl.createShader(35632);\r\n gl.shaderSource(ShapeSpriteShader._frag, fragShaderText);\r\n gl.compileShader(ShapeSpriteShader._frag);\r\n var stat = gl.getShaderParameter(ShapeSpriteShader._frag, 35713);\r\n ShapeSpriteShader._vert = gl.createShader(35633);\r\n gl.shaderSource(ShapeSpriteShader._vert, vertexShaderText);\r\n gl.compileShader(ShapeSpriteShader._vert);\r\n var stat1 = gl.getShaderParameter(ShapeSpriteShader._vert, 35713);\r\n ShapeSpriteShader._prog = gl.createProgram();\r\n gl.attachShader(ShapeSpriteShader._prog, ShapeSpriteShader._vert);\r\n gl.attachShader(ShapeSpriteShader._prog, ShapeSpriteShader._frag);\r\n gl.linkProgram(ShapeSpriteShader._prog);\r\n var errcode = gl.getProgramParameter(ShapeSpriteShader._prog, 35714);\r\n gl.useProgram(ShapeSpriteShader._prog);\r\n ShapeSpriteShader.vertLoc = gl.getAttribLocation(ShapeSpriteShader._prog, 'aVertexPosition');\r\n ShapeSpriteShader.colorLoc = gl.getAttribLocation(ShapeSpriteShader._prog, 'aColor');\r\n ShapeSpriteShader.projMatLoc = gl.getUniformLocation(ShapeSpriteShader._prog, 'uPMatrix');\r\n ShapeSpriteShader.mvMatLoc = gl.getUniformLocation(ShapeSpriteShader._prog, 'uMVMatrix');\r\n gl.disable(2929);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n ShapeSpriteShader.initialized = true;\r\n };\r\n ShapeSpriteShader.use = function(renderContext, vertex) {\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!ShapeSpriteShader.initialized) {\r\n ShapeSpriteShader.init(renderContext);\r\n }\r\n gl.useProgram(ShapeSpriteShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(ShapeSpriteShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(ShapeSpriteShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(ShapeSpriteShader.sampLoc, 0);\r\n gl.disable(2929);\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(ShapeSpriteShader.vertLoc);\r\n gl.enableVertexAttribArray(ShapeSpriteShader.textureLoc);\r\n gl.enableVertexAttribArray(ShapeSpriteShader.colorLoc);\r\n gl.vertexAttribPointer(ShapeSpriteShader.vertLoc, 3, 5126, false, 36, 0);\r\n gl.vertexAttribPointer(ShapeSpriteShader.colorLoc, 4, 5126, false, 36, 12);\r\n gl.bindBuffer(34963, null);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var ShapeSpriteShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TextShader\r\n\r\n function TextShader() {\r\n }\r\n TextShader.init = function(renderContext) {\r\n var gl = renderContext.gl;\r\n var fragShaderText = ' precision mediump float; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' \\n' + ' uniform sampler2D uSampler; \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); \\n' + ' } \\n';\r\n var vertexShaderText = ' attribute vec3 aVertexPosition; \\n' + ' attribute vec2 aTextureCoord; \\n' + ' \\n' + ' uniform mat4 uMVMatrix; \\n' + ' uniform mat4 uPMatrix; \\n' + ' \\n' + ' varying vec2 vTextureCoord; \\n' + ' \\n' + ' \\n' + ' void main(void) { \\n' + ' gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); \\n' + ' vTextureCoord = aTextureCoord; \\n' + ' } \\n' + ' \\n';\r\n TextShader._frag = gl.createShader(35632);\r\n gl.shaderSource(TextShader._frag, fragShaderText);\r\n gl.compileShader(TextShader._frag);\r\n var stat = gl.getShaderParameter(TextShader._frag, 35713);\r\n TextShader._vert = gl.createShader(35633);\r\n gl.shaderSource(TextShader._vert, vertexShaderText);\r\n gl.compileShader(TextShader._vert);\r\n var stat1 = gl.getShaderParameter(TextShader._vert, 35713);\r\n TextShader._prog = gl.createProgram();\r\n gl.attachShader(TextShader._prog, TextShader._vert);\r\n gl.attachShader(TextShader._prog, TextShader._frag);\r\n gl.linkProgram(TextShader._prog);\r\n var errcode = gl.getProgramParameter(TextShader._prog, 35714);\r\n gl.useProgram(TextShader._prog);\r\n TextShader.vertLoc = gl.getAttribLocation(TextShader._prog, 'aVertexPosition');\r\n TextShader.textureLoc = gl.getAttribLocation(TextShader._prog, 'aTextureCoord');\r\n TextShader.projMatLoc = gl.getUniformLocation(TextShader._prog, 'uPMatrix');\r\n TextShader.mvMatLoc = gl.getUniformLocation(TextShader._prog, 'uMVMatrix');\r\n TextShader.sampLoc = gl.getUniformLocation(TextShader._prog, 'uSampler');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n TextShader.initialized = true;\r\n };\r\n TextShader.use = function(renderContext, vertex, texture) {\r\n if (texture == null) {\r\n texture = Texture.getEmpty();\r\n }\r\n var gl = renderContext.gl;\r\n if (gl != null) {\r\n if (!TextShader.initialized) {\r\n TextShader.init(renderContext);\r\n }\r\n gl.useProgram(TextShader._prog);\r\n var mvMat = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n gl.uniformMatrix4fv(TextShader.mvMatLoc, false, mvMat.floatArray());\r\n gl.uniformMatrix4fv(TextShader.projMatLoc, false, renderContext.get_projection().floatArray());\r\n gl.uniform1i(TextShader.sampLoc, 0);\r\n if (renderContext.space) {\r\n gl.disable(2929);\r\n }\r\n else {\r\n gl.enable(2929);\r\n }\r\n gl.disableVertexAttribArray(0);\r\n gl.disableVertexAttribArray(1);\r\n gl.disableVertexAttribArray(2);\r\n gl.disableVertexAttribArray(3);\r\n gl.bindBuffer(34962, vertex);\r\n gl.enableVertexAttribArray(TextShader.vertLoc);\r\n gl.enableVertexAttribArray(TextShader.textureLoc);\r\n gl.vertexAttribPointer(TextShader.vertLoc, 3, 5126, false, 20, 0);\r\n gl.vertexAttribPointer(TextShader.textureLoc, 2, 5126, false, 20, 12);\r\n gl.activeTexture(33984);\r\n gl.bindTexture(3553, texture);\r\n gl.enable(3042);\r\n gl.blendFunc(770, 771);\r\n }\r\n };\r\n var TextShader$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Sprite2d\r\n\r\n function Sprite2d() {\r\n this.vertCount = 0;\r\n }\r\n var Sprite2d$ = {\r\n draw: function(renderContext, points, count, texture, triangleStrips, opacity) {\r\n if (this.vertexBuffer == null) {\r\n this.create(points);\r\n }\r\n else {\r\n this.update(points);\r\n }\r\n if (texture == null) {\r\n ShapeSpriteShader.use(renderContext, this.vertexBuffer);\r\n renderContext.gl.drawArrays((triangleStrips) ? 5 : 4, 0, points.length);\r\n }\r\n else {\r\n SpriteShader.use(renderContext, this.vertexBuffer, (texture != null) ? texture.texture2d : null);\r\n renderContext.gl.drawArrays((triangleStrips) ? 5 : 4, 0, points.length);\r\n }\r\n },\r\n create: function(verts) {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(verts.length * 9);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(verts);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.color.r / 255;\r\n buffer[index++] = pt.color.g / 255;\r\n buffer[index++] = pt.color.b / 255;\r\n buffer[index++] = pt.color.a / 255;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35048);\r\n },\r\n update: function(verts) {\r\n if (this.vertCount < verts.length) {\r\n Tile.prepDevice.deleteBuffer(this.vertexBuffer);\r\n this.create(verts);\r\n return;\r\n }\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(verts.length * 9);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(verts);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.color.r / 255;\r\n buffer[index++] = pt.color.g / 255;\r\n buffer[index++] = pt.color.b / 255;\r\n buffer[index++] = pt.color.a / 255;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferSubData(34962, 0, f32array);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Tessellator\r\n\r\n function Tessellator() {\r\n }\r\n Tessellator.tesselateSimplePoly = function(inputList) {\r\n var results = [];\r\n var tess = new Tessellator();\r\n tess.process(inputList, results);\r\n return results;\r\n };\r\n var Tessellator$ = {\r\n _isLeftOfHalfSpace: function(pntA, pntB, pntTest) {\r\n pntA.normalize();\r\n pntB.normalize();\r\n var cross = Vector3d.cross(pntA, pntB);\r\n var dot = Vector3d.dot(cross, pntTest);\r\n return dot > 0;\r\n },\r\n _insideTriangle: function(pntA, pntB, pntC, pntTest) {\r\n if (!this._isLeftOfHalfSpace(pntA, pntB, pntTest)) {\r\n return false;\r\n }\r\n if (!this._isLeftOfHalfSpace(pntB, pntC, pntTest)) {\r\n return false;\r\n }\r\n if (!this._isLeftOfHalfSpace(pntC, pntA, pntTest)) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n _canClipEar: function(poly, u, v, w, n, verts) {\r\n var p;\r\n var a = poly[verts[u]].copy();\r\n var b = poly[verts[v]].copy();\r\n var c = poly[verts[w]].copy();\r\n var P;\r\n var d = Vector3d.subtractVectors(b, a);\r\n d.normalize();\r\n var e = Vector3d.subtractVectors(b, c);\r\n e.normalize();\r\n var g = Vector3d.cross(d, e);\r\n var bn = b.copy();\r\n bn.normalize();\r\n if (Vector3d.dot(g, bn) > 0) {\r\n return false;\r\n }\r\n for (p = 0; p < n; p++) {\r\n if ((p === u) || (p === v) || (p === w)) {\r\n continue;\r\n }\r\n P = poly[verts[p]].copy();\r\n if (this._insideTriangle(a, b, c, P)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n process: function(poly, result) {\r\n var n = poly.length;\r\n if (poly.length < 3) {\r\n return false;\r\n }\r\n var verts = new Array(poly.length);\r\n for (var i = 0; i < n; i++) {\r\n verts[i] = i;\r\n }\r\n var nv = n;\r\n var count = 2 * nv;\r\n for (var m = 0, v = nv - 1; nv > 2; ) {\r\n if (0 >= (count--)) {\r\n return false;\r\n }\r\n var u = v;\r\n if (nv <= u) {\r\n u = 0;\r\n }\r\n v = u + 1;\r\n if (nv <= v) {\r\n v = 0;\r\n }\r\n var w = v + 1;\r\n if (nv <= w) {\r\n w = 0;\r\n }\r\n if (this._canClipEar(poly, u, v, w, nv, verts)) {\r\n var s, t;\r\n result.push(verts[u]);\r\n result.push(verts[v]);\r\n result.push(verts[w]);\r\n m++;\r\n for (s = v, t = v + 1; t < nv; s++, t++) {\r\n verts[s] = verts[t];\r\n }\r\n nv--;\r\n count = 2 * nv;\r\n }\r\n }\r\n return true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Texture\r\n\r\n function Texture() {\r\n this.imageElement = null;\r\n this.texture2d = null;\r\n this._downloading = false;\r\n this._ready = false;\r\n this._errored = false;\r\n this.URL = '';\r\n }\r\n Texture.getEmpty = function() {\r\n if (Texture.empty == null) {\r\n Texture.empty = Tile.prepDevice.createTexture();\r\n Tile.prepDevice.bindTexture(3553, Texture.empty);\r\n Tile.prepDevice.texImage2D(3553, 0, 6408, 1, 1, 0, 6408, 5121, new Uint8Array([ 0, 0, 0, 0 ]));\r\n Tile.prepDevice.bindTexture(3553, null);\r\n }\r\n return Texture.empty;\r\n };\r\n Texture.fromUrl = function(url) {\r\n var tex = new Texture();\r\n tex.load(url);\r\n return tex;\r\n };\r\n Texture.isPowerOfTwo = function(val) {\r\n return !(val & (val - 1));\r\n };\r\n Texture.fitPowerOfTwo = function(val) {\r\n val--;\r\n for (var i = 1; i < 32; i <<= 1) {\r\n val = val | val >> i;\r\n }\r\n return val + 1;\r\n };\r\n var Texture$ = {\r\n cleanUp: function() {\r\n this.imageElement = null;\r\n Tile.prepDevice.deleteTexture(this.texture2d);\r\n },\r\n dispose: function() {\r\n this.cleanUp();\r\n },\r\n load: function(url) {\r\n var $this = this;\r\n\r\n this.URL = url;\r\n if (!this._downloading) {\r\n this._downloading = true;\r\n this.imageElement = document.createElement('img');\r\n var xdomimg = this.imageElement;\r\n this.imageElement.addEventListener('load', function(e) {\r\n $this._ready = true;\r\n $this._downloading = false;\r\n $this._errored = false;\r\n $this.makeTexture();\r\n }, false);\r\n this.imageElement.addEventListener('error', function(e) {\r\n if (!$this.imageElement.hasAttribute('proxyattempt')) {\r\n $this.imageElement.setAttribute('proxyattempt', true);\r\n var new_url = URLHelpers.singleton.activateProxy($this.URL);\r\n if (new_url != null) {\r\n $this.imageElement.src = new_url;\r\n return;\r\n }\r\n }\r\n $this._downloading = false;\r\n $this._ready = false;\r\n $this._errored = true;\r\n }, false);\r\n xdomimg.crossOrigin = 'anonymous';\r\n this.imageElement.src = this.URL;\r\n }\r\n },\r\n makeTexture: function() {\r\n if (Tile.prepDevice != null) {\r\n try {\r\n this.texture2d = Tile.prepDevice.createTexture();\r\n Tile.prepDevice.bindTexture(3553, this.texture2d);\r\n var image = this.imageElement;\r\n if ((!Texture.isPowerOfTwo(this.imageElement.height) | !Texture.isPowerOfTwo(this.imageElement.width)) === 1) {\r\n var temp = document.createElement('canvas');\r\n temp.height = Texture.fitPowerOfTwo(image.height);\r\n temp.width = Texture.fitPowerOfTwo(image.width);\r\n var ctx = temp.getContext('2d');\r\n ctx.drawImage(image, 0, 0, temp.width, temp.height);\r\n image = temp;\r\n }\r\n Tile.prepDevice.texParameteri(3553, 10242, 33071);\r\n Tile.prepDevice.texParameteri(3553, 10243, 33071);\r\n Tile.prepDevice.texImage2D(3553, 0, 6408, 6408, 5121, image);\r\n Tile.prepDevice.texParameteri(3553, 10241, 9985);\r\n Tile.prepDevice.generateMipmap(3553);\r\n Tile.prepDevice.bindTexture(3553, null);\r\n }\r\n catch ($e1) {\r\n this._errored = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Grids\r\n\r\n function Grids() {\r\n }\r\n Grids._createGalaxyImage = function(renderContext) {\r\n if (Grids._milkyWayImage == null) {\r\n Grids._milkyWayImage = Planets.loadPlanetTexture(URLHelpers.singleton.engineAssetUrl('milkywaybar.jpg'));\r\n }\r\n var subdivs = 50;\r\n var lat, lng;\r\n var index = 0;\r\n var latMin = 64;\r\n var latMax = -64;\r\n var lngMin = -64;\r\n var lngMax = 64;\r\n Grids._galaxyImageVertexBuffer = new PositionTextureVertexBuffer((subdivs + 1) * (subdivs + 1));\r\n var verts = Grids._galaxyImageVertexBuffer.lock();\r\n var x1, y1;\r\n var latDegrees = latMax - latMin;\r\n var lngDegrees = lngMax - lngMin;\r\n var scaleFactor = 60800000;\r\n var ecliptic = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow()) / 180 * Math.PI;\r\n var point;\r\n var textureStepX = 1 / subdivs;\r\n var textureStepY = 1 / subdivs;\r\n for (y1 = 0; y1 <= subdivs; y1++) {\r\n if (y1 !== subdivs) {\r\n lat = latMax - (textureStepY * latDegrees * y1);\r\n }\r\n else {\r\n lat = latMin;\r\n }\r\n for (x1 = 0; x1 <= subdivs; x1++) {\r\n if (x1 !== subdivs) {\r\n lng = lngMin + (textureStepX * lngDegrees * x1);\r\n }\r\n else {\r\n lng = lngMax;\r\n }\r\n index = y1 * (subdivs + 1) + x1;\r\n point = Vector3d.create(lng * scaleFactor, 0, (lat - 28) * scaleFactor);\r\n point.rotateY(213 / 180 * Math.PI);\r\n point.rotateZ((-62.87175) / 180 * Math.PI);\r\n point.rotateY((-192.8595083) / 180 * Math.PI);\r\n point.rotateX(ecliptic);\r\n verts[index] = PositionTexture.createPosRaw(point, (1 - x1 * textureStepX), (y1 * textureStepY));\r\n }\r\n }\r\n Grids._galaxyImageVertexBuffer.unlock();\r\n Grids._galaxyImageTriangleCount = subdivs * subdivs * 2;\r\n var ui16array = new Uint16Array(subdivs * subdivs * 6);\r\n var indexArray = ui16array;\r\n for (y1 = 0; y1 < subdivs; y1++) {\r\n for (x1 = 0; x1 < subdivs; x1++) {\r\n index = (y1 * subdivs * 6) + 6 * x1;\r\n indexArray[index] = (y1 * (subdivs + 1) + x1);\r\n indexArray[index + 2] = ((y1 + 1) * (subdivs + 1) + x1);\r\n indexArray[index + 1] = (y1 * (subdivs + 1) + (x1 + 1));\r\n indexArray[index + 3] = (y1 * (subdivs + 1) + (x1 + 1));\r\n indexArray[index + 5] = ((y1 + 1) * (subdivs + 1) + x1);\r\n indexArray[index + 4] = ((y1 + 1) * (subdivs + 1) + (x1 + 1));\r\n }\r\n }\r\n Grids._galaxyImageIndexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, Grids._galaxyImageIndexBuffer);\r\n Tile.prepDevice.bufferData(34963, ui16array, 35044);\r\n };\r\n Grids.drawGalaxyImage = function(renderContext, opacity) {\r\n if (Grids._galaxyImageIndexBuffer == null) {\r\n Grids._createGalaxyImage(renderContext);\r\n }\r\n var zoom = renderContext.viewCamera.zoom;\r\n var log = Math.log(Math.max(1, zoom)) / Math.log(4);\r\n var distAlpha = (log - 14) * 128;\r\n var alpha = (Math.min(255, Math.max(0, distAlpha)) * opacity);\r\n ImageShader.use(renderContext, Grids._galaxyImageVertexBuffer.vertexBuffer, Grids._galaxyImageIndexBuffer, Grids._milkyWayImage.texture2d, opacity, true);\r\n renderContext.gl.drawElements(4, Grids._galaxyImageTriangleCount * 3, 5123, 0);\r\n };\r\n Grids.drawStars3D = function(renderContext, opacity) {\r\n var zoom = renderContext.viewCamera.zoom;\r\n var distAlpha = Math.max(Math.min(255, (Math.log(zoom) - 15.5) * 40.8), 0);\r\n var alpha = Math.min(255, Math.max(0, ss.truncate(distAlpha)));\r\n if (alpha > 254) {\r\n return;\r\n }\r\n alpha = ((255 - alpha) * opacity);\r\n if (Grids._starSprites == null) {\r\n Grids.initStarVertexBuffer(renderContext);\r\n }\r\n if (Grids._starSprites != null) {\r\n Grids._starSprites.draw(renderContext, alpha / 255, false);\r\n }\r\n };\r\n Grids.initStarVertexBuffer = function(renderContext) {\r\n if (!Grids._starsDownloading) {\r\n Grids.getStarFile(URLHelpers.singleton.coreStaticUrl('wwtweb/catalog.aspx?Q=hipparcos'));\r\n Grids._starsDownloading = true;\r\n }\r\n if (Grids._starSprites == null && Grids._starCount > 0) {\r\n var ecliptic = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow()) / 180 * Math.PI;\r\n var count = Grids._stars.length;\r\n Grids._starCount = count;\r\n Grids._starSprites = new PointList(renderContext);\r\n Grids._starSprites.depthBuffered = false;\r\n Grids._starSprites.showFarSide = true;\r\n var $enum1 = ss.enumerate(Grids._stars);\r\n while ($enum1.moveNext()) {\r\n var star = $enum1.current;\r\n var pos = Coordinates.raDecTo3dAu(star.RA, star.dec, star.distance);\r\n pos.rotateX(ecliptic);\r\n star.position = pos;\r\n var radDec = (1200000) / Math.pow(1.6, star.absoluteMagnitude);\r\n Grids._starSprites.addPoint(pos, star.col, new Dates(0, 1), radDec * 100);\r\n }\r\n }\r\n };\r\n Grids.initializeStarDB = function(text) {\r\n if (Grids._stars == null) {\r\n if (Grids._stars == null) {\r\n Grids._stars = [];\r\n var rows = text.split('\\r\\n');\r\n var star;\r\n var $enum1 = ss.enumerate(rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n var line = row;\r\n star = new Star(line);\r\n if (star.magnitude < Grids._limitingMagnitude && star.par > 0.001) {\r\n Grids._stars.push(star);\r\n Grids._hipparcosIndex[star.id] = star;\r\n }\r\n }\r\n Grids._starCount = Grids._stars.length;\r\n }\r\n }\r\n };\r\n Grids.getStarFile = function(url) {\r\n Grids._webFileStar = new WebFile(url);\r\n Grids._webFileStar.onStateChange = Grids.starFileStateChange;\r\n Grids._webFileStar.send();\r\n };\r\n Grids.starFileStateChange = function() {\r\n if (Grids._webFileStar.get_state() === 2) {\r\n alert(Grids._webFileStar.get_message());\r\n }\r\n else if (Grids._webFileStar.get_state() === 1) {\r\n Grids.initializeStarDB(Grids._webFileStar.getText());\r\n }\r\n };\r\n Grids.getGalaxyFile = function(url) {\r\n Grids._webFileGalaxy = new WebFile(url);\r\n Grids._webFileGalaxy.responseType = 'blob';\r\n Grids._webFileGalaxy.onStateChange = Grids.galaxyFileStateChange;\r\n Grids._webFileGalaxy.send();\r\n };\r\n Grids.galaxyFileStateChange = function() {\r\n if (Grids._webFileGalaxy.get_state() === 2) {\r\n alert(Grids._webFileGalaxy.get_message());\r\n }\r\n else if (Grids._webFileGalaxy.get_state() === 1) {\r\n var mainBlob = Grids._webFileGalaxy.getBlob();\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n var br = new BinaryReader(new Uint8Array(chunck.result));\r\n Grids.initializeCosmos(br);\r\n };\r\n chunck.readAsArrayBuffer(mainBlob);\r\n }\r\n };\r\n Grids.drawCosmos3D = function(renderContext, opacity) {\r\n var device = renderContext.gl;\r\n var zoom = renderContext.viewCamera.zoom;\r\n var distAlpha = ((Math.log(Math.max(1, zoom)) / Math.log(4)) - 15.5) * 90;\r\n var alpha = Math.min(255, Math.max(0, ss.truncate(distAlpha)));\r\n if (alpha < 3) {\r\n return;\r\n }\r\n Grids.initCosmosVertexBuffer();\r\n if (Grids._galaxyTextures == null) {\r\n if (Grids._largeSet) {\r\n Grids._galaxyTextures = new Array(256);\r\n for (var i = 0; i < 256; i++) {\r\n var num = i.toString();\r\n while (num.length < 4) {\r\n num = '0' + num;\r\n }\r\n var name = ss.format(URLHelpers.singleton.engineAssetUrl('galimg/gal_{0}.jpg'), num);\r\n Grids._galaxyTextures[i] = Planets.loadPlanetTexture(name);\r\n }\r\n }\r\n }\r\n if (Grids._cosmosReady) {\r\n var count = 256;\r\n for (var i = 0; i < count; i++) {\r\n Grids._cosmosSprites[i].drawTextured(renderContext, Grids._galaxyTextures[i].texture2d, (alpha * opacity) / 255);\r\n }\r\n }\r\n };\r\n Grids.initCosmosVertexBuffer = function() {\r\n if (Grids._cosmosSprites == null) {\r\n Grids._downloadCosmosFile();\r\n }\r\n };\r\n Grids._createCosmosVertexBuffer = function(renderContext) {\r\n var device = Tile.prepDevice;\r\n var bucketCount = 256;\r\n if (Grids._cosmosSprites != null) {\r\n for (var ij = 0; ij < bucketCount; ij++) {\r\n if (Grids._cosmosSprites[ij] != null) {\r\n Grids._cosmosSprites[ij] = null;\r\n }\r\n }\r\n }\r\n Grids._cosmosSprites = null;\r\n var ecliptic = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow()) / 180 * Math.PI;\r\n Grids._cosmosSprites = new Array(bucketCount);\r\n var indexList = new Array(bucketCount);\r\n for (var i = 0; i < bucketCount; i++) {\r\n var count = Grids._galaxyVertexCounts[i];\r\n Grids._cosmosSprites[i] = new PointList(renderContext);\r\n Grids._cosmosSprites[i].depthBuffered = false;\r\n Grids._cosmosSprites[i].showFarSide = true;\r\n indexList[i] = 0;\r\n }\r\n var $enum1 = ss.enumerate(Grids._cosmos);\r\n while ($enum1.moveNext()) {\r\n var galaxy = $enum1.current;\r\n var bucket = galaxy.eTypeBucket;\r\n var index = indexList[bucket];\r\n var pos = Coordinates.raDecTo3dAu(galaxy.RA, galaxy.dec, (galaxy.distance * 206264.806 * 1000000) / 0.73);\r\n pos.rotateX(ecliptic);\r\n galaxy.position = pos;\r\n Grids._cosmosSprites[bucket].addPoint(pos, Colors.get_white(), new Dates(0, 1), (1E+09 * galaxy.size * 100));\r\n indexList[bucket]++;\r\n }\r\n Grids._cosmosReady = true;\r\n };\r\n Grids.initializeCosmos = function(br) {\r\n var max = Math.pow(100, 2.849485002);\r\n if (Grids._cosmos == null) {\r\n Grids._galaxyVertexCounts = new Array((Grids._largeSet) ? 256 : 20);\r\n if (Grids._cosmos == null) {\r\n Grids._cosmos = [];\r\n var galaxy;\r\n try {\r\n var count = 0;\r\n while (br.get_position() < br.get_length()) {\r\n galaxy = new Galaxy(br);\r\n Grids._cosmos.push(galaxy);\r\n Grids._galaxyVertexCounts[galaxy.eTypeBucket]++;\r\n count++;\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n br.close();\r\n }\r\n Grids._createCosmosVertexBuffer(WWTControl.singleton.renderContext);\r\n }\r\n };\r\n Grids._downloadCosmosFile = function() {\r\n if (!Grids._downloadingGalaxy) {\r\n Grids.getGalaxyFile(URLHelpers.singleton.coreStaticUrl('wwtweb/catalog.aspx?Q=cosmosnewbin'));\r\n Grids._downloadingGalaxy = true;\r\n }\r\n return false;\r\n };\r\n Grids.drawEquitorialGrid = function(renderContext, opacity, drawColor) {\r\n if (Grids._equLineList == null) {\r\n Grids._equLineList = new SimpleLineList();\r\n Grids._equLineList.set_depthBuffered(false);\r\n for (var hour = 0; hour < 24; hour++) {\r\n for (var dec = -80; dec < 80; dec += 2) {\r\n Grids._equLineList.addLine(Coordinates.raDecTo3dAu(hour, dec, 1), Coordinates.raDecTo3dAu(hour, dec + 2, 1));\r\n }\r\n }\r\n for (var dec = -80; dec <= 80; dec += 10) {\r\n for (var hour = 0; hour < 23.8; hour += 0.2) {\r\n Grids._equLineList.addLine(Coordinates.raDecTo3dAu(hour, dec, 1), Coordinates.raDecTo3dAu(hour + 0.2, dec, 1));\r\n }\r\n }\r\n var counter = 0;\r\n for (var ra = 0; ra < 24; ra += 0.25) {\r\n var dec = 0.5;\r\n switch (counter % 4) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 3:\r\n case 1:\r\n dec = 0.25;\r\n break;\r\n }\r\n counter++;\r\n Grids._equLineList.addLine(Coordinates.raDecTo3dAu(ra, dec, 1), Coordinates.raDecTo3dAu(ra, -dec, 1));\r\n }\r\n counter = 0;\r\n for (var ra = 0; ra < 24; ra += 3) {\r\n counter = 0;\r\n for (var dec = -80; dec <= 80; dec += 1) {\r\n var width = 0.5 / 30;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n width = 0.5 / 15;\r\n break;\r\n }\r\n counter++;\r\n Grids._equLineList.addLine(Coordinates.raDecTo3dAu(ra + width, dec, 1), Coordinates.raDecTo3dAu(ra - width, dec, 1));\r\n }\r\n }\r\n }\r\n Grids._equLineList.drawLines(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids.drawEquitorialGridText = function(renderContext, opacity, drawColor) {\r\n Grids._makeEquitorialGridText();\r\n Grids._equTextBatch.draw(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids._makeEquitorialGridText = function() {\r\n if (Grids._equTextBatch == null) {\r\n Grids._equTextBatch = new Text3dBatch(30);\r\n var index = 0;\r\n for (var ra = 0; ra < 24; ra++) {\r\n var text = ra.toString() + ' hr';\r\n if (ra < 10) {\r\n text = ' ' + ra.toString() + ' hr';\r\n }\r\n Grids._equTextBatch.add(new Text3d(Coordinates.raDecTo3dAu(ra + 0.005, 0.4, 1), Coordinates.raDecTo3dAu(ra + 0.005, 0.5, 1), text, 45, 0.00018));\r\n }\r\n index = 0;\r\n for (var ra = 0; ra < 24; ra += 3) {\r\n for (var dec = -80; dec <= 80; dec += 10) {\r\n if (!dec) {\r\n continue;\r\n }\r\n var text = dec.toString();\r\n if (dec > 0) {\r\n text = ' +' + dec.toString();\r\n Grids._equTextBatch.add(new Text3d(Coordinates.raDecTo3dAu(ra, dec - 0.4, 1), Coordinates.raDecTo3dAu(ra, dec - 0.3, 1), text, 45, 0.00018));\r\n }\r\n else {\r\n text = ' - ' + text.substr(1);\r\n Grids._equTextBatch.add(new Text3d(Coordinates.raDecTo3dAu(ra, dec + 0.4, 1), Coordinates.raDecTo3dAu(ra, dec + 0.5, 1), text, 45, 0.00018));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n };\r\n Grids.drawEcliptic = function(renderContext, opacity, drawColor) {\r\n var col = drawColor;\r\n var year = SpaceTimeController.get_now().getUTCFullYear();\r\n if (Grids._eclipticOverviewLineList == null || year !== Grids._eclipticYear) {\r\n if (Grids._eclipticOverviewLineList != null) {\r\n Grids._eclipticOverviewLineList.clear();\r\n Grids._eclipticOverviewLineList = null;\r\n }\r\n Grids._eclipticYear = year;\r\n var obliquity = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow());\r\n var mat = Matrix3d._rotationX((-obliquity / 360 * (Math.PI * 2)));\r\n var daysPerYear = 365.25;\r\n if (DT.isLeap(year, true)) {\r\n Grids._monthDays[1] = 29;\r\n daysPerYear = 366;\r\n }\r\n else {\r\n Grids._monthDays[1] = 28;\r\n daysPerYear = 365;\r\n }\r\n var count = 2 * ss.truncate(daysPerYear);\r\n Grids._eclipticCount = ss.truncate(daysPerYear);\r\n var jYear = SpaceTimeController.utcToJulian(new Date(year, 0, 1, 12, 0, 0));\r\n var index = 0;\r\n var d = 0;\r\n Grids._eclipticOverviewLineList = new SimpleLineList();\r\n Grids._eclipticOverviewLineList.set_depthBuffered(false);\r\n for (var m = 0; m < 12; m++) {\r\n var daysThisMonth = ss.truncate(Grids._monthDays[m]);\r\n for (var i = 0; i < daysThisMonth; i++) {\r\n var sunRaDec = Planets.getPlanetLocationJD('Sun', jYear);\r\n var sunEcliptic = CT.eq2Ec(sunRaDec.RA, sunRaDec.dec, obliquity);\r\n d = sunEcliptic.x;\r\n var width = 0.005;\r\n if (!i) {\r\n width = 0.01;\r\n }\r\n var dd = d;\r\n Grids._eclipticOverviewLineList.addLine(Vector3d._transformCoordinate(Vector3d.create(Math.cos((dd * Math.PI * 2) / 360), width, Math.sin((dd * Math.PI * 2) / 360)), mat), Vector3d._transformCoordinate(Vector3d.create(Math.cos((dd * Math.PI * 2) / 360), -width, Math.sin((dd * Math.PI * 2) / 360)), mat));\r\n index++;\r\n jYear += 1;\r\n }\r\n d += Grids._monthDays[m];\r\n }\r\n }\r\n Grids._eclipticOverviewLineList.drawLines(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids.drawEclipticText = function(renderContext, opacity, drawColor) {\r\n Grids._makeEclipticText();\r\n Grids._eclipOvTextBatch.draw(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids._makeEclipticText = function() {\r\n var year = SpaceTimeController.get_now().getUTCFullYear();\r\n if (Grids._eclipOvTextBatch == null) {\r\n Grids._eclipOvTextBatch = new Text3dBatch(80);\r\n Grids._eclipticTextYear = year;\r\n var obliquity = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow());\r\n var mat = Matrix3d._rotationX((-obliquity / 360 * (Math.PI * 2)));\r\n var daysPerYear = 365.25;\r\n if (DT.isLeap(year, true)) {\r\n Grids._monthDays[1] = 29;\r\n daysPerYear = 366;\r\n }\r\n else {\r\n Grids._monthDays[1] = 28;\r\n daysPerYear = 365;\r\n }\r\n var count = 2 * ss.truncate(daysPerYear);\r\n Grids._eclipticCount = ss.truncate(daysPerYear);\r\n var jYear = SpaceTimeController.utcToJulian(new Date(year, 0, 1, 12, 0, 0));\r\n var index = 0;\r\n var d = 0;\r\n for (var m = 0; m < 12; m++) {\r\n var daysThisMonth = ss.truncate(Grids._monthDays[m]);\r\n for (var i = 0; i < daysThisMonth; i++) {\r\n var sunRaDec = Planets.getPlanetLocationJD('Sun', jYear);\r\n var sunEcliptic = CT.eq2Ec(sunRaDec.RA, sunRaDec.dec, obliquity);\r\n d = sunEcliptic.x;\r\n var dd = d;\r\n if (i === Math.floor(daysThisMonth / 2)) {\r\n var center = Vector3d._transformCoordinate(Vector3d.create(Math.cos((dd * Math.PI * 2) / 360), 0.025, Math.sin((dd * Math.PI * 2) / 360)), mat);\r\n var up = Vector3d._transformCoordinate(Vector3d.create(Math.cos((dd * Math.PI * 2) / 360), 0.045, Math.sin((dd * Math.PI * 2) / 360)), mat);\r\n up.subtract(center);\r\n up.normalize();\r\n Grids._eclipOvTextBatch.add(new Text3d(center, up, Grids._monthNames[m], 80, 0.000159375));\r\n }\r\n index++;\r\n index++;\r\n jYear += 1;\r\n }\r\n d += Grids._monthDays[m];\r\n }\r\n }\r\n };\r\n Grids.drawPrecessionChart = function(renderContext, opacity, drawColor) {\r\n Grids._makePrecessionChart();\r\n Grids._precTextBatch.draw(renderContext, opacity, drawColor);\r\n Grids._precLineList.drawLines(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids._makePrecessionChart = function() {\r\n var obliquity = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow());\r\n var mat = Matrix3d._rotationX((obliquity / 360 * (Math.PI * 2)));\r\n var col = Colors.get_white();\r\n if (Grids._precLineList == null) {\r\n Grids._precLineList = new SimpleLineList();\r\n Grids._precLineList.set_depthBuffered(false);\r\n for (var l = 0; l < 360; l++) {\r\n var b = 90 - obliquity;\r\n Grids._precLineList.addLine(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu((l + 1) / 15, b, 1), mat));\r\n }\r\n for (var l = -12000; l < 13000; l += 2000) {\r\n var b = 90 - obliquity;\r\n var p = -((l - 2000) / 25772 * 24) - 6;\r\n Grids._precLineList.addLine(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(p, b - 0.5, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(p, b + 0.5, 1), mat));\r\n }\r\n }\r\n if (Grids._precTextBatch == null) {\r\n Grids._precTextBatch = new Text3dBatch(50);\r\n for (var l = -12000; l < 13000; l += 2000) {\r\n var b = 90 - obliquity + 3;\r\n var p = -((l - 2000) / 25772 * 24) - 6;\r\n var text = l.toString();\r\n if (!l) {\r\n b = 90 - obliquity + 2;\r\n text = '1 CE';\r\n }\r\n else if (l < 0) {\r\n text = ' ' + Math.abs(l).toString() + ' BCE';\r\n }\r\n else {\r\n text = Math.abs(l).toString() + ' CE';\r\n }\r\n if (text.length === 9) {\r\n text = ' ' + text;\r\n }\r\n Grids._precTextBatch.add(new Text3d(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(p, b, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(p + 0.01, b, 1), mat), text, 75, 0.00015));\r\n }\r\n }\r\n return;\r\n };\r\n Grids.drawAltAzGrid = function(renderContext, opacity, drawColor) {\r\n var zenithAltAz = new Coordinates(0, 0);\r\n var zenith = Coordinates.horizonToEquitorial(zenithAltAz, SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n var raPart = -((zenith.get_RA() + 6) / 24 * (Math.PI * 2));\r\n var decPart = -(zenith.get_dec() / 360 * (Math.PI * 2));\r\n var raText = Coordinates.formatDMS(zenith.get_RA());\r\n var mat = Matrix3d._rotationY(-raPart);\r\n mat._multiply(Matrix3d._rotationX(decPart));\r\n mat.invert();\r\n if (Grids._altAzLineList == null) {\r\n Grids._altAzLineList = new SimpleLineList();\r\n Grids._altAzLineList.set_depthBuffered(false);\r\n for (var l = 0; l < 360; l += 10) {\r\n for (var b = -80; b < 80; b += 2) {\r\n Grids._altAzLineList.addLine(Coordinates.raDecTo3dAu(l / 15, b, 1), Coordinates.raDecTo3dAu(l / 15, b + 2, 1));\r\n }\r\n }\r\n for (var b = -80; b <= 80; b += 10) {\r\n for (var l = 0; l < 360; l += 5) {\r\n Grids._altAzLineList.addLine(Coordinates.raDecTo3dAu(l / 15, b, 1), Coordinates.raDecTo3dAu((l + 5) / 15, b, 1));\r\n }\r\n }\r\n var counter = 0;\r\n for (var l = 0; l < 360; l += 1) {\r\n var b = 0.25;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n b = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._altAzLineList.addLine(Coordinates.raDecTo3dAu(l / 15, b, 1), Coordinates.raDecTo3dAu(l / 15, -b, 1));\r\n }\r\n counter = 0;\r\n for (var l = 0; l < 360; l += 90) {\r\n counter = 0;\r\n for (var b = -80; b <= 80; b += 1) {\r\n var width = 0.5 / 2;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n width = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._altAzLineList.addLine(Coordinates.raDecTo3dAu((l + width) / 15, b, 1), Coordinates.raDecTo3dAu((l - width) / 15, b, 1));\r\n }\r\n }\r\n }\r\n var matOldWorld = renderContext.get_world().clone();\r\n var matOldWorldBase = renderContext.get_worldBase().clone();\r\n renderContext.set_worldBase(Matrix3d.multiplyMatrix(mat, renderContext.get_world()));\r\n renderContext.set_world(renderContext.get_worldBase().clone());\r\n renderContext.makeFrustum();\r\n Grids._altAzLineList.viewTransform = Matrix3d.invertMatrix(mat);\r\n Grids._altAzLineList.drawLines(renderContext, opacity, drawColor);\r\n renderContext.set_worldBase(matOldWorldBase);\r\n renderContext.set_world(matOldWorld);\r\n renderContext.makeFrustum();\r\n return true;\r\n };\r\n Grids.drawAltAzGridText = function(renderContext, opacity, drawColor) {\r\n var zenithAltAz = new Coordinates(0, 0);\r\n var zenith = Coordinates.horizonToEquitorial(zenithAltAz, SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n var raPart = -((zenith.get_RA() - 6) / 24 * (Math.PI * 2));\r\n var decPart = -(zenith.get_dec() / 360 * (Math.PI * 2));\r\n var raText = Coordinates.formatDMS(zenith.get_RA());\r\n var mat = Matrix3d._rotationY(-raPart - Math.PI);\r\n mat._multiply(Matrix3d._rotationX(decPart));\r\n mat.invert();\r\n Grids._makeAltAzGridText();\r\n var matOldWorld = renderContext.get_world().clone();\r\n var matOldWorldBase = renderContext.get_worldBase().clone();\r\n renderContext.set_worldBase(Matrix3d.multiplyMatrix(mat, renderContext.get_world()));\r\n renderContext.set_world(renderContext.get_worldBase().clone());\r\n renderContext.makeFrustum();\r\n Grids._altAzTextBatch.viewTransform = Matrix3d.invertMatrix(mat);\r\n Grids._altAzTextBatch.draw(renderContext, opacity, drawColor);\r\n renderContext.set_worldBase(matOldWorldBase);\r\n renderContext.set_world(matOldWorld);\r\n renderContext.makeFrustum();\r\n return true;\r\n };\r\n Grids._makeAltAzGridText = function() {\r\n var drawColor = Colors.get_white();\r\n var index = 0;\r\n if (Grids._altAzTextBatch == null) {\r\n Grids._altAzTextBatch = new Text3dBatch(30);\r\n for (var l = 0; l < 360; l += 10) {\r\n var text = ' ' + l.toString();\r\n if (l < 10) {\r\n text = ' ' + l.toString();\r\n }\r\n else if (l < 100) {\r\n text = ' ' + l.toString();\r\n }\r\n var lc = 360 - l;\r\n Grids._altAzTextBatch.add(new Text3d(Coordinates.raDecTo3dAu(lc / 15 - 6, 0.4, 1), Coordinates.raDecTo3dAu(lc / 15 - 6, 0.5, 1), text, 75, 0.00018));\r\n }\r\n index = 0;\r\n for (var l = 0; l < 360; l += 90) {\r\n for (var b = -80; b <= 80; b += 10) {\r\n if (!b) {\r\n continue;\r\n }\r\n var text = b.toString();\r\n if (b > 0) {\r\n text = ' +' + b.toString();\r\n Grids._altAzTextBatch.add(new Text3d(Coordinates.raDecTo3dAu(l / 15, b - 0.4, 1), Coordinates.raDecTo3dAu(l / 15, b - 0.3, 1), text, 75, 0.00018));\r\n }\r\n else {\r\n text = ' - ' + text.substr(1);\r\n Grids._altAzTextBatch.add(new Text3d(Coordinates.raDecTo3dAu(l / 15, b + 0.4, 1), Coordinates.raDecTo3dAu(l / 15, b + 0.5, 1), text, 75, 0.00018));\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n return;\r\n };\r\n Grids.drawEclipticGrid = function(renderContext, opacity, drawColor) {\r\n if (Grids._eclipticLineList == null) {\r\n Grids._eclipticLineList = new SimpleLineList();\r\n Grids._eclipticLineList.set_depthBuffered(false);\r\n var obliquity = Coordinates.meanObliquityOfEcliptic(2451545);\r\n var mat = Matrix3d._rotationX((-obliquity / 360 * (Math.PI * 2)));\r\n for (var l = 0; l < 360; l += 10) {\r\n for (var b = -80; b < 80; b += 2) {\r\n Grids._eclipticLineList.addLine(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b + 2, 1), mat));\r\n }\r\n }\r\n for (var b = -80; b <= 80; b += 10) {\r\n for (var l = 0; l < 360; l += 5) {\r\n Grids._eclipticLineList.addLine(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu((l + 5) / 15, b, 1), mat));\r\n }\r\n }\r\n var counter = 0;\r\n for (var l = 0; l < 360; l += 1) {\r\n var b = 0.25;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n b = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._eclipticLineList.addLine(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, -b, 1), mat));\r\n }\r\n counter = 0;\r\n for (var l = 0; l < 360; l += 90) {\r\n counter = 0;\r\n for (var b = -80; b <= 80; b += 1) {\r\n var width = 0.5 / 2;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n width = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._eclipticLineList.addLine(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu((l + width) / 15, b, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu((l - width) / 15, b, 1), mat));\r\n }\r\n }\r\n }\r\n Grids._eclipticLineList.drawLines(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids.drawEclipticGridText = function(renderContext, opacity, drawColor) {\r\n Grids._makeEclipticGridText();\r\n Grids._eclipticTextBatch.draw(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids._makeEclipticGridText = function() {\r\n var drawColor = Colors.get_white();\r\n var obliquity = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow());\r\n var mat = Matrix3d._rotationX((-obliquity / 360 * (Math.PI * 2)));\r\n if (Grids._eclipticTextBatch == null) {\r\n Grids._eclipticTextBatch = new Text3dBatch(30);\r\n for (var l = 0; l < 360; l += 10) {\r\n var text = ' ' + l.toString();\r\n if (l < 10) {\r\n text = ' ' + l.toString();\r\n }\r\n else if (l < 100) {\r\n text = ' ' + l.toString();\r\n }\r\n Grids._eclipticTextBatch.add(new Text3d(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, 0.4, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, 0.5, 1), mat), text, 75, 0.00018));\r\n }\r\n for (var l = 0; l < 360; l += 90) {\r\n for (var b = -80; b <= 80; b += 10) {\r\n if (!b) {\r\n continue;\r\n }\r\n var text = b.toString();\r\n if (b > 0) {\r\n text = ' +' + b.toString();\r\n Grids._eclipticTextBatch.add(new Text3d(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b - 0.4, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b - 0.3, 1), mat), text, 75, 0.00018));\r\n }\r\n else {\r\n text = ' - ' + text.substr(1);\r\n Grids._eclipticTextBatch.add(new Text3d(Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b + 0.4, 1), mat), Vector3d._transformCoordinate(Coordinates.raDecTo3dAu(l / 15, b + 0.5, 1), mat), text, 75, 0.00018));\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n };\r\n Grids.drawGalacticGrid = function(renderContext, opacity, drawColor) {\r\n if (Grids._galLineList == null) {\r\n Grids._galLineList = new SimpleLineList();\r\n Grids._galLineList.set_depthBuffered(false);\r\n for (var l = 0; l < 360; l += 10) {\r\n for (var b = -80; b < 80; b += 2) {\r\n Grids._galLineList.addLine(Coordinates.galacticTo3dDouble(l, b), Coordinates.galacticTo3dDouble(l, b + 2));\r\n }\r\n }\r\n for (var b = -80; b <= 80; b += 10) {\r\n for (var l = 0; l < 360; l += 5) {\r\n Grids._galLineList.addLine(Coordinates.galacticTo3dDouble(l, b), Coordinates.galacticTo3dDouble(l + 5, b));\r\n }\r\n }\r\n var counter = 0;\r\n for (var l = 0; l < 360; l += 1) {\r\n var b = 0.25;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n b = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._galLineList.addLine(Coordinates.galacticTo3dDouble(l, b), Coordinates.galacticTo3dDouble(l, -b));\r\n }\r\n counter = 0;\r\n for (var l = 0; l < 360; l += 90) {\r\n counter = 0;\r\n for (var b = -80; b <= 80; b += 1) {\r\n var width = 0.5 / 2;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n width = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._galLineList.addLine(Coordinates.galacticTo3dDouble(l + width, b), Coordinates.galacticTo3dDouble(l - width, b));\r\n }\r\n }\r\n }\r\n Grids._galLineList.drawLines(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids.drawGalacticGridText = function(renderContext, opacity, drawColor) {\r\n Grids._makeGalacticGridText();\r\n Grids._galTextBatch.draw(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids._makeGalacticGridText = function() {\r\n if (Grids._galTextBatch == null) {\r\n Grids._galTextBatch = new Text3dBatch(30);\r\n for (var l = 0; l < 360; l += 10) {\r\n var text = ' ' + l.toString();\r\n if (l < 10) {\r\n text = ' ' + l.toString();\r\n }\r\n else if (l < 100) {\r\n text = ' ' + l.toString();\r\n }\r\n Grids._galTextBatch.add(new Text3d(Coordinates.galacticTo3dDouble(l, 0.4), Coordinates.galacticTo3dDouble(l, 0.5), text, 75, 0.00018));\r\n }\r\n for (var l = 0; l < 360; l += 90) {\r\n for (var b = -80; b <= 80; b += 10) {\r\n if (!b) {\r\n continue;\r\n }\r\n var text = b.toString();\r\n if (b > 0) {\r\n text = ' +' + b.toString();\r\n Grids._galTextBatch.add(new Text3d(Coordinates.galacticTo3dDouble(l, b - 0.4), Coordinates.galacticTo3dDouble(l, b - 0.3), text, 75, 0.00018));\r\n }\r\n else {\r\n text = ' - ' + text.substr(1);\r\n Grids._galTextBatch.add(new Text3d(Coordinates.galacticTo3dDouble(l, b + 0.4), Coordinates.galacticTo3dDouble(l, b + 0.5), text, 75, 0.00018));\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Grids.drawPlanetGrid = function(renderContext, opacity, drawColor) {\r\n if (Grids._planetLineList == null) {\r\n Grids._planetLineList = new SimpleLineList();\r\n Grids._planetLineList.set_depthBuffered(true);\r\n var col = drawColor;\r\n for (var lng = 0; lng < 360; lng += 10) {\r\n for (var lat = -80; lat < 80; lat += 2) {\r\n Grids._planetLineList.addLine(Coordinates.geoTo3dDouble(lat, lng), Coordinates.geoTo3dDouble(lat + 2, lng));\r\n }\r\n }\r\n for (var lat = -80; lat <= 80; lat += 10) {\r\n for (var l = 0; l < 360; l += 5) {\r\n Grids._planetLineList.addLine(Coordinates.geoTo3dDouble(lat, l), Coordinates.geoTo3dDouble(lat, l + 5));\r\n }\r\n }\r\n var counter = 0;\r\n for (var lng = 0; lng < 360; lng += 1) {\r\n var lat = 0.25;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n lat = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._planetLineList.addLine(Coordinates.geoTo3dDouble(lat, lng), Coordinates.geoTo3dDouble(-lat, lng));\r\n }\r\n counter = 0;\r\n for (var lng = 0; lng < 360; lng += 90) {\r\n counter = 0;\r\n for (var b = -80; b <= 80; b += 1) {\r\n var width = 0.5 / 2;\r\n switch (counter % 10) {\r\n case 0:\r\n counter++;\r\n continue;\r\n case 5:\r\n width = 0.5;\r\n break;\r\n }\r\n counter++;\r\n Grids._planetLineList.addLine(Coordinates.geoTo3dDouble(b, lng + width), Coordinates.geoTo3dDouble(b, lng - width));\r\n }\r\n }\r\n }\r\n Grids._planetLineList.aaFix = false;\r\n Grids._planetLineList.set_depthBuffered(true);\r\n Grids._planetLineList.sky = false;\r\n Grids._planetLineList.drawLines(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids.drawPlanetGridText = function(renderContext, opacity, drawColor) {\r\n Grids._makePlanetGridText();\r\n Grids._planetTextBatch.draw(renderContext, opacity, drawColor);\r\n return true;\r\n };\r\n Grids._makePlanetGridText = function() {\r\n if (Grids._planetTextBatch == null) {\r\n Grids._planetTextBatch = new Text3dBatch(80);\r\n for (var lng = -180; lng < 180; lng += 10) {\r\n var text = ' ' + lng.toString();\r\n if (lng < 10) {\r\n text = ' ' + lng.toString();\r\n }\r\n else if (lng < 100) {\r\n text = ' ' + lng.toString();\r\n }\r\n Grids._planetTextBatch.add(new Text3d(Coordinates.geoTo3dDouble(0.4, lng), Coordinates.geoTo3dDouble(0.5, lng), text, -80, 6E-05));\r\n }\r\n for (var lng = 0; lng < 360; lng += 90) {\r\n for (var lat = -80; lat <= 80; lat += 10) {\r\n if (!lat) {\r\n continue;\r\n }\r\n var text = lat.toString();\r\n if (lat > 0) {\r\n text = ' +' + lat.toString();\r\n Grids._planetTextBatch.add(new Text3d(Coordinates.geoTo3dDouble(lat - 0.4, lng), Coordinates.geoTo3dDouble(lat - 0.3, lng), text, -80, 6E-05));\r\n }\r\n else {\r\n text = ' - ' + text.substring(1);\r\n Grids._planetTextBatch.add(new Text3d(Coordinates.geoTo3dDouble(lat + 0.4, lng), Coordinates.geoTo3dDouble(lat + 0.5, lng), text, -80, 6E-05));\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var Grids$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Imageset\r\n\r\n function Imageset() {\r\n this._projection = 0;\r\n this._imageSetID = 0;\r\n this._baseTileDegrees = 0;\r\n this._widthFactor = 1;\r\n this.demUrl = '';\r\n this._levels = 0;\r\n this._mercator = false;\r\n this._bottomsUp = false;\r\n this._baseLevel = 1;\r\n this._quadTreeTileMap = '0123';\r\n this._centerX = 0;\r\n this._centerY = 0;\r\n this._rotation = 0;\r\n this._meanRadius = 0;\r\n this._dataSetType = 0;\r\n this._bandPass = 3;\r\n this._altUrl = '';\r\n this._singleImage = false;\r\n this._fitsProperties = new FitsProperties();\r\n this._matrixComputed = false;\r\n this._name = '';\r\n this._sparse = false;\r\n this._thumbnailUrl = '';\r\n this._generic = false;\r\n this._defaultSet = false;\r\n this._elevationModel = false;\r\n this._offsetX = 0;\r\n this._offsetY = 0;\r\n }\r\n Imageset.getTileKey = function(imageset, level, x, y, parent) {\r\n if (imageset.get_projection() === 7 && parent != null) {\r\n var ipix = (parent).ipix * 4 + y * 2 + x;\r\n return imageset.get_imageSetID().toString() + '\\\\' + level.toString() + '\\\\' + ipix.toString();\r\n }\r\n return imageset.get_imageSetID().toString() + '\\\\' + level.toString() + '\\\\' + y.toString() + '_' + x.toString();\r\n };\r\n Imageset.getNewTile = function(imageset, level, x, y, parent) {\r\n switch (imageset.get_projection()) {\r\n case 0:\r\n var newTile = MercatorTile.create(level, x, y, imageset, parent);\r\n return newTile;\r\n case 1:\r\n return EquirectangularTile.create(level, x, y, imageset, parent);\r\n case 3:\r\n default:\r\n return ToastTile.create(level, x, y, imageset, parent);\r\n case 5:\r\n return new SkyImageTile(level, x, y, imageset, parent);\r\n case 6:\r\n return PlotTile.create(level, x, y, imageset, parent);\r\n case 7:\r\n if (imageset.get_hipsProperties() == null) {\r\n imageset.set_hipsProperties(new HipsProperties(imageset));\r\n }\r\n if (imageset.get_hipsProperties().get_downloadComplete()) {\r\n return new HealpixTile(level, x, y, imageset, parent);\r\n }\r\n else {\r\n return null;\r\n }\r\n case 2:\r\n var newTile = new TangentTile(level, x, y, imageset, parent);\r\n return newTile;\r\n }\r\n };\r\n Imageset.fromXMLNode = function(node) {\r\n try {\r\n var type = 2;\r\n var projection = 2;\r\n if (node.attributes.getNamedItem('DataSetType') != null) {\r\n type = Enums.parse('ImageSetType', node.attributes.getNamedItem('DataSetType').nodeValue);\r\n }\r\n var bandPass = 3;\r\n bandPass = Enums.parse('BandPass', node.attributes.getNamedItem('BandPass').nodeValue);\r\n var wf = 1;\r\n if (node.attributes.getNamedItem('WidthFactor') != null) {\r\n wf = parseInt(node.attributes.getNamedItem('WidthFactor').nodeValue);\r\n }\r\n if (node.attributes.getNamedItem('Generic') == null || !ss.boolean(node.attributes.getNamedItem('Generic').nodeValue)) {\r\n projection = Enums.parse('ProjectionType', node.attributes.getNamedItem('Projection').nodeValue);\r\n var fileType = node.attributes.getNamedItem('FileType').nodeValue;\r\n if (!ss.startsWith(fileType, '.')) {\r\n fileType = '.' + fileType;\r\n }\r\n var thumbnailUrl = '';\r\n var thumbUrl = Util.selectSingleNode(node, 'ThumbnailUrl');\r\n if (thumbUrl != null) {\r\n if (ss.emptyString(thumbUrl.text)) {\r\n var cn = thumbUrl;\r\n thumbnailUrl = cn.textContent;\r\n }\r\n else {\r\n thumbnailUrl = thumbUrl.text;\r\n }\r\n }\r\n var stockSet = false;\r\n var elevationModel = false;\r\n if (node.attributes.getNamedItem('StockSet') != null) {\r\n stockSet = ss.boolean(node.attributes.getNamedItem('StockSet').nodeValue);\r\n }\r\n if (node.attributes.getNamedItem('ElevationModel') != null) {\r\n elevationModel = ss.boolean(node.attributes.getNamedItem('ElevationModel').nodeValue);\r\n }\r\n var demUrl = '';\r\n if (node.attributes.getNamedItem('DemUrl') != null) {\r\n demUrl = node.attributes.getNamedItem('DemUrl').nodeValue;\r\n }\r\n var alturl = '';\r\n if (node.attributes.getNamedItem('AltUrl') != null) {\r\n alturl = node.attributes.getNamedItem('AltUrl').nodeValue;\r\n }\r\n var offsetX = 0;\r\n if (node.attributes.getNamedItem('OffsetX') != null) {\r\n offsetX = parseFloat(node.attributes.getNamedItem('OffsetX').nodeValue);\r\n }\r\n var offsetY = 0;\r\n if (node.attributes.getNamedItem('OffsetY') != null) {\r\n offsetY = parseFloat(node.attributes.getNamedItem('OffsetY').nodeValue);\r\n }\r\n var creditText = '';\r\n var credits = Util.selectSingleNode(node, 'Credits');\r\n if (credits != null) {\r\n creditText = Util.getInnerText(credits);\r\n }\r\n var creditsUrl = '';\r\n credits = Util.selectSingleNode(node, 'CreditsUrl');\r\n if (credits != null) {\r\n creditsUrl = Util.getInnerText(credits);\r\n }\r\n var meanRadius = 0;\r\n if (node.attributes.getNamedItem('MeanRadius') != null) {\r\n meanRadius = parseFloat(node.attributes.getNamedItem('MeanRadius').nodeValue);\r\n }\r\n var referenceFrame = null;\r\n if (node.attributes.getNamedItem('ReferenceFrame') != null) {\r\n referenceFrame = node.attributes.getNamedItem('ReferenceFrame').nodeValue;\r\n }\r\n var name = '';\r\n if (node.attributes.getNamedItem('Name') != null) {\r\n name = node.attributes.getNamedItem('Name').nodeValue;\r\n }\r\n var url = '';\r\n if (node.attributes.getNamedItem('Url') != null) {\r\n url = node.attributes.getNamedItem('Url').nodeValue;\r\n }\r\n var baseTileLevel = 0;\r\n if (node.attributes.getNamedItem('BaseTileLevel') != null) {\r\n baseTileLevel = parseInt(node.attributes.getNamedItem('BaseTileLevel').nodeValue);\r\n }\r\n var tileLevels = 0;\r\n if (node.attributes.getNamedItem('TileLevels') != null) {\r\n tileLevels = parseInt(node.attributes.getNamedItem('TileLevels').nodeValue);\r\n }\r\n var baseDegreesPerTile = 0;\r\n if (node.attributes.getNamedItem('BaseDegreesPerTile') != null) {\r\n baseDegreesPerTile = parseFloat(node.attributes.getNamedItem('BaseDegreesPerTile').nodeValue);\r\n }\r\n var bottomsUp = false;\r\n if (node.attributes.getNamedItem('BottomsUp') != null) {\r\n bottomsUp = ss.boolean(node.attributes.getNamedItem('BottomsUp').nodeValue);\r\n }\r\n var quadTreeMap = '';\r\n if (node.attributes.getNamedItem('QuadTreeMap') != null) {\r\n quadTreeMap = node.attributes.getNamedItem('QuadTreeMap').nodeValue;\r\n }\r\n var centerX = 0;\r\n if (node.attributes.getNamedItem('CenterX') != null) {\r\n centerX = parseFloat(node.attributes.getNamedItem('CenterX').nodeValue);\r\n }\r\n var centerY = 0;\r\n if (node.attributes.getNamedItem('CenterY') != null) {\r\n centerY = parseFloat(node.attributes.getNamedItem('CenterY').nodeValue);\r\n }\r\n var rotation = 0;\r\n if (node.attributes.getNamedItem('Rotation') != null) {\r\n rotation = parseFloat(node.attributes.getNamedItem('Rotation').nodeValue);\r\n }\r\n var sparse = false;\r\n if (node.attributes.getNamedItem('Sparse') != null) {\r\n sparse = ss.boolean(node.attributes.getNamedItem('Sparse').nodeValue);\r\n }\r\n return Imageset.create(name, url, type, bandPass, projection, Math.abs(Util.getHashCode(url)), baseTileLevel, tileLevels, 256, baseDegreesPerTile, fileType, bottomsUp, quadTreeMap, centerX, centerY, rotation, sparse, thumbnailUrl, stockSet, elevationModel, wf, offsetX, offsetY, creditText, creditsUrl, demUrl, alturl, meanRadius, referenceFrame);\r\n }\r\n else {\r\n return Imageset.createGeneric(type, bandPass);\r\n }\r\n }\r\n catch ($e1) {\r\n return null;\r\n }\r\n };\r\n Imageset.saveToXml = function(xmlWriter, imageset, alternateUrl) {\r\n xmlWriter._writeStartElement('ImageSet');\r\n xmlWriter._writeAttributeString('Generic', imageset.get_generic().toString());\r\n xmlWriter._writeAttributeString('DataSetType', Enums.toXml('ImageSetType', imageset.get_dataSetType()));\r\n xmlWriter._writeAttributeString('BandPass', Enums.toXml('BandPass', imageset.get_bandPass()));\r\n if (!imageset.get_generic()) {\r\n xmlWriter._writeAttributeString('Name', imageset.get_name());\r\n if (ss.emptyString(alternateUrl)) {\r\n xmlWriter._writeAttributeString('Url', imageset.get_url());\r\n }\r\n else {\r\n xmlWriter._writeAttributeString('Url', alternateUrl);\r\n }\r\n xmlWriter._writeAttributeString('DemUrl', imageset.get_demUrl());\r\n xmlWriter._writeAttributeString('BaseTileLevel', imageset.get_baseLevel().toString());\r\n xmlWriter._writeAttributeString('TileLevels', imageset.get_levels().toString());\r\n xmlWriter._writeAttributeString('BaseDegreesPerTile', imageset.get_baseTileDegrees().toString());\r\n xmlWriter._writeAttributeString('FileType', imageset.get_extension());\r\n xmlWriter._writeAttributeString('BottomsUp', imageset.get_bottomsUp().toString());\r\n xmlWriter._writeAttributeString('Projection', Enums.toXml('ProjectionType', imageset.get_projection()));\r\n xmlWriter._writeAttributeString('QuadTreeMap', imageset.get_quadTreeTileMap());\r\n xmlWriter._writeAttributeString('CenterX', imageset.get_centerX().toString());\r\n xmlWriter._writeAttributeString('CenterY', imageset.get_centerY().toString());\r\n xmlWriter._writeAttributeString('OffsetX', imageset.get_offsetX().toString());\r\n xmlWriter._writeAttributeString('OffsetY', imageset.get_offsetY().toString());\r\n xmlWriter._writeAttributeString('Rotation', imageset.get_rotation().toString());\r\n xmlWriter._writeAttributeString('Sparse', imageset.get_sparse().toString());\r\n xmlWriter._writeAttributeString('ElevationModel', imageset.get_elevationModel().toString());\r\n xmlWriter._writeAttributeString('StockSet', imageset.get_defaultSet().toString());\r\n xmlWriter._writeAttributeString('WidthFactor', imageset.get_widthFactor().toString());\r\n xmlWriter._writeAttributeString('MeanRadius', imageset.get_meanRadius().toString());\r\n xmlWriter._writeAttributeString('ReferenceFrame', imageset.get_referenceFrame());\r\n if (ss.emptyString(alternateUrl)) {\r\n xmlWriter._writeElementString('ThumbnailUrl', imageset.get_thumbnailUrl());\r\n }\r\n else {\r\n xmlWriter._writeElementString('ThumbnailUrl', imageset.get_url());\r\n }\r\n }\r\n xmlWriter._writeEndElement();\r\n };\r\n Imageset.createGeneric = function(dataSetType, bandPass) {\r\n var temp = new Imageset();\r\n temp._generic = true;\r\n temp._name = 'Generic';\r\n temp._sparse = false;\r\n temp._dataSetType = dataSetType;\r\n temp._bandPass = bandPass;\r\n temp._quadTreeTileMap = '';\r\n temp.url = '';\r\n temp._levels = 0;\r\n temp._baseTileDegrees = 0;\r\n temp._imageSetID = 0;\r\n temp._extension = '';\r\n temp._projection = 1;\r\n temp._bottomsUp = false;\r\n temp._baseLevel = 0;\r\n temp._mercator = (!temp._projection);\r\n temp._centerX = 0;\r\n temp._centerY = 0;\r\n temp._rotation = 0;\r\n temp._thumbnailUrl = '';\r\n temp._matrix = Matrix3d.get_identity();\r\n temp._matrix._multiply(Matrix3d._rotationX((temp.get_rotation() / 180 * Math.PI)));\r\n temp._matrix._multiply(Matrix3d._rotationZ((temp.get_centerY() / 180 * Math.PI)));\r\n temp._matrix._multiply(Matrix3d._rotationY((((360 - temp.get_centerX()) + 180) / 180 * Math.PI)));\r\n return temp;\r\n };\r\n Imageset.create = function(name, url, dataSetType, bandPass, projection, imageSetID, baseLevel, levels, tileSize, baseTileDegrees, extension, bottomsUp, quadTreeMap, centerX, centerY, rotation, sparse, thumbnailUrl, defaultSet, elevationModel, wf, offsetX, offsetY, credits, creditsUrl, demUrlIn, alturl, meanRadius, referenceFrame) {\r\n var temp = new Imageset();\r\n temp.setInitialParameters(name, url, dataSetType, bandPass, projection, imageSetID, baseLevel, levels, baseTileDegrees, extension, bottomsUp, quadTreeMap, centerX, centerY, rotation, sparse, thumbnailUrl, defaultSet, elevationModel, wf, offsetX, offsetY, credits, creditsUrl, demUrlIn, alturl, meanRadius, referenceFrame);\r\n return temp;\r\n };\r\n var Imageset$ = {\r\n get_wcsImage: function() {\r\n return this._wcsImage;\r\n },\r\n set_wcsImage: function(value) {\r\n this._wcsImage = value;\r\n return value;\r\n },\r\n get_projection: function() {\r\n return this._projection;\r\n },\r\n set_projection: function(value) {\r\n this._projection = value;\r\n return value;\r\n },\r\n get_referenceFrame: function() {\r\n return this._referenceFrame;\r\n },\r\n set_referenceFrame: function(value) {\r\n this._referenceFrame = value;\r\n return value;\r\n },\r\n get_imageSetID: function() {\r\n return this._imageSetID;\r\n },\r\n set_imageSetID: function(value) {\r\n this._imageSetID = value;\r\n return value;\r\n },\r\n get_baseTileDegrees: function() {\r\n return this._baseTileDegrees;\r\n },\r\n set_baseTileDegrees: function(value) {\r\n this._baseTileDegrees = value;\r\n return value;\r\n },\r\n get_widthFactor: function() {\r\n return this._widthFactor;\r\n },\r\n set_widthFactor: function(value) {\r\n this._widthFactor = value;\r\n return value;\r\n },\r\n getHashCode: function() {\r\n return Util.getHashCode(this.get_url());\r\n },\r\n get_url: function() {\r\n return this.url;\r\n },\r\n set_url: function(value) {\r\n this.url = value;\r\n return value;\r\n },\r\n get_demUrl: function() {\r\n if (ss.emptyString(this.demUrl) && !this._projection) {\r\n return URLHelpers.singleton.coreStaticUrl('wwtweb/BingDemTile.aspx?Q={0},{1},{2}');\r\n }\r\n return this.demUrl;\r\n },\r\n set_demUrl: function(value) {\r\n this.demUrl = value;\r\n return value;\r\n },\r\n get_extension: function() {\r\n return this._extension;\r\n },\r\n set_extension: function(value) {\r\n this._extension = value;\r\n return value;\r\n },\r\n get_levels: function() {\r\n return this._levels;\r\n },\r\n set_levels: function(value) {\r\n this._levels = value;\r\n return value;\r\n },\r\n get_bottomsUp: function() {\r\n return this._bottomsUp;\r\n },\r\n set_bottomsUp: function(value) {\r\n this._bottomsUp = value;\r\n return value;\r\n },\r\n get_mercator: function() {\r\n return this._mercator;\r\n },\r\n set_mercator: function(value) {\r\n this._mercator = value;\r\n return value;\r\n },\r\n get_baseLevel: function() {\r\n return this._baseLevel;\r\n },\r\n set_baseLevel: function(value) {\r\n this._baseLevel = value;\r\n return value;\r\n },\r\n get_quadTreeTileMap: function() {\r\n return this._quadTreeTileMap;\r\n },\r\n set_quadTreeTileMap: function(value) {\r\n this._quadTreeTileMap = value;\r\n return value;\r\n },\r\n get_centerX: function() {\r\n return this._centerX;\r\n },\r\n set_centerX: function(value) {\r\n if (this._centerX !== value) {\r\n this._centerX = value;\r\n this._computeMatrix();\r\n }\r\n return value;\r\n },\r\n get_centerY: function() {\r\n return this._centerY;\r\n },\r\n set_centerY: function(value) {\r\n if (this._centerY !== value) {\r\n this._centerY = value;\r\n this._computeMatrix();\r\n }\r\n return value;\r\n },\r\n get_rotation: function() {\r\n return this._rotation;\r\n },\r\n set_rotation: function(value) {\r\n if (this._rotation !== value) {\r\n this._rotation = value;\r\n this._computeMatrix();\r\n }\r\n return value;\r\n },\r\n get_meanRadius: function() {\r\n return this._meanRadius;\r\n },\r\n set_meanRadius: function(value) {\r\n this._meanRadius = value;\r\n return value;\r\n },\r\n get_bandPass: function() {\r\n return this._bandPass;\r\n },\r\n set_bandPass: function(value) {\r\n this._bandPass = value;\r\n return value;\r\n },\r\n get_dataSetType: function() {\r\n return this._dataSetType;\r\n },\r\n set_dataSetType: function(value) {\r\n this._dataSetType = value;\r\n return value;\r\n },\r\n get_altUrl: function() {\r\n return this._altUrl;\r\n },\r\n set_altUrl: function(value) {\r\n this._altUrl = value;\r\n return value;\r\n },\r\n get_singleImage: function() {\r\n return this._singleImage;\r\n },\r\n set_singleImage: function(value) {\r\n this._singleImage = value;\r\n return value;\r\n },\r\n get_hipsProperties: function() {\r\n return this._hipsProperties;\r\n },\r\n set_hipsProperties: function(value) {\r\n this._hipsProperties = value;\r\n return value;\r\n },\r\n get_fitsProperties: function() {\r\n return this._fitsProperties;\r\n },\r\n set_fitsProperties: function(value) {\r\n this._fitsProperties = value;\r\n return value;\r\n },\r\n toString: function() {\r\n if (this.get_defaultSet()) {\r\n return this._name + ' *';\r\n }\r\n else {\r\n return this._name;\r\n }\r\n },\r\n get_stockImageSet: function() {\r\n if (this._generic || !this._defaultSet) {\r\n return this;\r\n }\r\n else {\r\n return Imageset.createGeneric(this.get_dataSetType(), this.get_bandPass());\r\n }\r\n },\r\n equals: function(obj) {\r\n if (obj == null) {\r\n return false;\r\n }\r\n if (!(ss.canCast(obj, Imageset))) {\r\n return false;\r\n }\r\n var b = obj;\r\n return (Util.getHashCode(b.get_url()) === Util.getHashCode(this.get_url()) && b.get_dataSetType() === this.get_dataSetType() && b.get_bandPass() === this.get_bandPass() && b.get_generic() === this.get_generic());\r\n },\r\n get_matrix: function() {\r\n if (!this._matrixComputed) {\r\n this._computeMatrix();\r\n }\r\n return this._matrix;\r\n },\r\n set_matrix: function(value) {\r\n this._matrix = value;\r\n return value;\r\n },\r\n _computeMatrix: function() {\r\n this._matrixComputed = true;\r\n this._matrix = Matrix3d.get_identity();\r\n this._matrix._multiply(Matrix3d._rotationX((this.get_rotation() / 180 * Math.PI)));\r\n this._matrix._multiply(Matrix3d._rotationZ((this.get_centerY() / 180 * Math.PI)));\r\n this._matrix._multiply(Matrix3d._rotationY(((360 - this.get_centerX()) / 180 * Math.PI)));\r\n },\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n this._name = value;\r\n return value;\r\n },\r\n get_sparse: function() {\r\n return this._sparse;\r\n },\r\n set_sparse: function(value) {\r\n this._sparse = value;\r\n return value;\r\n },\r\n get_thumbnailUrl: function() {\r\n return this._thumbnailUrl;\r\n },\r\n set_thumbnailUrl: function(value) {\r\n this._thumbnailUrl = value;\r\n return value;\r\n },\r\n get_generic: function() {\r\n return this._generic;\r\n },\r\n set_generic: function(value) {\r\n this._generic = value;\r\n return value;\r\n },\r\n get_elevationModel: function() {\r\n return this._elevationModel;\r\n },\r\n set_elevationModel: function(value) {\r\n this._elevationModel = value;\r\n return value;\r\n },\r\n get_defaultSet: function() {\r\n return this._defaultSet;\r\n },\r\n set_defaultSet: function(value) {\r\n this._defaultSet = value;\r\n return value;\r\n },\r\n get_offsetX: function() {\r\n return this._offsetX;\r\n },\r\n set_offsetX: function(value) {\r\n this._offsetX = value;\r\n return value;\r\n },\r\n get_offsetY: function() {\r\n return this._offsetY;\r\n },\r\n set_offsetY: function(value) {\r\n this._offsetY = value;\r\n return value;\r\n },\r\n get_creditsText: function() {\r\n return this._creditsText;\r\n },\r\n set_creditsText: function(value) {\r\n this._creditsText = value;\r\n return value;\r\n },\r\n get_creditsUrl: function() {\r\n return this._creditsUrl;\r\n },\r\n set_creditsUrl: function(value) {\r\n this._creditsUrl = value;\r\n return value;\r\n },\r\n get_isMandelbrot: function() {\r\n return false;\r\n },\r\n get_viewCenterX: function() {\r\n if (this.get_wcsImage() != null) {\r\n return (this.get_wcsImage()).get_viewCenterX();\r\n }\r\n if (this.get_levels() > 0) {\r\n return this.get_centerX() - this.get_offsetX();\r\n }\r\n else {\r\n return this.get_centerX() + this.get_offsetX() / 256 * this.get_baseTileDegrees();\r\n }\r\n },\r\n get_viewCenterY: function() {\r\n if (this.get_wcsImage() != null) {\r\n return (this.get_wcsImage()).get_viewCenterY();\r\n }\r\n if (this.get_levels() > 0) {\r\n return this.get_centerY() + this.get_offsetY();\r\n }\r\n else {\r\n return this.get_centerY() + this.get_offsetY() / 256 * this.get_baseTileDegrees();\r\n }\r\n },\r\n setInitialParameters: function(name, url, dataSetType, bandPass, projection, imageSetID, baseLevel, levels, baseTileDegrees, extension, bottomsUp, quadTreeMap, centerX, centerY, rotation, sparse, thumbnailUrl, defaultSet, elevationModel, wf, offsetX, offsetY, credits, creditsUrl, demUrlIn, alturl, meanRadius, referenceFrame) {\r\n this.set_referenceFrame(referenceFrame);\r\n this.set_meanRadius(meanRadius);\r\n this._altUrl = alturl;\r\n this.demUrl = demUrlIn;\r\n this._creditsText = credits;\r\n this._creditsUrl = creditsUrl;\r\n this._offsetY = offsetY;\r\n this._offsetX = offsetX;\r\n this._widthFactor = wf;\r\n this._elevationModel = elevationModel;\r\n this._defaultSet = defaultSet;\r\n this._name = name;\r\n this._sparse = sparse;\r\n this._dataSetType = dataSetType;\r\n this._bandPass = bandPass;\r\n this._quadTreeTileMap = quadTreeMap;\r\n this.url = url;\r\n this._levels = levels;\r\n this._baseTileDegrees = baseTileDegrees;\r\n this._imageSetID = imageSetID;\r\n this._extension = extension;\r\n this._projection = projection;\r\n this._bottomsUp = bottomsUp;\r\n this._baseLevel = baseLevel;\r\n this._mercator = (!projection);\r\n this._centerX = centerX;\r\n this._centerY = centerY;\r\n this._rotation = rotation;\r\n this._thumbnailUrl = thumbnailUrl;\r\n this._computeMatrix();\r\n },\r\n _guessZoomSetting: function(currentZoom) {\r\n var zoom = currentZoom;\r\n var aswcs = ss.safeCast(this._wcsImage, FitsImage);\r\n if (this.get_projection() === 5) {\r\n if (aswcs != null) {\r\n zoom = this.get_baseTileDegrees() * aswcs.get_sizeY() * 6 * 1.7;\r\n }\r\n }\r\n else if (aswcs != null) {\r\n zoom = aswcs.get_scaleY() * aswcs.get_sizeY() * 6 * 1.7;\r\n }\r\n else {\r\n zoom = this.get_baseTileDegrees() * 6 * 1.7;\r\n }\r\n if (zoom > currentZoom) {\r\n zoom = currentZoom;\r\n }\r\n return zoom;\r\n },\r\n get_thumbnail: function() {\r\n return this._thumbnail;\r\n },\r\n set_thumbnail: function(value) {\r\n this._thumbnail = value;\r\n return value;\r\n },\r\n get_bounds: function() {\r\n return this._bounds;\r\n },\r\n set_bounds: function(value) {\r\n this._bounds = value;\r\n return value;\r\n },\r\n get_isImage: function() {\r\n return true;\r\n },\r\n get_isTour: function() {\r\n return false;\r\n },\r\n get_isFolder: function() {\r\n return false;\r\n },\r\n get_isCloudCommunityItem: function() {\r\n return false;\r\n },\r\n get_readOnly: function() {\r\n return false;\r\n },\r\n get_children: function() {\r\n return [];\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ViewMoverKenBurnsStyle\r\n\r\n function ViewMoverKenBurnsStyle(from, to, time, fromDateTime, toDateTime, type) {\r\n this.interpolationType = 0;\r\n this.fastDirectionMove = false;\r\n this._toTargetTime = 0;\r\n this._dateTimeSpan = 0;\r\n this._complete = false;\r\n this._midpointFired = false;\r\n this.interpolationType = type;\r\n if (Math.abs(from.lng - to.lng) > 180) {\r\n if (from.lng > to.lng) {\r\n from.lng -= 360;\r\n }\r\n else {\r\n from.lng += 360;\r\n }\r\n }\r\n this._fromDateTime = fromDateTime;\r\n this._toDateTime = toDateTime;\r\n this._dateTimeSpan = toDateTime - fromDateTime;\r\n this._from = from.copy();\r\n this._to = to.copy();\r\n this._fromTime = ss.now();\r\n this._toTargetTime = time;\r\n }\r\n var ViewMoverKenBurnsStyle$ = {\r\n get_complete: function() {\r\n return this._complete;\r\n },\r\n get_currentPosition: function() {\r\n var elapsed = ss.now() - this._fromTime;\r\n var elapsedSeconds = (elapsed) / 1000;\r\n var alpha = elapsedSeconds / this._toTargetTime;\r\n if (!this._midpointFired && alpha >= 0.5) {\r\n this._midpointFired = true;\r\n if (this._midpoint != null) {\r\n this._midpoint();\r\n }\r\n }\r\n if (alpha >= 1) {\r\n alpha = 1;\r\n this._complete = true;\r\n return this._to.copy();\r\n }\r\n if (Settings.get_active().get_galacticMode() && WWTControl.singleton.renderContext.space) {\r\n return CameraParameters.interpolateGreatCircle(this._from, this._to, alpha, this.interpolationType, this.fastDirectionMove);\r\n }\r\n return CameraParameters.interpolate(this._from, this._to, alpha, this.interpolationType, this.fastDirectionMove);\r\n },\r\n get_currentDateTime: function() {\r\n var elapsed = ss.now() - this._fromTime;\r\n var elapsedSeconds = (elapsed) / 1000;\r\n var alpha = elapsedSeconds / this._toTargetTime;\r\n var delta = this._dateTimeSpan * alpha;\r\n var retDate = new Date(this._fromDateTime.getTime() + ss.truncate(delta));\r\n return retDate;\r\n },\r\n get_midpoint: function() {\r\n return this._midpoint;\r\n },\r\n set_midpoint: function(value) {\r\n this._midpoint = value;\r\n return value;\r\n },\r\n get_moveTime: function() {\r\n return this._toTargetTime;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ViewMoverSlew\r\n\r\n function ViewMoverSlew() {\r\n this._upTargetTime = 0;\r\n this._downTargetTime = 0;\r\n this._toTargetTime = 0;\r\n this._upTimeFactor = 0.6;\r\n this._downTimeFactor = 0.6;\r\n this._travelTimeFactor = 7;\r\n this._midpointFired = false;\r\n this._complete = false;\r\n }\r\n ViewMoverSlew.create = function(from, to) {\r\n var temp = new ViewMoverSlew();\r\n temp.init(from, to);\r\n return temp;\r\n };\r\n ViewMoverSlew.createUpDown = function(from, to, upDowFactor) {\r\n var temp = new ViewMoverSlew();\r\n temp._upTimeFactor = temp._downTimeFactor = upDowFactor;\r\n temp.init(from.copy(), to.copy());\r\n return temp;\r\n };\r\n var ViewMoverSlew$ = {\r\n init: function(from, to) {\r\n if (Math.abs(from.lng - to.lng) > 180) {\r\n if (from.lng > to.lng) {\r\n from.lng -= 360;\r\n }\r\n else {\r\n from.lng += 360;\r\n }\r\n }\r\n if (to.zoom <= 0) {\r\n to.zoom = 360;\r\n }\r\n if (from.zoom <= 0) {\r\n from.zoom = 360;\r\n }\r\n this._from = from;\r\n this._to = to;\r\n this._fromTime = ss.now();\r\n var zoomUpTarget = 360;\r\n var travelTime;\r\n var lngDist = Math.abs(from.lng - to.lng);\r\n var latDist = Math.abs(from.lat - to.lat);\r\n var distance = Math.sqrt(latDist * latDist + lngDist * lngDist);\r\n zoomUpTarget = (distance / 3) * 20;\r\n if (zoomUpTarget > 360) {\r\n zoomUpTarget = 360;\r\n }\r\n if (zoomUpTarget < from.zoom) {\r\n zoomUpTarget = from.zoom;\r\n }\r\n travelTime = (distance / 180) * (360 / zoomUpTarget) * this._travelTimeFactor;\r\n var rotateTime = Math.max(Math.abs(from.angle - to.angle), Math.abs(from.rotation - to.rotation));\r\n var logDistUp = Math.max(Math.abs(Util.logN(zoomUpTarget, 2) - Util.logN(from.zoom, 2)), rotateTime);\r\n this._upTargetTime = this._upTimeFactor * logDistUp;\r\n this._downTargetTime = this._upTargetTime + travelTime;\r\n var logDistDown = Math.abs(Util.logN(zoomUpTarget, 2) - Util.logN(to.zoom, 2));\r\n this._toTargetTime = this._downTargetTime + Math.max((this._downTimeFactor * logDistDown), rotateTime);\r\n this._fromTop = from.copy();\r\n this._fromTop.zoom = zoomUpTarget;\r\n this._fromTop.angle = (from.angle + to.angle) / 2;\r\n this._fromTop.rotation = (from.rotation + to.rotation) / 2;\r\n this._toTop = to.copy();\r\n this._toTop.zoom = this._fromTop.zoom;\r\n this._toTop.angle = this._fromTop.angle;\r\n this._toTop.rotation = this._fromTop.rotation;\r\n },\r\n get_complete: function() {\r\n return this._complete;\r\n },\r\n get_currentPosition: function() {\r\n var elapsed = ss.now() - this._fromTime;\r\n var elapsedSeconds = (elapsed) / 1000;\r\n if (elapsedSeconds < this._upTargetTime) {\r\n return CameraParameters.interpolate(this._from, this._fromTop, elapsedSeconds / this._upTargetTime, 3, false);\r\n }\r\n else if (elapsedSeconds < this._downTargetTime) {\r\n elapsedSeconds -= this._upTargetTime;\r\n if (Settings.get_active().get_galacticMode() && WWTControl.singleton.renderContext.space) {\r\n return CameraParameters.interpolateGreatCircle(this._fromTop, this._toTop, elapsedSeconds / (this._downTargetTime - this._upTargetTime), 3, false);\r\n }\r\n return CameraParameters.interpolate(this._fromTop, this._toTop, elapsedSeconds / (this._downTargetTime - this._upTargetTime), 3, false);\r\n }\r\n else {\r\n if (!this._midpointFired) {\r\n this._midpointFired = true;\r\n if (this._midpoint != null) {\r\n this._midpoint();\r\n }\r\n }\r\n elapsedSeconds -= this._downTargetTime;\r\n var alpha = elapsedSeconds / (this._toTargetTime - this._downTargetTime);\r\n if (alpha > 1) {\r\n alpha = 1;\r\n this._complete = true;\r\n return this._to.copy();\r\n }\r\n return CameraParameters.interpolate(this._toTop, this._to, alpha, 3, false);\r\n }\r\n },\r\n get_currentDateTime: function() {\r\n SpaceTimeController.updateClock();\r\n return SpaceTimeController.get_now();\r\n },\r\n get_midpoint: function() {\r\n return this._midpoint;\r\n },\r\n set_midpoint: function(value) {\r\n this._midpoint = value;\r\n return value;\r\n },\r\n get_moveTime: function() {\r\n return this._toTargetTime;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.KeplerVertex\r\n\r\n function KeplerVertex() {\r\n this.ABC = new Vector3d();\r\n this.abc1 = new Vector3d();\r\n this.pointSize = 0;\r\n this.w = 0;\r\n this.e = 0;\r\n this.n = 0;\r\n this.t = 0;\r\n this.a = 0;\r\n this.z = 0;\r\n this.orbitPos = 0;\r\n this.orbits = 0;\r\n }\r\n var KeplerVertex$ = {\r\n fill: function(ee) {\r\n var F = Math.cos(ee.omega * KeplerVertex._degrad);\r\n var sinOmega = Math.sin(ee.omega * KeplerVertex._degrad);\r\n var cosi = Math.cos(ee.i * KeplerVertex._degrad);\r\n var sini = Math.sin(ee.i * KeplerVertex._degrad);\r\n var G = sinOmega * KeplerVertex._cose;\r\n var H = sinOmega * KeplerVertex._sine;\r\n var P = -sinOmega * cosi;\r\n var Q = (F * cosi * KeplerVertex._cose) - (sini * KeplerVertex._sine);\r\n var R = (F * cosi * KeplerVertex._sine) + (sini * KeplerVertex._cose);\r\n var checkA = (F * F) + (G * G) + (H * H);\r\n var checkB = (P * P) + (Q * Q) + (R * R);\r\n this.ABC.x = Math.atan2(F, P);\r\n this.ABC.y = Math.atan2(G, Q);\r\n this.ABC.z = Math.atan2(H, R);\r\n this.abc1.x = Math.sqrt((F * F) + (P * P));\r\n this.abc1.y = Math.sqrt((G * G) + (Q * Q));\r\n this.abc1.z = Math.sqrt((H * H) + (R * R));\r\n this.pointSize = 0.1;\r\n if (ee.a < 2.5) {\r\n this.color = Colors.get_white();\r\n }\r\n else if (ee.a < 2.83) {\r\n this.color = Colors.get_red();\r\n }\r\n else if (ee.a < 2.96) {\r\n this.color = Colors.get_green();\r\n }\r\n else if (ee.a < 3.3) {\r\n this.color = Colors.get_magenta();\r\n }\r\n else if (ee.a < 5) {\r\n this.color = Colors.get_cyan();\r\n }\r\n else if (ee.a < 10) {\r\n this.color = Colors.get_yellow();\r\n this.pointSize = 0.9;\r\n }\r\n else {\r\n this.color = Colors.get_white();\r\n this.pointSize = 8;\r\n }\r\n this.w = ee.w;\r\n this.e = ee.e;\r\n if (!ee.n) {\r\n this.n = (0.9856076686 / (ee.a * Math.sqrt(ee.a)));\r\n }\r\n else {\r\n this.n = ee.n;\r\n }\r\n this.t = (ee.t - KeplerVertex.baseDate);\r\n this.a = ee.a;\r\n this.z = 0;\r\n this.orbitPos = 0;\r\n this.orbits = 0;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ScaleMap\r\n\r\n function ScaleMap() {\r\n }\r\n var ScaleMap$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ColorMapContainer\r\n\r\n function ColorMapContainer() {\r\n this.colors = [];\r\n }\r\n ColorMapContainer.fromArgbList = function(color_list) {\r\n var temp = new ColorMapContainer();\r\n var $enum1 = ss.enumerate(color_list);\r\n while ($enum1.moveNext()) {\r\n var color = $enum1.current;\r\n temp.colors.push(Color.fromArgb(color[0], color[1], color[2], color[3]));\r\n }\r\n return temp;\r\n };\r\n ColorMapContainer.fromStringList = function(color_list) {\r\n var temp = new ColorMapContainer();\r\n var $enum1 = ss.enumerate(color_list);\r\n while ($enum1.moveNext()) {\r\n var color = $enum1.current;\r\n temp.colors.push(Color.load(color));\r\n }\r\n return temp;\r\n };\r\n ColorMapContainer.fromNamedColormap = function(name) {\r\n if (name == null) {\r\n return null;\r\n }\r\n switch (name.toLowerCase()) {\r\n case 'viridis':\r\n return ColorMapContainer.viridis;\r\n case 'plasma':\r\n return ColorMapContainer.plasma;\r\n case 'inferno':\r\n return ColorMapContainer.inferno;\r\n case 'magma':\r\n return ColorMapContainer.magma;\r\n case 'cividis':\r\n return ColorMapContainer.cividis;\r\n case 'greys':\r\n return ColorMapContainer.greys;\r\n case 'gray':\r\n return ColorMapContainer.gray;\r\n case 'purples':\r\n return ColorMapContainer.purples;\r\n case 'blues':\r\n return ColorMapContainer.blues;\r\n case 'greens':\r\n return ColorMapContainer.greens;\r\n case 'oranges':\r\n return ColorMapContainer.oranges;\r\n case 'reds':\r\n return ColorMapContainer.reds;\r\n case 'rdylbu':\r\n return ColorMapContainer.rdYlBu;\r\n }\r\n return null;\r\n };\r\n ColorMapContainer._getTextureFromName = function(gl, name) {\r\n var texture = ColorMapContainer.colorTextures[name];\r\n if (texture == null) {\r\n var colorMapContainer = ColorMapContainer.fromNamedColormap(name);\r\n if (colorMapContainer != null) {\r\n texture = ColorMapContainer._initColorTexture(gl, colorMapContainer);\r\n ColorMapContainer.colorTextures[name.toLowerCase()] = texture;\r\n }\r\n }\r\n return texture;\r\n };\r\n ColorMapContainer.bindColorMapTexture = function(gl, colorMapName) {\r\n var texture = ColorMapContainer._getTextureFromName(gl, colorMapName);\r\n if (texture == null) {\r\n texture = ColorMapContainer._getTextureFromName(gl, 'gray');\r\n }\r\n gl.activeTexture(33985);\r\n gl.bindTexture(3553, texture);\r\n };\r\n ColorMapContainer._initColorTexture = function(gl, colorMapContainer) {\r\n var colorTexture = gl.createTexture();\r\n gl.activeTexture(33985);\r\n gl.bindTexture(3553, colorTexture);\r\n gl.texParameteri(3553, 10242, 33071);\r\n gl.texParameteri(3553, 10243, 33071);\r\n var colorBuffer = ColorMapContainer._extractColorArray(colorMapContainer.colors);\r\n gl.texImage2D(3553, 0, 32849, colorBuffer.length / 3, 1, 0, 6407, 5121, colorBuffer);\r\n gl.texParameteri(3553, 10241, 9728);\r\n gl.texParameteri(3553, 10240, 9728);\r\n return colorTexture;\r\n };\r\n ColorMapContainer._extractColorArray = function(colors) {\r\n var index = 0;\r\n var colorBuffer = new Uint8Array(colors.length * 3);\r\n var $enum1 = ss.enumerate(colors);\r\n while ($enum1.moveNext()) {\r\n var color = $enum1.current;\r\n colorBuffer[index++] = color.r;\r\n colorBuffer[index++] = color.g;\r\n colorBuffer[index++] = color.b;\r\n }\r\n return colorBuffer;\r\n };\r\n var ColorMapContainer$ = {\r\n findClosestColor: function(value) {\r\n var index;\r\n if (value <= 0) {\r\n return this.colors[0];\r\n }\r\n else if (value >= 1) {\r\n return this.colors[this.colors.length - 1];\r\n }\r\n else {\r\n index = ss.truncate((value * this.colors.length));\r\n return this.colors[index];\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Layer\r\n\r\n function Layer() {\r\n this.id = Guid.newGuid();\r\n this.loadedFromTour = false;\r\n this.tourDocument = null;\r\n this.opacity = 1;\r\n this.opened = false;\r\n this._startTime = ss.date('01/01/1900');\r\n this._endTime = ss.date('01/01/2100');\r\n this._fadeSpan = 0;\r\n this._fadeType = 4;\r\n this.version = 0;\r\n this.color = Colors.get_white();\r\n this.enabled = true;\r\n this.astronomical = false;\r\n }\r\n Layer.fromXml = function(layerNode, someFlag) {\r\n var layerClassName = layerNode.attributes.getNamedItem('Type').nodeValue;\r\n var overLayType = ss.replaceString(layerClassName, 'TerraViewer.', '');\r\n if (overLayType == null) {\r\n return null;\r\n }\r\n var newLayer = null;\r\n switch (overLayType) {\r\n case 'SpreadSheetLayer':\r\n newLayer = new SpreadSheetLayer();\r\n break;\r\n case 'GreatCirlceRouteLayer':\r\n newLayer = new GreatCirlceRouteLayer();\r\n break;\r\n case 'GridLayer':\r\n newLayer = new GridLayer();\r\n break;\r\n case 'ImageSetLayer':\r\n newLayer = new ImageSetLayer();\r\n break;\r\n case 'Object3dLayer':\r\n newLayer = new Object3dLayer();\r\n break;\r\n case 'OrbitLayer':\r\n newLayer = new OrbitLayer();\r\n break;\r\n default:\r\n return null;\r\n }\r\n newLayer.initFromXml(layerNode);\r\n return newLayer;\r\n };\r\n var Layer$ = {\r\n getPrimaryUI: function() {\r\n return null;\r\n },\r\n getFileStreamUrl: function(filename) {\r\n if (this.tourDocument != null) {\r\n return this.tourDocument.getFileStream(filename);\r\n }\r\n return null;\r\n },\r\n get_opacity: function() {\r\n return this.opacity;\r\n },\r\n set_opacity: function(value) {\r\n if (this.opacity !== value) {\r\n this.version++;\r\n this.opacity = value;\r\n }\r\n return value;\r\n },\r\n get_opened: function() {\r\n return this.opened;\r\n },\r\n set_opened: function(value) {\r\n if (this.opened !== value) {\r\n this.version++;\r\n this.opened = value;\r\n }\r\n return value;\r\n },\r\n get_startTime: function() {\r\n return this._startTime;\r\n },\r\n set_startTime: function(value) {\r\n if (!ss.compareDates(this._startTime, value)) {\r\n this.version++;\r\n this._startTime = value;\r\n }\r\n return value;\r\n },\r\n get_endTime: function() {\r\n return this._endTime;\r\n },\r\n set_endTime: function(value) {\r\n if (!ss.compareDates(this._endTime, value)) {\r\n this.version++;\r\n this._endTime = value;\r\n }\r\n return value;\r\n },\r\n get_fadeSpan: function() {\r\n return this._fadeSpan;\r\n },\r\n set_fadeSpan: function(value) {\r\n this.version++;\r\n this._fadeSpan = value;\r\n return value;\r\n },\r\n get_fadeType: function() {\r\n return this._fadeType;\r\n },\r\n set_fadeType: function(value) {\r\n if (this._fadeType !== value) {\r\n this.set_version(this.get_version() + 1) - 1;\r\n this._fadeType = value;\r\n }\r\n return value;\r\n },\r\n get_version: function() {\r\n return this.version;\r\n },\r\n set_version: function(value) {\r\n this.version = value;\r\n return value;\r\n },\r\n findClosest: function(target, distance, closestPlace, astronomical) {\r\n return closestPlace;\r\n },\r\n hoverCheckScreenSpace: function(cursor) {\r\n return false;\r\n },\r\n clickCheckScreenSpace: function(cursor) {\r\n return false;\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n return true;\r\n },\r\n preDraw: function(renderContext, opacity) {\r\n return true;\r\n },\r\n updateData: function(data, purgeOld, purgeAll, hasHeader) {\r\n return true;\r\n },\r\n upadteData: function(data, purgeOld, purgeAll, hasHeader) {\r\n return this.updateData(data, purgeOld, purgeAll, hasHeader);\r\n },\r\n canCopyToClipboard: function() {\r\n return false;\r\n },\r\n copyToClipboard: function() {\r\n return;\r\n },\r\n getParams: function() {\r\n var paramList = new Array(5);\r\n paramList[0] = this.color.r / 255;\r\n paramList[1] = this.color.g / 255;\r\n paramList[2] = this.color.b / 255;\r\n paramList[3] = this.color.a / 255;\r\n paramList[4] = this.opacity;\r\n return paramList;\r\n },\r\n setParams: function(paramList) {\r\n if (paramList.length === 5) {\r\n this.opacity = paramList[4];\r\n this.color = Color.fromArgb((paramList[3] * 255), (paramList[0] * 255), (paramList[1] * 255), (paramList[2] * 255));\r\n }\r\n },\r\n getParamNames: function() {\r\n return [ 'Color.Red', 'Color.Green', 'Color.Blue', 'Color.Alpha', 'Opacity' ];\r\n },\r\n getEditUI: function() {\r\n return ss.safeCast(this, IUiController);\r\n },\r\n cleanUp: function() {\r\n },\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n if (this._name !== value) {\r\n this.version++;\r\n this._name = value;\r\n }\r\n return value;\r\n },\r\n toString: function() {\r\n return this._name;\r\n },\r\n get_referenceFrame: function() {\r\n return this.referenceFrame;\r\n },\r\n set_referenceFrame: function(value) {\r\n this.referenceFrame = value;\r\n return value;\r\n },\r\n getProps: function() {\r\n return '';\r\n },\r\n get_color: function() {\r\n return this.color;\r\n },\r\n set_color: function(value) {\r\n if (this.color !== value) {\r\n this.color = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n colorChanged: function() {\r\n },\r\n get_colorValue: function() {\r\n return this.get_color().toString();\r\n },\r\n set_colorValue: function(value) {\r\n this.set_color(Color.fromName(value));\r\n return value;\r\n },\r\n get_enabled: function() {\r\n return this.enabled;\r\n },\r\n set_enabled: function(value) {\r\n this.enabled = value;\r\n return value;\r\n },\r\n get_astronomical: function() {\r\n return this.astronomical;\r\n },\r\n set_astronomical: function(value) {\r\n if (this.astronomical !== value) {\r\n this.version++;\r\n this.astronomical = value;\r\n }\r\n return value;\r\n },\r\n getTypeName: function() {\r\n return 'TerraViewer.Layer';\r\n },\r\n saveToXml: function(xmlWriter) {\r\n xmlWriter._writeStartElement('Layer');\r\n xmlWriter._writeAttributeString('Id', this.id.toString());\r\n xmlWriter._writeAttributeString('Type', this.getTypeName());\r\n xmlWriter._writeAttributeString('Name', this.get_name());\r\n xmlWriter._writeAttributeString('ReferenceFrame', this.referenceFrame);\r\n xmlWriter._writeAttributeString('Color', this.color.save());\r\n xmlWriter._writeAttributeString('Opacity', this.opacity.toString());\r\n xmlWriter._writeAttributeString('StartTime', Util.xmlDate(this.get_startTime()));\r\n xmlWriter._writeAttributeString('EndTime', Util.xmlDate(this.get_endTime()));\r\n xmlWriter._writeAttributeString('FadeSpan', this.get_fadeSpan().toString());\r\n xmlWriter._writeAttributeString('FadeType', this.get_fadeType().toString());\r\n this.writeLayerProperties(xmlWriter);\r\n xmlWriter._writeEndElement();\r\n },\r\n writeLayerProperties: function(xmlWriter) {\r\n return;\r\n },\r\n initializeFromXml: function(node) {\r\n },\r\n initFromXml: function(node) {\r\n this.id = Guid.fromString(node.attributes.getNamedItem('Id').nodeValue);\r\n this.set_name(node.attributes.getNamedItem('Name').nodeValue);\r\n this.referenceFrame = node.attributes.getNamedItem('ReferenceFrame').nodeValue;\r\n this.color = Color.load(node.attributes.getNamedItem('Color').nodeValue);\r\n this.opacity = parseFloat(node.attributes.getNamedItem('Opacity').nodeValue);\r\n if (node.attributes.getNamedItem('StartTime') != null) {\r\n this.set_startTime(new Date(node.attributes.getNamedItem('StartTime').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('EndTime') != null) {\r\n this.set_endTime(new Date(node.attributes.getNamedItem('EndTime').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('FadeSpan') != null) {\r\n this.set_fadeSpan(Util.parseTimeSpan(node.attributes.getNamedItem('FadeSpan').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('FadeType') != null) {\r\n switch (node.attributes.getNamedItem('FadeType').nodeValue) {\r\n case 'In':\r\n this.set_fadeType(1);\r\n break;\r\n case 'Out':\r\n this.set_fadeType(2);\r\n break;\r\n case 'Both':\r\n this.set_fadeType(3);\r\n break;\r\n case 'None':\r\n this.set_fadeType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n this.initializeFromXml(node);\r\n },\r\n loadData: function(doc, filename) {\r\n return;\r\n },\r\n addFilesToCabinet: function(fc) {\r\n return;\r\n },\r\n getStringFromGzipBlob: function(blob, dataReady) {\r\n var reader = new FileReader();\r\n reader.onloadend = function(e) {\r\n var result = '';\r\n try {\r\n result = pako.inflate(e.target.result, { to: 'string' });\r\n }\r\n catch (err) {\r\n var errString = err.toString();\r\n if (errString === 'incorrect header check' || errString === 'unknown compression method') {\r\n try {\r\n result = String.fromCharCode.apply(null, new Uint8Array(e.target.result));\r\n }\r\n catch (error) {\r\n throw error;\r\n }\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n dataReady(result);\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.DomainValue\r\n\r\n function DomainValue(text, markerIndex) {\r\n this.markerIndex = 4;\r\n this.customMarker = null;\r\n this.text = text;\r\n this.markerIndex = markerIndex;\r\n }\r\n var DomainValue$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.LayerManager\r\n\r\n function LayerManager() {\r\n }\r\n LayerManager.get_version = function() {\r\n return LayerManager._version;\r\n };\r\n LayerManager.set_version = function(value) {\r\n LayerManager._version = value;\r\n return value;\r\n };\r\n LayerManager.get_frameWizardDialog = function() {\r\n return LayerManager._frameWizardDialog;\r\n };\r\n LayerManager.get_dataVizWizardDialog = function() {\r\n return LayerManager._dataVizWizardDialog;\r\n };\r\n LayerManager.get_referenceFramePropsDialog = function() {\r\n return LayerManager._referenceFramePropsDialog;\r\n };\r\n LayerManager.get_greatCircleDlg = function() {\r\n return LayerManager._greatCircleDialog;\r\n };\r\n LayerManager.get_tourLayers = function() {\r\n return LayerManager._tourLayers;\r\n };\r\n LayerManager.set_tourLayers = function(value) {\r\n if (LayerManager._tourLayers !== value && !value) {\r\n LayerManager._clearLayers();\r\n LayerManager._tourLayers = value;\r\n LayerManager.loadTree();\r\n }\r\n else if (LayerManager._tourLayers !== value && !!value) {\r\n LayerManager._tourLayers = value;\r\n LayerManager.initLayers();\r\n }\r\n return value;\r\n };\r\n LayerManager.loadTree = function() {\r\n if (WWTControl.scriptInterface != null) {\r\n WWTControl.scriptInterface.refreshLayerManagerNow();\r\n }\r\n };\r\n LayerManager.get_layerMaps = function() {\r\n if (LayerManager.get_tourLayers()) {\r\n return LayerManager._layerMapsTours;\r\n }\r\n else {\r\n return LayerManager._layerMaps;\r\n }\r\n };\r\n LayerManager.set_layerMaps = function(value) {\r\n if (LayerManager.get_tourLayers()) {\r\n LayerManager._layerMapsTours = value;\r\n }\r\n else {\r\n LayerManager._layerMaps = value;\r\n }\r\n return value;\r\n };\r\n LayerManager.get_allMaps = function() {\r\n if (LayerManager.get_tourLayers()) {\r\n return LayerManager._allMapsTours;\r\n }\r\n else {\r\n return LayerManager._allMaps;\r\n }\r\n };\r\n LayerManager.set_allMaps = function(value) {\r\n if (LayerManager.get_tourLayers()) {\r\n LayerManager._allMapsTours = value;\r\n }\r\n else {\r\n LayerManager._allMaps = value;\r\n }\r\n return value;\r\n };\r\n LayerManager.get_currentMap = function() {\r\n return LayerManager._currentMap;\r\n };\r\n LayerManager.set_currentMap = function(value) {\r\n LayerManager._currentMap = value;\r\n return value;\r\n };\r\n LayerManager.get_layerList = function() {\r\n if (LayerManager.get_tourLayers()) {\r\n return LayerManager._layerListTours;\r\n }\r\n else {\r\n return LayerManager._layerList;\r\n }\r\n };\r\n LayerManager.set_layerList = function(value) {\r\n if (LayerManager.get_tourLayers()) {\r\n LayerManager._layerListTours = value;\r\n }\r\n else {\r\n LayerManager._layerList = value;\r\n }\r\n return value;\r\n };\r\n LayerManager.initLayers = function() {\r\n LayerManager._clearLayers();\r\n var iss = null;\r\n if (!LayerManager.get_tourLayers()) {\r\n iss = new LayerMap('ISS', 18);\r\n iss.frame.epoch = SpaceTimeController._twoLineDateToJulian('10184.51609218');\r\n iss.frame.semiMajorAxis = 6728829.41;\r\n iss.frame.referenceFrameType = 1;\r\n iss.frame.inclination = 51.6442;\r\n iss.frame.longitudeOfAscendingNode = 147.0262;\r\n iss.frame.eccentricity = 0.0009909;\r\n iss.frame.meanAnomolyAtEpoch = 325.5563;\r\n iss.frame.meanDailyMotion = 360 * 15.72172655;\r\n iss.frame.argumentOfPeriapsis = 286.4623;\r\n iss.frame.scale = 1;\r\n iss.frame.semiMajorAxisUnits = 1;\r\n iss.frame.meanRadius = 130;\r\n iss.frame.oblateness = 0;\r\n iss.frame.showOrbitPath = true;\r\n var isstle = new Array(0);\r\n var url = URLHelpers.singleton.coreDynamicUrl('wwtweb/isstle.aspx');\r\n var webFile;\r\n webFile = new WebFile(url);\r\n webFile.onStateChange = function() {\r\n if (webFile.get_state() === 1) {\r\n var data = webFile.getText();\r\n isstle = data.split('\\n');\r\n if (isstle.length > 1) {\r\n iss.frame.fromTLE(isstle[0], isstle[1], 398600441800000);\r\n }\r\n }\r\n };\r\n webFile.send();\r\n iss.enabled = true;\r\n }\r\n LayerManager.get_layerMaps()['Sun'] = new LayerMap('Sun', 3);\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Mercury', 4));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Venus', 5));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Earth', 6));\r\n LayerManager.get_layerMaps()['Sun'].childMaps['Earth'].addChild(new LayerMap('Moon', 13));\r\n if (!LayerManager.get_tourLayers()) {\r\n LayerManager.get_layerMaps()['Sun'].childMaps['Earth'].addChild(iss);\r\n }\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Mars', 7));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Jupiter', 8));\r\n LayerManager.get_layerMaps()['Sun'].childMaps['Jupiter'].addChild(new LayerMap('Io', 14));\r\n LayerManager.get_layerMaps()['Sun'].childMaps['Jupiter'].addChild(new LayerMap('Europa', 15));\r\n LayerManager.get_layerMaps()['Sun'].childMaps['Jupiter'].addChild(new LayerMap('Ganymede', 16));\r\n LayerManager.get_layerMaps()['Sun'].childMaps['Jupiter'].addChild(new LayerMap('Callisto', 17));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Saturn', 9));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Uranus', 10));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Neptune', 11));\r\n LayerManager.get_layerMaps()['Sun'].addChild(new LayerMap('Pluto', 12));\r\n LayerManager._addMoons(LayerManager._moonfile);\r\n LayerManager.get_layerMaps()['Sky'] = new LayerMap('Sky', 0);\r\n LayerManager.get_layerMaps()['Sun'].open = true;\r\n LayerManager._allMaps = {};\r\n LayerManager._addAllMaps(LayerManager.get_layerMaps(), null);\r\n if (!LayerManager.get_tourLayers()) {\r\n LayerManager._addIss();\r\n }\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager._addIss = function() {\r\n var layer = new ISSLayer();\r\n layer.set_name(Language.getLocalizedText(1314, 'ISS Model (Toshiyuki Takahei)'));\r\n layer.enabled = Settings.get_active().get_showISSModel();\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n layer.set_referenceFrame('ISS');\r\n LayerManager.get_allMaps()['ISS'].layers.push(layer);\r\n LayerManager.get_allMaps()['ISS'].open = true;\r\n };\r\n LayerManager._addAllMaps = function(maps, parent) {\r\n var $enum1 = ss.enumerate(ss.keys(maps));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var map = maps[key];\r\n map.frame.parent = parent;\r\n LayerManager.get_allMaps()[map.get_name()] = map;\r\n LayerManager._addAllMaps(map.childMaps, map.get_name());\r\n }\r\n };\r\n LayerManager._clearLayers = function() {\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_layerList()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var layer = LayerManager.get_layerList()[key];\r\n layer.cleanUp();\r\n }\r\n ss.clearKeys(LayerManager.get_layerList());\r\n ss.clearKeys(LayerManager.get_layerMaps());\r\n };\r\n LayerManager.getMoonFile = function(url) {\r\n LayerManager._webFileMoons = new WebFile(url);\r\n LayerManager._webFileMoons.onStateChange = LayerManager.moonFileStateChange;\r\n LayerManager._webFileMoons.send();\r\n };\r\n LayerManager.moonFileStateChange = function() {\r\n if (LayerManager._webFileMoons.get_state() === 2) {\r\n alert(LayerManager._webFileMoons.get_message());\r\n }\r\n else if (LayerManager._webFileMoons.get_state() === 1) {\r\n LayerManager._moonfile = LayerManager._webFileMoons.getText();\r\n LayerManager.initLayers();\r\n }\r\n };\r\n LayerManager._addMoons = function(file) {\r\n var data = file.split('\\r\\n');\r\n var first = true;\r\n var $enum1 = ss.enumerate(data);\r\n while ($enum1.moveNext()) {\r\n var line = $enum1.current;\r\n if (first) {\r\n first = false;\r\n continue;\r\n }\r\n var parts = line.split('\\t');\r\n if (parts.length > 16) {\r\n var planet = parts[0];\r\n var frame = new LayerMap(parts[2], 18);\r\n frame.frame._systemGenerated = true;\r\n frame.frame.epoch = parseFloat(parts[1]);\r\n frame.frame.semiMajorAxis = parseFloat(parts[3]) * 1000;\r\n frame.frame.referenceFrameType = 1;\r\n frame.frame.inclination = parseFloat(parts[7]);\r\n frame.frame.longitudeOfAscendingNode = parseFloat(parts[8]);\r\n frame.frame.eccentricity = parseFloat(parts[4]);\r\n frame.frame.meanAnomolyAtEpoch = parseFloat(parts[6]);\r\n frame.frame.meanDailyMotion = parseFloat(parts[9]);\r\n frame.frame.argumentOfPeriapsis = parseFloat(parts[5]);\r\n frame.frame.scale = 1;\r\n frame.frame.semiMajorAxisUnits = 1;\r\n frame.frame.meanRadius = parseFloat(parts[16]) * 1000;\r\n frame.frame.rotationalPeriod = parseFloat(parts[17]);\r\n frame.frame.showAsPoint = false;\r\n frame.frame.showOrbitPath = true;\r\n frame.frame.set_representativeColor(Color.fromArgb(255, 175, 216, 230));\r\n frame.frame.oblateness = 0;\r\n LayerManager.get_layerMaps()['Sun'].childMaps[planet].addChild(frame);\r\n }\r\n }\r\n };\r\n LayerManager.addVoTableLayer = function(table, title) {\r\n return LayerManager.addVoTableLayerWithPlotType(table, title, 2);\r\n };\r\n LayerManager.addVoTableLayerWithPlotType = function(table, title, plotType) {\r\n var layer = VoTableLayer.create(table, plotType);\r\n layer.set_name(title);\r\n layer.set_astronomical(true);\r\n layer.set_referenceFrame('Sky');\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n LayerManager.get_allMaps()['Sky'].layers.push(layer);\r\n LayerManager.get_allMaps()['Sky'].open = true;\r\n layer.enabled = true;\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n return layer;\r\n };\r\n LayerManager.addImageSetLayer = function(imageset, title) {\r\n var layer = ImageSetLayer.create(imageset);\r\n return LayerManager.addFitsImageSetLayer(layer, title);\r\n };\r\n LayerManager.addImageSetLayerCallback = function(imageset, title, callback) {\r\n var layer = ImageSetLayer.create(imageset);\r\n var isNonhipsTiledFits = imageset.get_extension() === '.fits' && layer.getFitsImage() == null && imageset.get_projection() !== 7;\r\n if (isNonhipsTiledFits) {\r\n imageset.get_fitsProperties().onMainImageLoaded = function(image) {\r\n image.applyDisplaySettings();\r\n if (callback != null) {\r\n callback(layer);\r\n }\r\n };\r\n }\r\n LayerManager.addFitsImageSetLayer(layer, title);\r\n if (callback != null && !isNonhipsTiledFits) {\r\n callback(layer);\r\n }\r\n return layer;\r\n };\r\n LayerManager.addFitsImageSetLayer = function(layer, title) {\r\n layer.doneLoading(null);\r\n layer.set_name(title);\r\n layer.set_astronomical(true);\r\n layer.set_referenceFrame('Sky');\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n LayerManager.get_allMaps()['Sky'].layers.push(layer);\r\n LayerManager.get_allMaps()['Sky'].open = true;\r\n layer.enabled = true;\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n return layer;\r\n };\r\n LayerManager.getNextFitsName = function() {\r\n return LayerManager._getNextName('Fits Image');\r\n };\r\n LayerManager.getNextImageSetName = function() {\r\n return LayerManager._getNextName('Image Set');\r\n };\r\n LayerManager._getNextName = function(type) {\r\n var currentNumber = 0;\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_allMaps()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var $enum2 = ss.enumerate(LayerManager.get_allMaps()[key].layers);\r\n while ($enum2.moveNext()) {\r\n var layer = $enum2.current;\r\n if (ss.startsWith(layer.get_name(), type + ' ')) {\r\n var number = ss.replaceString(layer.get_name(), type + ' ', '');\r\n try {\r\n var num = parseInt(number);\r\n if (num > currentNumber) {\r\n currentNumber = num;\r\n }\r\n }\r\n catch ($e3) {\r\n }\r\n }\r\n }\r\n }\r\n return ss.format('{0} {1}', type, currentNumber + 1);\r\n };\r\n LayerManager._closeAllTourLoadedLayers = function() {\r\n var purgeTargets = [];\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_layerList()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var layer = LayerManager.get_layerList()[key];\r\n if (layer.loadedFromTour) {\r\n purgeTargets.push(layer.id);\r\n }\r\n }\r\n var $enum2 = ss.enumerate(purgeTargets);\r\n while ($enum2.moveNext()) {\r\n var guid = $enum2.current;\r\n LayerManager.deleteLayerByID(guid, true, false);\r\n }\r\n var purgeMapsNames = [];\r\n var $enum3 = ss.enumerate(ss.keys(LayerManager.get_allMaps()));\r\n while ($enum3.moveNext()) {\r\n var key = $enum3.current;\r\n var map = LayerManager.get_allMaps()[key];\r\n if (map.loadedFromTour && !map.layers.length) {\r\n purgeMapsNames.push(map.get_name());\r\n }\r\n }\r\n var $enum4 = ss.enumerate(purgeMapsNames);\r\n while ($enum4.moveNext()) {\r\n var name = $enum4.current;\r\n LayerManager.purgeLayerMapDeep(LayerManager.get_allMaps()[name], true);\r\n }\r\n LayerManager.set_version(LayerManager.get_version() + 1) - 1;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager.purgeLayerMapDeep = function(target, topLevel) {\r\n var $enum1 = ss.enumerate(target.layers);\r\n while ($enum1.moveNext()) {\r\n var layer = $enum1.current;\r\n LayerManager.deleteLayerByID(layer.id, false, false);\r\n }\r\n target.layers.length = 0;\r\n var $enum2 = ss.enumerate(ss.keys(target.childMaps));\r\n while ($enum2.moveNext()) {\r\n var key = $enum2.current;\r\n var map = target.childMaps[key];\r\n LayerManager.purgeLayerMapDeep(map, false);\r\n }\r\n ss.clearKeys(target.childMaps);\r\n if (topLevel) {\r\n if (!ss.emptyString(target.frame.parent)) {\r\n if (ss.keyExists(LayerManager.get_allMaps(), target.frame.parent)) {\r\n delete LayerManager.get_allMaps()[target.frame.parent].childMaps[target.get_name()];\r\n }\r\n }\r\n else {\r\n if (ss.keyExists(LayerManager.get_layerMaps(), target.get_name())) {\r\n delete LayerManager.get_layerMaps()[target.get_name()];\r\n }\r\n }\r\n }\r\n delete LayerManager.get_allMaps()[target.get_name()];\r\n LayerManager._version++;\r\n };\r\n LayerManager._cleanAllTourLoadedLayers = function() {\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_layerList()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var layer = LayerManager.get_layerList()[key];\r\n if (layer.loadedFromTour) {\r\n layer.loadedFromTour = false;\r\n }\r\n }\r\n };\r\n LayerManager.mergeToursLayers = function() {\r\n LayerManager._tourLayers = false;\r\n var OverWrite = false;\r\n var CollisionChecked = false;\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager._allMapsTours));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var map = LayerManager._allMapsTours[key];\r\n if (!ss.keyExists(LayerManager._allMaps, map.get_name())) {\r\n var newMap = new LayerMap(map.get_name(), 18);\r\n newMap.frame = map.frame;\r\n newMap.loadedFromTour = true;\r\n LayerManager.get_allMaps()[newMap.get_name()] = newMap;\r\n }\r\n }\r\n LayerManager.connectAllChildren();\r\n var $enum2 = ss.enumerate(ss.keys(LayerManager._layerListTours));\r\n while ($enum2.moveNext()) {\r\n var key = $enum2.current;\r\n var layer = LayerManager._layerListTours[key];\r\n if (ss.keyExists(LayerManager.get_layerList(), layer.id)) {\r\n if (!CollisionChecked) {\r\n OverWrite = true;\r\n CollisionChecked = true;\r\n }\r\n if (OverWrite) {\r\n LayerManager.deleteLayerByID(layer.id, true, false);\r\n }\r\n }\r\n if (!ss.keyExists(LayerManager.get_layerList(), layer.id)) {\r\n if (ss.keyExists(LayerManager.get_allMaps(), layer.get_referenceFrame())) {\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.push(layer);\r\n }\r\n }\r\n else {\r\n layer.cleanUp();\r\n }\r\n }\r\n ss.clearKeys(LayerManager._layerListTours);\r\n ss.clearKeys(LayerManager._allMapsTours);\r\n ss.clearKeys(LayerManager._layerMapsTours);\r\n LayerManager.loadTree();\r\n };\r\n LayerManager.connectAllChildren = function() {\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_allMaps()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var map = LayerManager.get_allMaps()[key];\r\n if (ss.emptyString(map.frame.parent) && !ss.keyExists(LayerManager.get_layerMaps(), map.frame.name)) {\r\n LayerManager.get_layerMaps()[map.get_name()] = map;\r\n }\r\n else if (!ss.emptyString(map.frame.parent) && ss.keyExists(LayerManager.get_allMaps(), map.frame.parent)) {\r\n if (!ss.keyExists(LayerManager.get_allMaps()[map.frame.parent].childMaps, map.frame.name)) {\r\n LayerManager.get_allMaps()[map.frame.parent].childMaps[map.frame.name] = map;\r\n map.parent = LayerManager.get_allMaps()[map.frame.parent];\r\n }\r\n }\r\n }\r\n };\r\n LayerManager.deleteLayerByID = function(ID, removeFromParent, updateTree) {\r\n if (ss.keyExists(LayerManager.get_layerList(), ID)) {\r\n var layer = LayerManager.get_layerList()[ID];\r\n layer.cleanUp();\r\n if (removeFromParent) {\r\n ss.remove(LayerManager.get_allMaps()[layer.get_referenceFrame()].layers, layer);\r\n }\r\n delete LayerManager.get_layerList()[ID];\r\n LayerManager._version++;\r\n if (updateTree) {\r\n LayerManager.loadTree();\r\n }\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n LayerManager._getFrameTarget = function(renderContext, TrackingFrame) {\r\n var target = new FrameTarget();\r\n var targetPoint = Vector3d.get_empty();\r\n target.target = Vector3d.get_empty();\r\n target.matrix = Matrix3d.get_identity();\r\n if (!ss.keyExists(LayerManager.get_allMaps(), TrackingFrame)) {\r\n return target;\r\n }\r\n var mapList = [];\r\n var current = LayerManager.get_allMaps()[TrackingFrame];\r\n mapList.push(current);\r\n while (current.frame.reference === 18) {\r\n current = current.parent;\r\n mapList.splice(0, 0, current);\r\n }\r\n var matOld = renderContext.get_world().clone();\r\n var matOldNonRotating = renderContext.get_worldBaseNonRotating();\r\n var matOldBase = renderContext.get_worldBase();\r\n var oldNominalRadius = renderContext.get_nominalRadius();\r\n var $enum1 = ss.enumerate(mapList);\r\n while ($enum1.moveNext()) {\r\n var map = $enum1.current;\r\n if (map.frame.reference !== 18 && map.frame.reference !== 20) {\r\n Planets.setupPlanetMatrix(renderContext, Enums.parse('SolarSystemObjects', map.frame.name), Vector3d.get_empty(), false);\r\n }\r\n else {\r\n map.computeFrame(renderContext);\r\n if (map.frame.useRotatingParentFrame()) {\r\n renderContext.set_world(Matrix3d.multiplyMatrix(map.frame.worldMatrix, renderContext.get_world()));\r\n }\r\n else {\r\n renderContext.set_world(Matrix3d.multiplyMatrix(map.frame.worldMatrix, renderContext.get_worldBaseNonRotating()));\r\n }\r\n if (map.frame.referenceFrameType === 3) {\r\n renderContext.set_worldBaseNonRotating(renderContext.get_world().clone());\r\n }\r\n renderContext.set_nominalRadius(map.frame.meanRadius);\r\n }\r\n }\r\n targetPoint = renderContext.get_world().transform(targetPoint);\r\n var lookAt = renderContext.get_world().transform(Vector3d.create(0, 0, 1));\r\n var lookUp = Vector3d.subtractVectors(renderContext.get_world().transform(Vector3d.create(0, 1, 0)), targetPoint);\r\n lookUp.normalize();\r\n target.matrix = Matrix3d.lookAtLH(new Vector3d(), Vector3d.subtractVectors(lookAt, targetPoint), lookUp);\r\n renderContext.set_nominalRadius(oldNominalRadius);\r\n renderContext.set_world(matOld);\r\n renderContext.set_worldBaseNonRotating(matOldNonRotating);\r\n renderContext.set_worldBase(matOldBase);\r\n target.target = targetPoint;\r\n return target;\r\n };\r\n LayerManager._prepTourLayers = function() {\r\n if (TourPlayer.get_playing()) {\r\n var player = WWTControl.singleton.uiController;\r\n if (player != null) {\r\n var tour = player.get_tour();\r\n if (tour.get_currentTourStop() != null) {\r\n player.updateTweenPosition(-1);\r\n if (!tour.get_currentTourStop().get_keyFramed()) {\r\n tour.get_currentTourStop()._updateLayerOpacity();\r\n var $enum1 = ss.enumerate(ss.keys(tour.get_currentTourStop().layers));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var info = tour.get_currentTourStop().layers[key];\r\n if (ss.keyExists(LayerManager.get_layerList(), info.id)) {\r\n LayerManager.get_layerList()[info.id].set_opacity(info.frameOpacity);\r\n LayerManager.get_layerList()[info.id].setParams(info.frameParams);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n LayerManager._draw = function(renderContext, opacity, astronomical, referenceFrame, nested, cosmos) {\r\n if (!ss.keyExists(LayerManager.get_allMaps(), referenceFrame)) {\r\n return;\r\n }\r\n var thisMap = LayerManager.get_allMaps()[referenceFrame];\r\n if (!thisMap.enabled || (!ss.keyCount(thisMap.childMaps) && !thisMap.layers.length && !(thisMap.frame.showAsPoint || thisMap.frame.showOrbitPath))) {\r\n return;\r\n }\r\n if (TourPlayer.get_playing()) {\r\n var player = WWTControl.singleton.uiController;\r\n if (player != null) {\r\n var tour = player.get_tour();\r\n if (tour.get_currentTourStop() != null) {\r\n player.updateTweenPosition(-1);\r\n tour.get_currentTourStop()._updateLayerOpacity();\r\n var $enum1 = ss.enumerate(ss.keys(tour.get_currentTourStop().layers));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var info = tour.get_currentTourStop().layers[key];\r\n if (ss.keyExists(LayerManager.get_layerList(), info.id)) {\r\n LayerManager.get_layerList()[info.id].set_opacity(info.frameOpacity);\r\n LayerManager.get_layerList()[info.id].setParams(info.frameParams);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var matOld = renderContext.get_world();\r\n var matOldNonRotating = renderContext.get_worldBaseNonRotating();\r\n var oldNominalRadius = renderContext.get_nominalRadius();\r\n if ((thisMap.frame.reference === 18 | thisMap.frame.reference === 18) === 1) {\r\n thisMap.computeFrame(renderContext);\r\n if (thisMap.frame.referenceFrameType !== 1 && thisMap.frame.referenceFrameType !== 2) {\r\n renderContext.set_world(Matrix3d.multiplyMatrix(thisMap.frame.worldMatrix, renderContext.get_world()));\r\n }\r\n else {\r\n renderContext.set_world(Matrix3d.multiplyMatrix(thisMap.frame.worldMatrix, renderContext.get_worldBaseNonRotating()));\r\n }\r\n renderContext.set_nominalRadius(thisMap.frame.meanRadius);\r\n }\r\n if (thisMap.frame.showAsPoint) {\r\n }\r\n for (var pass = 0; pass < 2; pass++) {\r\n var $enum2 = ss.enumerate(LayerManager.get_allMaps()[referenceFrame].layers);\r\n while ($enum2.moveNext()) {\r\n var layer = $enum2.current;\r\n if ((!pass && ss.canCast(layer, ImageSetLayer)) || (pass === 1 && !(ss.canCast(layer, ImageSetLayer)))) {\r\n var skipLayer = false;\r\n if (!pass) {\r\n skipLayer = !astronomical && (layer).get_overrideDefaultLayer();\r\n }\r\n if (layer.enabled && !skipLayer) {\r\n var layerStart = SpaceTimeController.utcToJulian(layer.get_startTime());\r\n var layerEnd = SpaceTimeController.utcToJulian(layer.get_endTime());\r\n var fadeIn = SpaceTimeController.utcToJulian(layer.get_startTime()) - ((layer.get_fadeType() === 1 || layer.get_fadeType() === 3) ? (layer.get_fadeSpan() / 864000000) : 0);\r\n var fadeOut = SpaceTimeController.utcToJulian(layer.get_endTime()) + ((layer.get_fadeType() === 2 || layer.get_fadeType() === 3) ? (layer.get_fadeSpan() / 864000000) : 0);\r\n if (SpaceTimeController.get_jNow() > fadeIn && SpaceTimeController.get_jNow() < fadeOut) {\r\n var fadeOpacity = 1;\r\n if (SpaceTimeController.get_jNow() < layerStart) {\r\n fadeOpacity = ((SpaceTimeController.get_jNow() - fadeIn) / (layer.get_fadeSpan() / 864000000));\r\n }\r\n if (SpaceTimeController.get_jNow() > layerEnd) {\r\n fadeOpacity = ((fadeOut - SpaceTimeController.get_jNow()) / (layer.get_fadeSpan() / 864000000));\r\n }\r\n layer.set_astronomical(astronomical);\r\n if (ss.canCast(layer, SpreadSheetLayer)) {\r\n var tsl = ss.safeCast(layer, SpreadSheetLayer);\r\n tsl.draw(renderContext, opacity * fadeOpacity, cosmos);\r\n }\r\n else {\r\n layer.draw(renderContext, opacity * fadeOpacity, cosmos);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (nested) {\r\n var $enum3 = ss.enumerate(ss.keys(LayerManager.get_allMaps()[referenceFrame].childMaps));\r\n while ($enum3.moveNext()) {\r\n var key = $enum3.current;\r\n var map = LayerManager.get_allMaps()[referenceFrame].childMaps[key];\r\n if (!(ss.canCast(map, LayerMap))) {\r\n continue;\r\n }\r\n if (map.enabled && map.frame.showOrbitPath && Settings.get_active().get_solarSystemOrbits() && Settings.get_active().get_solarSystemMinorOrbits()) {\r\n if (map.frame.referenceFrameType === 1) {\r\n if (map.frame.get_orbit() == null) {\r\n map.frame.set_orbit(new Orbit(map.frame.get_elements(), 360, map.frame.get_representativeColor(), 1, map.parent.frame.meanRadius));\r\n }\r\n var matSaved = renderContext.get_world();\r\n renderContext.set_world(Matrix3d.multiplyMatrix(thisMap.frame.worldMatrix, renderContext.get_worldBaseNonRotating()));\r\n map.frame.get_orbit().draw3D(renderContext, 1 * 0.5, Vector3d.create(0, 0, 0));\r\n renderContext.set_world(matSaved);\r\n }\r\n else if (map.frame.referenceFrameType === 2) {\r\n }\r\n }\r\n if ((map.frame.reference === 18 || map.frame.reference === 19)) {\r\n LayerManager._draw(renderContext, opacity, astronomical, map.get_name(), nested, cosmos);\r\n }\r\n }\r\n }\r\n renderContext.set_nominalRadius(oldNominalRadius);\r\n renderContext.set_world(matOld);\r\n renderContext.set_worldBaseNonRotating(matOldNonRotating);\r\n };\r\n LayerManager._getVisibleLayerList = function(previous) {\r\n var list = {};\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_layerList()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var layer = LayerManager.get_layerList()[key];\r\n if (layer.enabled) {\r\n var info = new LayerInfo();\r\n info.startOpacity = info.endOpacity = layer.get_opacity();\r\n info.id = layer.id;\r\n info.startParams = layer.getParams();\r\n if (ss.keyExists(previous, info.id)) {\r\n info.endOpacity = previous[info.id].endOpacity;\r\n info.endParams = previous[info.id].endParams;\r\n }\r\n else {\r\n info.endParams = layer.getParams();\r\n }\r\n list[layer.id] = info;\r\n }\r\n }\r\n return list;\r\n };\r\n LayerManager.setVisibleLayerList = function(list) {\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_layerList()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var layer = LayerManager.get_layerList()[key];\r\n layer.enabled = ss.keyExists(list, layer.id);\r\n try {\r\n if (layer.enabled) {\r\n layer.set_opacity(list[layer.id].frameOpacity);\r\n layer.setParams(list[layer.id].frameParams);\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n };\r\n LayerManager._preDraw = function(renderContext, opacity, astronomical, referenceFrame, nested) {\r\n if (!ss.keyExists(LayerManager.get_allMaps(), referenceFrame)) {\r\n return;\r\n }\r\n var thisMap = LayerManager.get_allMaps()[referenceFrame];\r\n if (!ss.keyCount(thisMap.childMaps) && !thisMap.layers.length) {\r\n return;\r\n }\r\n if (TourPlayer.get_playing()) {\r\n var player = ss.safeCast(WWTControl.singleton.uiController, TourPlayer);\r\n if (player != null) {\r\n var tour = player.get_tour();\r\n if (tour.get_currentTourStop() != null) {\r\n player.updateTweenPosition(-1);\r\n tour.get_currentTourStop()._updateLayerOpacity();\r\n var $enum1 = ss.enumerate(ss.keys(tour.get_currentTourStop().layers));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var info = tour.get_currentTourStop().layers[key];\r\n if (ss.keyExists(LayerManager.get_layerList(), info.id)) {\r\n LayerManager.get_layerList()[info.id].set_opacity(info.frameOpacity);\r\n LayerManager.get_layerList()[info.id].setParams(info.frameParams);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var matOld = renderContext.get_world();\r\n var matOldNonRotating = renderContext.get_worldBaseNonRotating();\r\n var oldNominalRadius = renderContext.get_nominalRadius();\r\n if (thisMap.frame.reference === 18) {\r\n thisMap.computeFrame(renderContext);\r\n if (thisMap.frame.referenceFrameType !== 1) {\r\n renderContext.set_world(Matrix3d.multiplyMatrix(thisMap.frame.worldMatrix, renderContext.get_world()));\r\n }\r\n else {\r\n renderContext.set_world(Matrix3d.multiplyMatrix(thisMap.frame.worldMatrix, renderContext.get_worldBaseNonRotating()));\r\n }\r\n renderContext.set_nominalRadius(thisMap.frame.meanRadius);\r\n }\r\n for (var pass = 0; pass < 2; pass++) {\r\n var $enum2 = ss.enumerate(LayerManager.get_allMaps()[referenceFrame].layers);\r\n while ($enum2.moveNext()) {\r\n var layer = $enum2.current;\r\n if ((!pass && ss.canCast(layer, ImageSetLayer)) || (pass === 1 && !(ss.canCast(layer, ImageSetLayer)))) {\r\n if (layer.enabled) {\r\n var layerStart = SpaceTimeController.utcToJulian(layer.get_startTime());\r\n var layerEnd = SpaceTimeController.utcToJulian(layer.get_endTime());\r\n var fadeIn = SpaceTimeController.utcToJulian(layer.get_startTime()) - ((layer.get_fadeType() === 1 || layer.get_fadeType() === 3) ? (layer.get_fadeSpan() / 864000000) : 0);\r\n var fadeOut = SpaceTimeController.utcToJulian(layer.get_endTime()) + ((layer.get_fadeType() === 2 || layer.get_fadeType() === 3) ? (layer.get_fadeSpan() / 864000000) : 0);\r\n if (SpaceTimeController.get_jNow() > fadeIn && SpaceTimeController.get_jNow() < fadeOut) {\r\n var fadeOpacity = 1;\r\n if (SpaceTimeController.get_jNow() < layerStart) {\r\n fadeOpacity = ((SpaceTimeController.get_jNow() - fadeIn) / (layer.get_fadeSpan() / 864000000));\r\n }\r\n if (SpaceTimeController.get_jNow() > layerEnd) {\r\n fadeOpacity = ((fadeOut - SpaceTimeController.get_jNow()) / (layer.get_fadeSpan() / 864000000));\r\n }\r\n if (!thisMap.frame.reference) {\r\n layer.set_astronomical(true);\r\n }\r\n layer.preDraw(renderContext, opacity * fadeOpacity);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (nested) {\r\n var $enum3 = ss.enumerate(ss.keys(LayerManager.get_allMaps()[referenceFrame].childMaps));\r\n while ($enum3.moveNext()) {\r\n var key = $enum3.current;\r\n var map = LayerManager.get_allMaps()[referenceFrame].childMaps[key];\r\n if ((map.frame.reference === 18 || map.frame.reference === 19)) {\r\n LayerManager._preDraw(renderContext, opacity, astronomical, map.get_name(), nested);\r\n }\r\n }\r\n }\r\n renderContext.set_nominalRadius(oldNominalRadius);\r\n renderContext.set_world(matOld);\r\n renderContext.set_worldBaseNonRotating(matOldNonRotating);\r\n };\r\n LayerManager.add = function(layer, updateTree) {\r\n if (!ss.keyExists(LayerManager.get_layerList(), layer.id)) {\r\n if (ss.keyExists(LayerManager.get_allMaps(), layer.get_referenceFrame())) {\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.push(layer);\r\n LayerManager._version++;\r\n if (updateTree) {\r\n LayerManager.loadTree();\r\n }\r\n }\r\n }\r\n };\r\n LayerManager.layerSelectionChanged = function(selected) {\r\n LayerManager._selectedLayer = selected;\r\n if (LayerManager._selectedLayer != null) {\r\n if (ss.canCast(LayerManager._selectedLayer, LayerMap)) {\r\n var map = ss.safeCast(LayerManager._selectedLayer, LayerMap);\r\n if (map != null) {\r\n LayerManager.set_currentMap(map.get_name());\r\n }\r\n }\r\n else {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, ImageSetLayer);\r\n if (layer != null && ss.canCast(layer.get_imageSet().get_wcsImage(), FitsImage)) {\r\n return;\r\n }\r\n }\r\n }\r\n WWTControl.scriptInterface.setTimeSlider('left', '');\r\n WWTControl.scriptInterface.setTimeSlider('right', '');\r\n WWTControl.scriptInterface.setTimeSlider('title', Language.getLocalizedText(667, 'Time Scrubber'));\r\n };\r\n LayerManager.setTimeSliderValue = function(pos) {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, ImageSetLayer);\r\n if (layer != null && ss.canCast(layer.get_imageSet().get_wcsImage(), FitsImage)) {\r\n }\r\n };\r\n LayerManager.showLayerMenu = function(selected, x, y) {\r\n LayerManager._lastMenuClick = Vector2d.create(x, y);\r\n LayerManager._selectedLayer = selected;\r\n if (ss.canCast(selected, LayerMap)) {\r\n LayerManager.set_currentMap((selected).get_name());\r\n }\r\n else if (ss.canCast(selected, Layer)) {\r\n LayerManager.set_currentMap((selected).get_referenceFrame());\r\n }\r\n if (((ss.canCast(selected, Layer)) && !(ss.canCast(selected, SkyOverlays)))) {\r\n var selectedLayer = selected;\r\n LayerManager._contextMenu = new ContextMenuStrip();\r\n var renameMenu = ToolStripMenuItem.create(Language.getLocalizedText(225, 'Rename'));\r\n var Expand = ToolStripMenuItem.create(Language.getLocalizedText(981, 'Expand'));\r\n var Collapse = ToolStripMenuItem.create(Language.getLocalizedText(982, 'Collapse'));\r\n var copyMenu = ToolStripMenuItem.create(Language.getLocalizedText(428, 'Copy'));\r\n var deleteMenu = ToolStripMenuItem.create(Language.getLocalizedText(167, 'Delete'));\r\n var saveMenu = ToolStripMenuItem.create(Language.getLocalizedText(960, 'Save...'));\r\n var publishMenu = ToolStripMenuItem.create(Language.getLocalizedText(983, 'Publish to Community...'));\r\n var colorMenu = ToolStripMenuItem.create(Language.getLocalizedText(458, 'Color/Opacity'));\r\n var opacityMenu = ToolStripMenuItem.create(Language.getLocalizedText(305, 'Opacity'));\r\n var propertiesMenu = ToolStripMenuItem.create(Language.getLocalizedText(20, 'Properties'));\r\n var scaleMenu = ToolStripMenuItem.create(Language.getLocalizedText(1291, 'Scale/Histogram'));\r\n var lifeTimeMenu = ToolStripMenuItem.create(Language.getLocalizedText(683, 'Lifetime'));\r\n var spacer1 = new ToolStripSeparator();\r\n var top = ToolStripMenuItem.create(Language.getLocalizedText(684, 'Move to Top'));\r\n var up = ToolStripMenuItem.create(Language.getLocalizedText(685, 'Move Up'));\r\n var down = ToolStripMenuItem.create(Language.getLocalizedText(686, 'Move Down'));\r\n var bottom = ToolStripMenuItem.create(Language.getLocalizedText(687, 'Move to Bottom'));\r\n var showViewer = ToolStripMenuItem.create(Language.getLocalizedText(957, 'VO Table Viewer'));\r\n var spacer2 = new ToolStripSeparator();\r\n var defaultImageset = ToolStripMenuItem.create(Language.getLocalizedText(1294, 'Background Image Set'));\r\n top.click = LayerManager._top_Click;\r\n up.click = LayerManager._up_Click;\r\n down.click = LayerManager._down_Click;\r\n bottom.click = LayerManager._bottom_Click;\r\n saveMenu.click = LayerManager._saveMenu_Click;\r\n publishMenu.click = LayerManager._publishMenu_Click;\r\n Expand.click = LayerManager._expand_Click;\r\n Collapse.click = LayerManager._collapse_Click;\r\n copyMenu.click = LayerManager._copyMenu_Click;\r\n colorMenu.click = LayerManager._colorMenu_Click;\r\n deleteMenu.click = LayerManager._deleteMenu_Click;\r\n renameMenu.click = LayerManager._renameMenu_Click;\r\n propertiesMenu.click = LayerManager._propertiesMenu_Click;\r\n scaleMenu.click = LayerManager.scaleMenu_click;\r\n defaultImageset.click = LayerManager._defaultImageset_Click;\r\n opacityMenu.click = LayerManager._opacityMenu_Click;\r\n lifeTimeMenu.click = LayerManager._lifeTimeMenu_Click;\r\n showViewer.click = LayerManager._showViewer_Click;\r\n LayerManager._contextMenu.items.push(renameMenu);\r\n if (!selectedLayer.get_opened() && selectedLayer.getPrimaryUI() != null && selectedLayer.getPrimaryUI().get_hasTreeViewNodes()) {\r\n LayerManager._contextMenu.items.push(Expand);\r\n }\r\n if (selectedLayer.get_opened()) {\r\n LayerManager._contextMenu.items.push(Collapse);\r\n }\r\n if (selectedLayer.canCopyToClipboard()) {\r\n }\r\n LayerManager._contextMenu.items.push(deleteMenu);\r\n LayerManager._contextMenu.items.push(spacer2);\r\n LayerManager._contextMenu.items.push(colorMenu);\r\n if (ss.canCast(selected, ImageSetLayer)) {\r\n LayerManager._contextMenu.items.push(defaultImageset);\r\n var isl = ss.safeCast(selected, ImageSetLayer);\r\n defaultImageset.checked = isl.get_overrideDefaultLayer();\r\n }\r\n if (ss.canCast(selected, SpreadSheetLayer) || ss.canCast(selected, GreatCirlceRouteLayer)) {\r\n LayerManager._contextMenu.items.push(propertiesMenu);\r\n }\r\n if (ss.canCast(selected, VoTableLayer)) {\r\n LayerManager._contextMenu.items.push(showViewer);\r\n }\r\n if (ss.canCast(selected, ImageSetLayer)) {\r\n var isl = ss.safeCast(selected, ImageSetLayer);\r\n LayerManager._contextMenu.items.push(scaleMenu);\r\n }\r\n if (LayerManager.get_allMaps()[selectedLayer.get_referenceFrame()].layers.length > 1) {\r\n LayerManager._contextMenu.items.push(spacer1);\r\n LayerManager._contextMenu.items.push(top);\r\n LayerManager._contextMenu.items.push(up);\r\n LayerManager._contextMenu.items.push(down);\r\n LayerManager._contextMenu.items.push(bottom);\r\n }\r\n LayerManager._contextMenu._show(Vector2d.create(x, y));\r\n }\r\n else if (ss.canCast(selected, LayerMap)) {\r\n var map = ss.safeCast(selected, LayerMap);\r\n var sandbox = map.frame.reference.toString() === 'Sandbox';\r\n var Dome = map.frame.name === 'Dome';\r\n var Sky = map.frame.name === 'Sky';\r\n if (Dome) {\r\n return;\r\n }\r\n LayerManager._contextMenu = new ContextMenuStrip();\r\n var trackFrame = ToolStripMenuItem.create(Language.getLocalizedText(1298, 'Track this frame'));\r\n var goTo = ToolStripMenuItem.create(Language.getLocalizedText(1299, 'Fly Here'));\r\n var showOrbit = ToolStripMenuItem.create('Show Orbit');\r\n var newMenu = ToolStripMenuItem.create(Language.getLocalizedText(674, 'New Reference Frame'));\r\n var newLayerGroupMenu = ToolStripMenuItem.create(Language.getLocalizedText(675, 'New Layer Group'));\r\n var addMenu = ToolStripMenuItem.create(Language.getLocalizedText(166, 'Add'));\r\n var newLight = ToolStripMenuItem.create('Add Light');\r\n var addFeedMenu = ToolStripMenuItem.create(Language.getLocalizedText(956, 'Add OData/table feed as Layer'));\r\n var addWmsLayer = ToolStripMenuItem.create(Language.getLocalizedText(987, 'New WMS Layer'));\r\n var addGridLayer = ToolStripMenuItem.create(Language.getLocalizedText(1300, 'New Lat/Lng Grid'));\r\n var addGreatCircle = ToolStripMenuItem.create(Language.getLocalizedText(988, 'New Great Circle'));\r\n var importTLE = ToolStripMenuItem.create(Language.getLocalizedText(989, 'Import Orbital Elements'));\r\n var addMpc = ToolStripMenuItem.create(Language.getLocalizedText(1301, 'Add Minor Planet'));\r\n var deleteFrameMenu = ToolStripMenuItem.create(Language.getLocalizedText(167, 'Delete'));\r\n var pasteMenu = ToolStripMenuItem.create(Language.getLocalizedText(425, 'Paste'));\r\n var addToTimeline = ToolStripMenuItem.create(Language.getLocalizedText(1290, 'Add to Timeline'));\r\n var addKeyframe = ToolStripMenuItem.create(Language.getLocalizedText(1280, 'Add Keyframe'));\r\n var popertiesMenu = ToolStripMenuItem.create(Language.getLocalizedText(20, 'Properties'));\r\n var saveMenu = ToolStripMenuItem.create(Language.getLocalizedText(990, 'Save Layers'));\r\n var publishLayers = ToolStripMenuItem.create(Language.getLocalizedText(991, 'Publish Layers to Community'));\r\n var spacer1 = new ToolStripSeparator();\r\n var spacer0 = new ToolStripSeparator();\r\n var spacer2 = new ToolStripSeparator();\r\n var asReferenceFrame = ToolStripMenuItem.create('As Reference Frame');\r\n var asOrbitalLines = ToolStripMenuItem.create('As Orbital Line');\r\n trackFrame.click = LayerManager._trackFrame_Click;\r\n goTo.click = LayerManager._goTo_Click;\r\n asReferenceFrame.click = LayerManager._addMpc_Click;\r\n asOrbitalLines.click = LayerManager._asOrbitalLines_Click;\r\n addMpc.dropDownItems.push(asReferenceFrame);\r\n addMpc.dropDownItems.push(asOrbitalLines);\r\n addMenu.click = LayerManager._addMenu_Click;\r\n newLayerGroupMenu.click = LayerManager._newLayerGroupMenu_Click;\r\n pasteMenu.click = LayerManager._pasteLayer_Click;\r\n newMenu.click = LayerManager._newMenu_Click;\r\n deleteFrameMenu.click = LayerManager._deleteFrameMenu_Click;\r\n popertiesMenu.click = LayerManager._framePropertiesMenu_Click;\r\n addGreatCircle.click = LayerManager._addGreatCircle_Click;\r\n addGridLayer.click = LayerManager._addGirdLayer_Click;\r\n var convertToOrbit = ToolStripMenuItem.create('Extract Orbit Layer');\r\n if (map.frame.reference !== 19) {\r\n if ((WWTControl.singleton.get_solarSystemMode() | WWTControl.singleton.sandboxMode) === 1) {\r\n var spacerNeeded = false;\r\n if (map.frame.reference !== 18 && !WWTControl.singleton.sandboxMode) {\r\n if (!Sky) {\r\n }\r\n try {\r\n var name = map.frame.reference.toString();\r\n if (name !== 'Sandbox') {\r\n var ssObj = Enums.parse('SolarSystemObjects', name);\r\n var id = ssObj;\r\n var bit = Math.pow(2, id);\r\n showOrbit.checked = !!(Settings.get_active().get_planetOrbitsFilter() & bit);\r\n showOrbit.click = LayerManager._showOrbitPlanet_Click;\r\n showOrbit.tag = bit.toString();\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n else {\r\n if (!sandbox && !Sky) {\r\n LayerManager._contextMenu.items.push(trackFrame);\r\n spacerNeeded = true;\r\n }\r\n showOrbit.checked = map.frame.showOrbitPath;\r\n showOrbit.click = LayerManager._showOrbit_Click;\r\n }\r\n if (spacerNeeded) {\r\n LayerManager._contextMenu.items.push(spacer2);\r\n }\r\n if (!Sky && !sandbox) {\r\n LayerManager._contextMenu.items.push(showOrbit);\r\n LayerManager._contextMenu.items.push(spacer0);\r\n }\r\n if (map.frame.reference.toString() === 'Sandbox') {\r\n LayerManager._contextMenu.items.push(newLight);\r\n }\r\n }\r\n if (!Sky) {\r\n LayerManager._contextMenu.items.push(newMenu);\r\n }\r\n }\r\n if (!Sky) {\r\n LayerManager._contextMenu.items.push(addGreatCircle);\r\n LayerManager._contextMenu.items.push(addGridLayer);\r\n }\r\n if ((map.frame.reference !== 19 && map.frame.name === 'Sun') || (map.frame.reference === 19 && map.parent != null && map.parent.frame.name === 'Sun')) {\r\n LayerManager._contextMenu.items.push(addMpc);\r\n }\r\n if (map.frame.reference === 18 && map.frame.referenceFrameType === 1 && map.parent != null && map.parent.frame.name === 'Sun') {\r\n }\r\n if (!Sky) {\r\n }\r\n LayerManager._contextMenu.items.push(pasteMenu);\r\n if (map.frame.reference === 19) {\r\n LayerManager._contextMenu.items.push(deleteFrameMenu);\r\n }\r\n if (map.frame.reference === 18) {\r\n LayerManager._contextMenu.items.push(deleteFrameMenu);\r\n LayerManager._contextMenu.items.push(popertiesMenu);\r\n }\r\n LayerManager._contextMenu.items.push(spacer1);\r\n LayerManager._contextMenu._show(Vector2d.create(x, y));\r\n }\r\n };\r\n LayerManager._publishMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._addGirdLayer_Click = function(sender, e) {\r\n var layer = new GridLayer();\r\n layer.enabled = true;\r\n layer.set_name('Lat-Lng Grid');\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n layer.set_referenceFrame(LayerManager._currentMap);\r\n LayerManager.get_allMaps()[LayerManager._currentMap].layers.push(layer);\r\n LayerManager.get_allMaps()[LayerManager._currentMap].open = true;\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager._trackFrame_Click = function(sender, e) {\r\n var target = LayerManager._selectedLayer;\r\n WWTControl.singleton.renderContext.set_solarSystemTrack(20);\r\n WWTControl.singleton.renderContext.set_trackingFrame(target.get_name());\r\n WWTControl.singleton.renderContext.viewCamera.zoom = WWTControl.singleton.renderContext.targetCamera.zoom = 1E-09;\r\n };\r\n LayerManager._goTo_Click = function(sender, e) {\r\n };\r\n LayerManager._saveMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._expand_Click = function(sender, e) {\r\n };\r\n LayerManager._collapse_Click = function(sender, e) {\r\n };\r\n LayerManager._copyMenu_Click = function(sender, e) {\r\n if (LayerManager._selectedLayer != null && ss.canCast(LayerManager._selectedLayer, Layer)) {\r\n var node = LayerManager._selectedLayer;\r\n node.copyToClipboard();\r\n }\r\n };\r\n LayerManager._newLayerGroupMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._importTLEFile = function(filename) {\r\n };\r\n LayerManager._makeLayerGroupNow = function(name) {\r\n var target = LayerManager._selectedLayer;\r\n LayerManager._makeLayerGroup(name, target);\r\n };\r\n LayerManager._makeLayerGroup = function(name, target) {\r\n var frame = new ReferenceFrame();\r\n frame.name = name;\r\n frame.reference = 19;\r\n var newMap = new LayerMap(frame.name, 19);\r\n newMap.frame = frame;\r\n newMap.frame._systemGenerated = false;\r\n target.addChild(newMap);\r\n newMap.frame.parent = target.get_name();\r\n LayerManager.get_allMaps()[frame.name] = newMap;\r\n LayerManager._version++;\r\n };\r\n LayerManager._lifeTimeMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._deleteFrameMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._framePropertiesMenu_Click = function(sender, e) {\r\n var target = LayerManager._selectedLayer;\r\n LayerManager.get_referenceFramePropsDialog().show(target.frame, e);\r\n };\r\n LayerManager._newMenu_Click = function(sender, e) {\r\n var frame = new ReferenceFrame();\r\n LayerManager.get_frameWizardDialog().show(frame, e);\r\n };\r\n LayerManager.referenceFrameWizardFinished = function(frame) {\r\n var target = LayerManager._selectedLayer;\r\n var newMap = new LayerMap(frame.name, 18);\r\n if (!ss.keyExists(LayerManager.get_allMaps(), frame.name)) {\r\n newMap.frame = frame;\r\n target.addChild(newMap);\r\n newMap.frame.parent = target.get_name();\r\n LayerManager.get_allMaps()[frame.name] = newMap;\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n }\r\n };\r\n LayerManager.pasteFromTle = function(lines, frame) {\r\n var line1 = '';\r\n var line2 = '';\r\n for (var i = 0; i < lines.length; i++) {\r\n lines[i] = ss.trim(lines[i]);\r\n if (lines[i].length === 69 && ReferenceFrame.isTLECheckSumGood(lines[i])) {\r\n if (!line1.length && lines[i].substring(0, 1) === '1') {\r\n line1 = lines[i];\r\n }\r\n if (!line2.length && lines[i].substring(0, 1) === '2') {\r\n line2 = lines[i];\r\n }\r\n }\r\n }\r\n if (line1.length === 69 && line2.length === 69) {\r\n frame.fromTLE(line1, line2, 398600441800000);\r\n return true;\r\n }\r\n return false;\r\n };\r\n LayerManager._opacityMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._defaultImageset_Click = function(sender, e) {\r\n var isl = ss.safeCast(LayerManager._selectedLayer, ImageSetLayer);\r\n isl.set_overrideDefaultLayer(!isl.get_overrideDefaultLayer());\r\n };\r\n LayerManager._propertiesMenu_Click = function(sender, e) {\r\n if (ss.canCast(LayerManager._selectedLayer, SpreadSheetLayer)) {\r\n var target = LayerManager._selectedLayer;\r\n LayerManager.get_dataVizWizardDialog().show(target, e);\r\n }\r\n if (ss.canCast(LayerManager._selectedLayer, GreatCirlceRouteLayer)) {\r\n LayerManager.get_greatCircleDlg().show(LayerManager._selectedLayer, new ss.EventArgs());\r\n }\r\n };\r\n LayerManager._renameMenu_Click = function(sender, e) {\r\n var layer = LayerManager._selectedLayer;\r\n var input = new SimpleInput(Language.getLocalizedText(225, 'Rename'), Language.getLocalizedText(228, 'New Name'), layer.get_name(), 32);\r\n input.show(LayerManager._lastMenuClick, function() {\r\n if (!ss.emptyString(input.text)) {\r\n layer.set_name(input.text);\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n }\r\n });\r\n };\r\n LayerManager._colorMenu_Click = function(sender, e) {\r\n var layer = LayerManager._selectedLayer;\r\n var picker = new ColorPicker();\r\n if (layer.get_color() != null) {\r\n picker.color = layer.get_color();\r\n }\r\n picker.callBack = function() {\r\n layer.set_color(picker.color);\r\n };\r\n picker.show(e);\r\n };\r\n LayerManager._addMenu_Click = function(sender, e) {\r\n };\r\n LayerManager._deleteMenu_Click = function(sender, e) {\r\n LayerManager._deleteSelectedLayer();\r\n };\r\n LayerManager._deleteSelectedLayer = function() {\r\n if (LayerManager._selectedLayer != null && ss.canCast(LayerManager._selectedLayer, Layer)) {\r\n var node = LayerManager._selectedLayer;\r\n delete LayerManager.get_layerList()[node.id];\r\n ss.remove(LayerManager.get_allMaps()[LayerManager.get_currentMap()].layers, node);\r\n node.cleanUp();\r\n node.set_version(node.get_version() + 1) - 1;\r\n LayerManager.loadTree();\r\n LayerManager._version++;\r\n }\r\n };\r\n LayerManager.scaleMenu_click = function(sender, e) {\r\n var isl = ss.safeCast(LayerManager._selectedLayer, ImageSetLayer);\r\n if (isl != null) {\r\n var hist = new Histogram();\r\n hist.image = isl.getFitsImage();\r\n hist.layer = isl;\r\n hist.show(Vector2d.create(200, 200));\r\n }\r\n };\r\n LayerManager._showViewer_Click = function(sender, e) {\r\n if (ss.canCast(LayerManager._selectedLayer, VoTableLayer)) {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, VoTableLayer);\r\n WWTControl.scriptInterface.displayVoTableLayer(layer);\r\n }\r\n };\r\n LayerManager._bottom_Click = function(sender, e) {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, Layer);\r\n if (layer != null) {\r\n ss.remove(LayerManager.get_allMaps()[layer.get_referenceFrame()].layers, layer);\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.push(layer);\r\n }\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager._down_Click = function(sender, e) {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, Layer);\r\n if (layer != null) {\r\n var index = LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.lastIndexOf(layer);\r\n if (index < (LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.length - 1)) {\r\n ss.remove(LayerManager.get_allMaps()[layer.get_referenceFrame()].layers, layer);\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.splice(index + 1, 0, layer);\r\n }\r\n }\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager._up_Click = function(sender, e) {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, Layer);\r\n if (layer != null) {\r\n var index = LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.lastIndexOf(layer);\r\n if (index > 0) {\r\n ss.remove(LayerManager.get_allMaps()[layer.get_referenceFrame()].layers, layer);\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.splice(index - 1, 0, layer);\r\n }\r\n }\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager._top_Click = function(sender, e) {\r\n var layer = ss.safeCast(LayerManager._selectedLayer, Layer);\r\n if (layer != null) {\r\n ss.remove(LayerManager.get_allMaps()[layer.get_referenceFrame()].layers, layer);\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.splice(0, 0, layer);\r\n }\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n };\r\n LayerManager._pasteLayer_Click = function(sender, e) {\r\n LayerManager.get_dataVizWizardDialog().show(LayerManager.get_currentMap(), e);\r\n };\r\n LayerManager.createSpreadsheetLayer = function(frame, name, data) {\r\n var layer = new SpreadSheetLayer();\r\n layer.loadFromString(data, false, false, false, true);\r\n layer.set_name(name);\r\n LayerManager.addSpreadsheetLayer(layer, frame);\r\n return layer;\r\n };\r\n LayerManager.addSpreadsheetLayer = function(layer, frame) {\r\n layer.enabled = true;\r\n layer.set_referenceFrame(frame);\r\n LayerManager.add(layer, true);\r\n };\r\n LayerManager._showOrbitPlanet_Click = function(sender, e) {\r\n try {\r\n var bit = parseInt((sender).tag.toString());\r\n if (!(Settings.get_globalSettings().get_planetOrbitsFilter() & bit)) {\r\n Settings.get_globalSettings().set_planetOrbitsFilter(Settings.get_globalSettings().get_planetOrbitsFilter() | bit);\r\n }\r\n else {\r\n Settings.get_globalSettings().set_planetOrbitsFilter(Settings.get_globalSettings().get_planetOrbitsFilter() & ~bit);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n };\r\n LayerManager._showOrbit_Click = function(sender, e) {\r\n var map = ss.safeCast(LayerManager._selectedLayer, LayerMap);\r\n map.frame.showOrbitPath = !map.frame.showOrbitPath;\r\n };\r\n LayerManager._addGreatCircle_Click = function(sender, e) {\r\n LayerManager._addGreatCircleLayer();\r\n };\r\n LayerManager._addMpc_Click = function(sender, e) {\r\n var target = LayerManager._selectedLayer;\r\n var input = new SimpleInput(Language.getLocalizedText(1302, 'Minor planet name or designation'), Language.getLocalizedText(238, 'Name'), '', 32);\r\n var retry = false;\r\n do {\r\n if (input.showDialog() === 1) {\r\n if (ss.keyExists(target.childMaps, input.text)) {\r\n retry = true;\r\n }\r\n else {\r\n try {\r\n LayerManager._getMpc(input.text, target);\r\n retry = false;\r\n }\r\n catch ($e1) {\r\n retry = true;\r\n }\r\n }\r\n }\r\n else {\r\n retry = false;\r\n }\r\n } while (retry);\r\n return;\r\n };\r\n LayerManager._asOrbitalLines_Click = function(sender, e) {\r\n var target = LayerManager._selectedLayer;\r\n var input = new SimpleInput(Language.getLocalizedText(1302, 'Minor planet name or designation'), Language.getLocalizedText(238, 'Name'), '', 32);\r\n input.show(Cursor.get_position(), function() {\r\n if (ss.keyExists(target.childMaps, input.text)) {\r\n }\r\n else {\r\n LayerManager._getMpcAsTLE(input.text, target);\r\n }\r\n });\r\n };\r\n LayerManager._getMpcAsTLE = function(id, target) {\r\n var file = new WebFile('https://www.minorplanetcenter.net/db_search/show_object?object_id=' + id);\r\n file.onStateChange = function() {\r\n if (file.get_state() !== 1) {\r\n return;\r\n }\r\n var data = file.getText();\r\n var startform = data.indexOf('show-orbit-button');\r\n var lastForm = data.indexOf('/form', startform);\r\n var formpart = data.substring(startform, lastForm);\r\n var name = id;\r\n var frame = new ReferenceFrame();\r\n frame.oblateness = 0;\r\n frame.showOrbitPath = true;\r\n frame.showAsPoint = true;\r\n frame.epoch = SpaceTimeController.utcToJulian(ss.date(LayerManager._getValueByID(formpart, 'epoch').substring(0, 10)));\r\n frame.semiMajorAxis = parseFloat(LayerManager._getValueByID(formpart, 'a')) * 149598000 * 1000;\r\n frame.referenceFrameType = 1;\r\n frame.inclination = parseFloat(LayerManager._getValueByID(formpart, 'incl'));\r\n frame.longitudeOfAscendingNode = parseFloat(LayerManager._getValueByID(formpart, 'node'));\r\n frame.eccentricity = parseFloat(LayerManager._getValueByID(formpart, 'e'));\r\n frame.meanAnomolyAtEpoch = parseFloat(LayerManager._getValueByID(formpart, 'm'));\r\n frame.meanDailyMotion = ELL.meanMotionFromSemiMajorAxis(parseFloat(LayerManager._getValueByID(formpart, 'a')));\r\n frame.argumentOfPeriapsis = parseFloat(LayerManager._getValueByID(formpart, 'peri'));\r\n frame.scale = 1;\r\n frame.semiMajorAxisUnits = 1;\r\n frame.meanRadius = 10;\r\n frame.oblateness = 0;\r\n var TLE = name + '\\n' + frame.toTLE();\r\n LayerManager._loadOrbitsFile(id, TLE, target.get_name());\r\n LayerManager.loadTree();\r\n };\r\n file.send();\r\n };\r\n LayerManager._getMpc = function(id, target) {\r\n var file = new WebFile('https://www.minorplanetcenter.net/db_search/show_object?object_id=' + id);\r\n file.onStateChange = function() {\r\n var data = file.getText();\r\n var startform = data.indexOf('show-orbit-button');\r\n var lastForm = data.indexOf('/form', startform);\r\n var formpart = data.substring(startform, lastForm);\r\n var name = id;\r\n var orbit = new LayerMap(ss.trim(name), 18);\r\n orbit.frame.oblateness = 0;\r\n orbit.frame.showOrbitPath = true;\r\n orbit.frame.showAsPoint = true;\r\n orbit.frame.epoch = SpaceTimeController.utcToJulian(ss.date(LayerManager._getValueByID(formpart, 'epoch').substring(0, 10)));\r\n orbit.frame.semiMajorAxis = parseFloat(LayerManager._getValueByID(formpart, 'a')) * 149598000 * 1000;\r\n orbit.frame.referenceFrameType = 1;\r\n orbit.frame.inclination = parseFloat(LayerManager._getValueByID(formpart, 'incl'));\r\n orbit.frame.longitudeOfAscendingNode = parseFloat(LayerManager._getValueByID(formpart, 'node'));\r\n orbit.frame.eccentricity = parseFloat(LayerManager._getValueByID(formpart, 'e'));\r\n orbit.frame.meanAnomolyAtEpoch = parseFloat(LayerManager._getValueByID(formpart, 'm'));\r\n orbit.frame.meanDailyMotion = ELL.meanMotionFromSemiMajorAxis(parseFloat(LayerManager._getValueByID(formpart, 'a')));\r\n orbit.frame.argumentOfPeriapsis = parseFloat(LayerManager._getValueByID(formpart, 'peri'));\r\n orbit.frame.scale = 1;\r\n orbit.frame.semiMajorAxisUnits = 1;\r\n orbit.frame.meanRadius = 10;\r\n orbit.frame.oblateness = 0;\r\n if (!ss.keyExists(LayerManager.get_allMaps()[target.get_name()].childMaps, ss.trim(name))) {\r\n LayerManager.get_allMaps()[target.get_name()].addChild(orbit);\r\n }\r\n LayerManager.get_allMaps()[orbit.get_name()] = orbit;\r\n orbit.frame.parent = target.get_name();\r\n LayerManager._makeLayerGroup('Minor Planet', orbit);\r\n LayerManager.loadTree();\r\n };\r\n };\r\n LayerManager._getValueByID = function(data, id) {\r\n var valStart = data.indexOf('id=\"' + id + '\"');\r\n valStart = data.indexOf('value=', valStart) + 7;\r\n var valEnd = data.indexOf('\"', valStart);\r\n return data.substr(valStart, valEnd - valStart);\r\n };\r\n LayerManager._addGreatCircleLayer = function() {\r\n var layer = new GreatCirlceRouteLayer();\r\n var camera = WWTControl.singleton.renderContext.viewCamera;\r\n layer.set_latStart(camera.lat);\r\n layer.set_latEnd(camera.lat - 5);\r\n layer.set_lngStart(camera.lng);\r\n layer.set_lngEnd(camera.lng + 5);\r\n layer.set_width(4);\r\n layer.enabled = true;\r\n layer.set_name(Language.getLocalizedText(1144, 'Great Circle Route'));\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n layer.set_referenceFrame(LayerManager._currentMap);\r\n LayerManager.get_allMaps()[LayerManager._currentMap].layers.push(layer);\r\n LayerManager.get_allMaps()[LayerManager._currentMap].open = true;\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n LayerManager.get_greatCircleDlg().show(layer, new ss.EventArgs());\r\n };\r\n LayerManager._loadOrbitsFile = function(name, data, currentMap) {\r\n var layer = new OrbitLayer();\r\n layer.loadString(data);\r\n layer.enabled = true;\r\n layer.set_name(name);\r\n LayerManager.get_layerList()[layer.id] = layer;\r\n layer.set_referenceFrame(currentMap);\r\n LayerManager.get_allMaps()[currentMap].layers.push(layer);\r\n LayerManager.get_allMaps()[currentMap].open = true;\r\n LayerManager._version++;\r\n LayerManager.loadTree();\r\n return layer;\r\n };\r\n var LayerManager$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.LayerMap\r\n\r\n function LayerMap(name, reference) {\r\n this.childMaps = {};\r\n this.parent = null;\r\n this.layers = [];\r\n this.open = false;\r\n this.enabled = true;\r\n this.loadedFromTour = false;\r\n this.frame = new ReferenceFrame();\r\n this.set_name(name);\r\n this.frame.reference = reference;\r\n var radius = 6371000;\r\n switch (reference) {\r\n case 0:\r\n break;\r\n case 1:\r\n break;\r\n case 2:\r\n break;\r\n case 3:\r\n radius = 696000000;\r\n break;\r\n case 4:\r\n radius = 2439700;\r\n break;\r\n case 5:\r\n radius = 6051800;\r\n break;\r\n case 6:\r\n radius = 6371000;\r\n break;\r\n case 7:\r\n radius = 3390000;\r\n break;\r\n case 8:\r\n radius = 69911000;\r\n break;\r\n case 9:\r\n radius = 58232000;\r\n break;\r\n case 10:\r\n radius = 25362000;\r\n break;\r\n case 11:\r\n radius = 24622000;\r\n break;\r\n case 12:\r\n radius = 1161000;\r\n break;\r\n case 13:\r\n radius = 1737100;\r\n break;\r\n case 14:\r\n radius = 1821500;\r\n break;\r\n case 15:\r\n radius = 1561000;\r\n break;\r\n case 16:\r\n radius = 2631200;\r\n break;\r\n case 17:\r\n radius = 2410300;\r\n break;\r\n case 18:\r\n break;\r\n case 19:\r\n break;\r\n default:\r\n break;\r\n }\r\n this.frame.meanRadius = radius;\r\n }\r\n var LayerMap$ = {\r\n addChild: function(child) {\r\n child.parent = this;\r\n this.childMaps[child.get_name()] = child;\r\n },\r\n get_name: function() {\r\n return this.frame.name;\r\n },\r\n set_name: function(value) {\r\n this.frame.name = value;\r\n return value;\r\n },\r\n computeFrame: function(renderContext) {\r\n if (this.frame.reference === 18) {\r\n this.frame.computeFrame(renderContext);\r\n }\r\n },\r\n toString: function() {\r\n return this.get_name();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SkyOverlays\r\n\r\n function SkyOverlays() {\r\n }\r\n var SkyOverlays$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.GroundOverlayLayer\r\n\r\n function GroundOverlayLayer() {\r\n }\r\n var GroundOverlayLayer$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.FrameTarget\r\n\r\n function FrameTarget() {\r\n }\r\n var FrameTarget$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.LayerUI\r\n\r\n function LayerUI() {\r\n }\r\n var LayerUI$ = {\r\n get_hasTreeViewNodes: function() {\r\n return false;\r\n },\r\n getTreeNodes: function() {\r\n return null;\r\n },\r\n getNodeContextMenu: function(node) {\r\n return null;\r\n },\r\n setUICallbacks: function(callbacks) {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.LayerUIMenuItem\r\n\r\n function LayerUIMenuItem() {\r\n this._tag = null;\r\n this._isChecked = false;\r\n this._isEnabled = true;\r\n this._subMenus = null;\r\n }\r\n var LayerUIMenuItem$ = {\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n this._name = value;\r\n return value;\r\n },\r\n get_tag: function() {\r\n return this._tag;\r\n },\r\n set_tag: function(value) {\r\n this._tag = value;\r\n return value;\r\n },\r\n get_checked: function() {\r\n return this._isChecked;\r\n },\r\n set_checked: function(value) {\r\n this._isChecked = value;\r\n return value;\r\n },\r\n get_enabled: function() {\r\n return this._isEnabled;\r\n },\r\n set_enabled: function(value) {\r\n this._isEnabled = value;\r\n return value;\r\n },\r\n add_menuItemSelected: function(value) {\r\n this.__menuItemSelected = ss.bindAdd(this.__menuItemSelected, value);\r\n },\r\n remove_menuItemSelected: function(value) {\r\n this.__menuItemSelected = ss.bindSub(this.__menuItemSelected, value);\r\n },\r\n fireMenuItemSelected: function() {\r\n if (this.__menuItemSelected != null) {\r\n this.__menuItemSelected(this);\r\n }\r\n },\r\n get_subMenus: function() {\r\n if (this._subMenus == null) {\r\n this._subMenus = [];\r\n }\r\n return this._subMenus;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.LayerUITreeNode\r\n\r\n function LayerUITreeNode() {\r\n this._parent = null;\r\n this._level = 0;\r\n this._open = false;\r\n this._isChecked = false;\r\n this._bold = false;\r\n this._color = Colors.get_white();\r\n this._nodes = null;\r\n }\r\n var LayerUITreeNode$ = {\r\n add_nodeChecked: function(value) {\r\n this.__nodeChecked = ss.bindAdd(this.__nodeChecked, value);\r\n },\r\n remove_nodeChecked: function(value) {\r\n this.__nodeChecked = ss.bindSub(this.__nodeChecked, value);\r\n },\r\n fireNodeChecked: function(newState) {\r\n if (this.__nodeChecked != null) {\r\n this.__nodeChecked(this, newState);\r\n }\r\n },\r\n add_nodeUpdated: function(value) {\r\n this.__nodeUpdated = ss.bindAdd(this.__nodeUpdated, value);\r\n },\r\n remove_nodeUpdated: function(value) {\r\n this.__nodeUpdated = ss.bindSub(this.__nodeUpdated, value);\r\n },\r\n fireNodeUpdated: function() {\r\n if (this.__nodeUpdated != null) {\r\n this.__nodeUpdated(this);\r\n }\r\n },\r\n add_nodeSelected: function(value) {\r\n this.__nodeSelected = ss.bindAdd(this.__nodeSelected, value);\r\n },\r\n remove_nodeSelected: function(value) {\r\n this.__nodeSelected = ss.bindSub(this.__nodeSelected, value);\r\n },\r\n fireNodeSelected: function() {\r\n if (this.__nodeSelected != null) {\r\n this.__nodeSelected(this);\r\n }\r\n },\r\n add_nodeActivated: function(value) {\r\n this.__nodeActivated = ss.bindAdd(this.__nodeActivated, value);\r\n },\r\n remove_nodeActivated: function(value) {\r\n this.__nodeActivated = ss.bindSub(this.__nodeActivated, value);\r\n },\r\n fireNodeActivated: function() {\r\n if (this.__nodeActivated != null) {\r\n this.__nodeActivated(this);\r\n }\r\n },\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n if (this._name !== value) {\r\n this._name = value;\r\n this.fireNodeUpdated();\r\n }\r\n return value;\r\n },\r\n get_parent: function() {\r\n return this._parent;\r\n },\r\n set_parent: function(value) {\r\n this._parent = value;\r\n return value;\r\n },\r\n get_level: function() {\r\n return this._level;\r\n },\r\n set_level: function(value) {\r\n this._level = value;\r\n return value;\r\n },\r\n get_tag: function() {\r\n return this._tag;\r\n },\r\n set_tag: function(value) {\r\n this._tag = value;\r\n return value;\r\n },\r\n get_referenceTag: function() {\r\n return this._referenceTag;\r\n },\r\n set_referenceTag: function(value) {\r\n this._referenceTag = value;\r\n return value;\r\n },\r\n get_opened: function() {\r\n return this._open;\r\n },\r\n set_opened: function(value) {\r\n if (this._open !== value) {\r\n this._open = value;\r\n this.fireNodeUpdated();\r\n }\r\n return value;\r\n },\r\n get_checked: function() {\r\n return this._isChecked;\r\n },\r\n set_checked: function(value) {\r\n if (this._isChecked !== value) {\r\n this._isChecked = value;\r\n this.fireNodeUpdated();\r\n }\r\n return value;\r\n },\r\n get_bold: function() {\r\n return this._bold;\r\n },\r\n set_bold: function(value) {\r\n if (this._bold !== value) {\r\n this._bold = value;\r\n this.fireNodeUpdated();\r\n }\r\n return value;\r\n },\r\n get_color: function() {\r\n return this._color;\r\n },\r\n set_color: function(value) {\r\n if (this._color !== value) {\r\n this._color = value;\r\n this.fireNodeUpdated();\r\n }\r\n return value;\r\n },\r\n add: function(name) {\r\n var node = new LayerUITreeNode();\r\n node.set_name(name);\r\n node.set_parent(this);\r\n node.set_level(this.get_level() + 1);\r\n this.get_nodes().push(node);\r\n return node;\r\n },\r\n get_nodes: function() {\r\n if (this._nodes == null) {\r\n this._nodes = [];\r\n }\r\n return this._nodes;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Group\r\n\r\n function Group() {\r\n this.startIndex = 0;\r\n this.indexCount = 0;\r\n this.materialIndex = 0;\r\n }\r\n var Group$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Mesh\r\n\r\n function Mesh() {\r\n this.boundingSphere = new SphereHull();\r\n }\r\n Mesh.create = function(vertices, indices) {\r\n var mesh = new Mesh();\r\n mesh.vertices = vertices;\r\n mesh.indices = indices;\r\n var points = new Array(vertices.length);\r\n for (var i = 0; i < vertices.length; ++i) {\r\n points[i] = vertices[i].get_position();\r\n }\r\n mesh.boundingSphere = ConvexHull.findEnclosingSphereFast(points);\r\n return mesh;\r\n };\r\n Mesh.createTangent = function(vertices, indices) {\r\n var mesh = new Mesh();\r\n mesh.tangentVertices = vertices;\r\n mesh.indices = indices;\r\n var points = new Array(mesh.tangentVertices.length);\r\n for (var i = 0; i < mesh.tangentVertices.length; ++i) {\r\n points[i] = mesh.tangentVertices[i].get_position();\r\n }\r\n mesh.boundingSphere = ConvexHull.findEnclosingSphereFast(points);\r\n return mesh;\r\n };\r\n var Mesh$ = {\r\n dispose: function() {\r\n if (this.vertexBuffer != null) {\r\n this.vertexBuffer.dispose();\r\n this.vertexBuffer = null;\r\n }\r\n if (this.tangentVertexBuffer != null) {\r\n this.tangentVertexBuffer.dispose();\r\n this.tangentVertexBuffer = null;\r\n }\r\n if (this.indexBuffer != null) {\r\n this.indexBuffer.dispose();\r\n this.indexBuffer = null;\r\n }\r\n },\r\n setObjects: function(objects) {\r\n this._objects = objects;\r\n },\r\n commitToDevice: function() {\r\n if (this.vertices != null) {\r\n this.vertexBuffer = PositionNormalTexturedVertexBuffer.create(this.vertices);\r\n }\r\n else if (this.tangentVertices != null) {\r\n this.tangentVertexBuffer = PositionNormalTexturedTangentVertexBuffer.create(this.tangentVertices);\r\n }\r\n this.indexBuffer = new IndexBuffer(new Uint32Array(this.indices));\r\n },\r\n beginDrawing: function(renderContext) {\r\n if (this.vertexBuffer != null) {\r\n renderContext._setVertexBuffer(this.vertexBuffer);\r\n }\r\n else if (this.tangentVertexBuffer != null) {\r\n renderContext._setVertexBuffer(this.tangentVertexBuffer);\r\n }\r\n if (this.indexBuffer != null) {\r\n renderContext._setIndexBuffer(this.indexBuffer);\r\n }\r\n },\r\n drawSubset: function(renderContext, materialIndex) {\r\n if (this.indexBuffer == null || this._objects == null) {\r\n return;\r\n }\r\n this.drawHierarchy(this._objects, materialIndex, renderContext, 0);\r\n },\r\n drawHierarchy: function(nodes, materialIndex, renderContext, depth) {\r\n if (depth > 1212) {\r\n return;\r\n }\r\n var $enum1 = ss.enumerate(nodes);\r\n while ($enum1.moveNext()) {\r\n var node = $enum1.current;\r\n if (node.drawGroup != null && node.enabled) {\r\n var $enum2 = ss.enumerate(node.drawGroup);\r\n while ($enum2.moveNext()) {\r\n var group = $enum2.current;\r\n if (group.materialIndex === materialIndex) {\r\n renderContext.gl.drawElements(4, group.indexCount, 5125, group.startIndex * 4);\r\n }\r\n }\r\n }\r\n this.drawHierarchy(node.children, materialIndex, renderContext, depth + 1);\r\n }\r\n },\r\n get_objects: function() {\r\n return this._objects;\r\n },\r\n set_objects: function(value) {\r\n this._objects = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VertexPosition\r\n\r\n function VertexPosition() {\r\n this.index = 0;\r\n }\r\n var VertexPosition$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Object3d\r\n\r\n function Object3d(tourDoc, filename, flipV, flipHandedness, smooth, color) {\r\n this.flipHandedness = false;\r\n this.flipV = true;\r\n this.smooth = true;\r\n this._mesh = null;\r\n this._meshMaterials = [];\r\n this._meshTextures = [];\r\n this._meshSpecularTextures = [];\r\n this._meshNormalMaps = [];\r\n this.meshFilenames = [];\r\n this.color = Colors.get_white();\r\n this._textureCache = {};\r\n this._matFiles = new Array(0);\r\n this._matFileIndex = 0;\r\n this.objects = [];\r\n this._matLib = {};\r\n this._textureLib = {};\r\n this._tourDocument = null;\r\n this.issLayer = false;\r\n this._readyToRender = false;\r\n this.useCurrentAmbient = false;\r\n this._dirty = true;\r\n this.color = color;\r\n this.smooth = smooth;\r\n this.flipV = flipV;\r\n this.flipHandedness = flipHandedness;\r\n this.filename = filename;\r\n if (ss.endsWith(this.filename.toLowerCase(), '.obj')) {\r\n this._loadMeshFromObj(tourDoc, this.filename);\r\n }\r\n else {\r\n this._loadMeshFrom3ds(tourDoc, this.filename, 1);\r\n }\r\n }\r\n Object3d._compareVector3 = function(v0, v1) {\r\n if (v0.x < v1.x) {\r\n return -1;\r\n }\r\n else if (v0.x > v1.x) {\r\n return 1;\r\n }\r\n else if (v0.y < v1.y) {\r\n return -1;\r\n }\r\n else if (v0.y > v1.y) {\r\n return 1;\r\n }\r\n else if (v0.z < v1.z) {\r\n return -1;\r\n }\r\n else if (v0.z > v1.z) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n Object3d._compareVector = function(v0, v1) {\r\n if (v0.x < v1.x) {\r\n return -1;\r\n }\r\n else if (v0.x > v1.x) {\r\n return 1;\r\n }\r\n else if (v0.y < v1.y) {\r\n return -1;\r\n }\r\n else if (v0.y > v1.y) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n Object3d._getMaterialID = function(material, materialNames) {\r\n var index = 0;\r\n var $enum1 = ss.enumerate(materialNames);\r\n while ($enum1.moveNext()) {\r\n var mat = $enum1.current;\r\n if (mat === material) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n return -1;\r\n };\r\n Object3d._disposeTextureList = function(textures) {\r\n if (textures != null) {\r\n for (var i = 0; i < textures.length; ++i) {\r\n if (textures[i] != null) {\r\n textures[i].dispose();\r\n textures[i] = null;\r\n }\r\n }\r\n textures.length = 0;\r\n }\r\n };\r\n var Object3d$ = {\r\n _reload: function() {\r\n if (!this.issLayer) {\r\n this.dispose();\r\n if (ss.endsWith(this.filename.toLowerCase(), '.obj')) {\r\n this._loadMeshFromObj(this._tourDocument, this.filename);\r\n }\r\n else {\r\n this._loadMeshFrom3ds(this._tourDocument, this.filename, 1);\r\n }\r\n }\r\n },\r\n _calculateVertexNormalsMerged: function(vertexList, indexList, creaseAngleRad) {\r\n if (!vertexList.length) {\r\n return null;\r\n }\r\n var vertexCount = vertexList.length;\r\n var triangleCount = Math.floor(indexList.length / 3);\r\n var vertexPositions = [];\r\n for (var vertexIndex = 0; vertexIndex < vertexList.length; ++vertexIndex) {\r\n var vp = new VertexPosition();\r\n vp.position = vertexList[vertexIndex].get_position();\r\n vp.index = vertexIndex;\r\n vertexPositions.push(vp);\r\n }\r\n vertexPositions.sort(function(v0, v1) {\r\n return Object3d._compareVector3(v0.position, v1.position);\r\n });\r\n var vertexMap = new Array(vertexPositions.length);\r\n var uniqueVertexCount = 0;\r\n for (var vertexIndex = 0; vertexIndex < vertexPositions.length; vertexIndex++) {\r\n if (!vertexIndex || !!Object3d._compareVector3(vertexPositions[vertexIndex].position, vertexPositions[vertexIndex - 1].position)) {\r\n ++uniqueVertexCount;\r\n }\r\n vertexMap[vertexPositions[vertexIndex].index] = uniqueVertexCount - 1;\r\n }\r\n var vertexInstanceCounts = new Array(uniqueVertexCount);\r\n for (var i = 0; i < uniqueVertexCount; i++) {\r\n vertexInstanceCounts[i] = 0;\r\n }\r\n var $enum1 = ss.enumerate(indexList);\r\n while ($enum1.moveNext()) {\r\n var vertexIndex = $enum1.current;\r\n var uniqueIndex = vertexMap[vertexIndex];\r\n vertexInstanceCounts[uniqueIndex]++;\r\n }\r\n var vertexInstances = new Array(uniqueVertexCount);\r\n for (var i = 0; i < uniqueVertexCount; ++i) {\r\n var count = vertexInstanceCounts[i];\r\n if (count > 0) {\r\n vertexInstances[i] = new Array(count);\r\n for (var j = 0; j < count; j++) {\r\n vertexInstances[i][j] = 0;\r\n }\r\n }\r\n }\r\n for (var i = 0; i < indexList.length; ++i) {\r\n var faceIndex = Math.floor(i / 3);\r\n var uniqueIndex = vertexMap[indexList[i]];\r\n vertexInstances[uniqueIndex][--vertexInstanceCounts[uniqueIndex]] = faceIndex;\r\n }\r\n var faceNormals = new Array(triangleCount);\r\n for (var i = 0; i < triangleCount; ++i) {\r\n var i0 = indexList[i * 3 + 0];\r\n var i1 = indexList[i * 3 + 1];\r\n var i2 = indexList[i * 3 + 2];\r\n var edge0 = Vector3d.subtractVectors(vertexList[i1].get_position(), vertexList[i0].get_position());\r\n var edge1 = Vector3d.subtractVectors(vertexList[i2].get_position(), vertexList[i1].get_position());\r\n faceNormals[i] = Vector3d.cross(edge0, edge1);\r\n faceNormals[i].normalize();\r\n }\r\n var newVertexCount = triangleCount * 3;\r\n var vertexNormals = new Array(newVertexCount);\r\n var cosCreaseAngle = Math.min(0.9999, Math.cos(creaseAngleRad));\r\n for (var i = 0; i < newVertexCount; ++i) {\r\n var vertexIndex = indexList[i];\r\n var uniqueIndex = vertexMap[vertexIndex];\r\n var faceNormal = faceNormals[Math.floor(i / 3)];\r\n var sum = new Vector3d();\r\n var $enum2 = ss.enumerate(vertexInstances[uniqueIndex]);\r\n while ($enum2.moveNext()) {\r\n var faceIndex = $enum2.current;\r\n var n = faceNormals[faceIndex];\r\n if (Vector3d.dot(faceNormal, n) > cosCreaseAngle) {\r\n sum.add(n);\r\n }\r\n }\r\n vertexNormals[i] = sum;\r\n vertexNormals[i].normalize();\r\n }\r\n return vertexNormals;\r\n },\r\n _calculateVertexTangents: function(vertexList, indexList, creaseAngleRad) {\r\n if (!vertexList.length) {\r\n return null;\r\n }\r\n var vertexCount = vertexList.length;\r\n var triangleCount = Math.floor(indexList.length / 3);\r\n var vertexPositions = [];\r\n for (var vertexIndex = 0; vertexIndex < vertexList.length; ++vertexIndex) {\r\n var vp = new VertexPosition();\r\n vp.position = vertexList[vertexIndex].get_position();\r\n vp.index = vertexIndex;\r\n vertexPositions.push(vp);\r\n }\r\n vertexPositions.sort(function(v0, v1) {\r\n return Object3d._compareVector3(v0.position, v1.position);\r\n });\r\n var vertexMap = new Array(vertexPositions.length);\r\n var uniqueVertexCount = 0;\r\n for (var vertexIndex = 0; vertexIndex < vertexPositions.length; vertexIndex++) {\r\n if (!vertexIndex || !!Object3d._compareVector3(vertexPositions[vertexIndex].position, vertexPositions[vertexIndex - 1].position)) {\r\n ++uniqueVertexCount;\r\n }\r\n vertexMap[vertexPositions[vertexIndex].index] = (uniqueVertexCount - 1);\r\n }\r\n var vertexInstanceCounts = new Array(uniqueVertexCount);\r\n for (var i = 0; i < uniqueVertexCount; i++) {\r\n vertexInstanceCounts[i] = 0;\r\n }\r\n var $enum1 = ss.enumerate(indexList);\r\n while ($enum1.moveNext()) {\r\n var vertexIndex = $enum1.current;\r\n var uniqueIndex = vertexMap[vertexIndex];\r\n vertexInstanceCounts[uniqueIndex]++;\r\n }\r\n var vertexInstances = new Array(uniqueVertexCount);\r\n for (var i = 0; i < uniqueVertexCount; ++i) {\r\n var count = vertexInstanceCounts[i];\r\n if (count > 0) {\r\n vertexInstances[i] = new Array(count);\r\n for (var j = 0; j < count; j++) {\r\n vertexInstances[i][j] = 0;\r\n }\r\n }\r\n }\r\n for (var i = 0; i < indexList.length; ++i) {\r\n var faceIndex = Math.floor(i / 3);\r\n var uniqueIndex = vertexMap[indexList[i]];\r\n vertexInstances[uniqueIndex][--vertexInstanceCounts[uniqueIndex]] = faceIndex;\r\n }\r\n var partials = new Array(triangleCount);\r\n for (var i = 0; i < triangleCount; ++i) {\r\n var v0 = vertexList[indexList[i * 3 + 0]];\r\n var v1 = vertexList[indexList[i * 3 + 1]];\r\n var v2 = vertexList[indexList[i * 3 + 2]];\r\n var edge0 = Vector3d.subtractVectors(v1.get_position(), v0.get_position());\r\n var edge1 = Vector3d.subtractVectors(v2.get_position(), v0.get_position());\r\n var m00 = v1.tu - v0.tu;\r\n var m01 = v1.tv - v0.tv;\r\n var m10 = v2.tu - v0.tu;\r\n var m11 = v2.tv - v0.tv;\r\n var determinant = m00 * m11 - m01 * m10;\r\n if (Math.abs(determinant) < 1E-06) {\r\n if (edge0.lengthSq() > 0) {\r\n partials[i] = edge0;\r\n partials[i].normalize();\r\n }\r\n else {\r\n partials[i] = Vector3d.create(1, 0, 0);\r\n }\r\n }\r\n else {\r\n var invDeterminant = 1 / determinant;\r\n var n00 = m11 * invDeterminant;\r\n var n01 = -m01 * invDeterminant;\r\n var n10 = -m10 * invDeterminant;\r\n var n11 = m00 * invDeterminant;\r\n partials[i] = Vector3d.addVectors(Vector3d.multiplyScalar(edge0, n00), Vector3d.multiplyScalar(edge1, n01));\r\n partials[i].normalize();\r\n }\r\n }\r\n var newVertexCount = triangleCount * 3;\r\n var tangents = new Array(newVertexCount);\r\n var cosCreaseAngle = Math.min(0.9999, Math.cos(creaseAngleRad));\r\n for (var i = 0; i < newVertexCount; ++i) {\r\n var vertexIndex = indexList[i];\r\n var uniqueIndex = vertexMap[vertexIndex];\r\n var du = partials[Math.floor(i / 3)];\r\n var sum = new Vector3d();\r\n var $enum2 = ss.enumerate(vertexInstances[uniqueIndex]);\r\n while ($enum2.moveNext()) {\r\n var faceIndex = $enum2.current;\r\n var T = partials[faceIndex];\r\n if (Vector3d.dot(du, T) > cosCreaseAngle) {\r\n sum.add(T);\r\n }\r\n }\r\n var N = vertexList[vertexIndex].get_normal();\r\n tangents[i] = Vector3d.subtractVectors(sum, Vector3d.multiplyScalar(N, Vector3d.dot(N, sum)));\r\n tangents[i].normalize();\r\n }\r\n return tangents;\r\n },\r\n _calculateVertexNormals: function(vertexList, indexList, creaseAngleRad) {\r\n var vertexCount = vertexList.length;\r\n var triangleCount = Math.floor(indexList.length / 3);\r\n var vertexInstanceCounts = new Array(vertexCount);\r\n var $enum1 = ss.enumerate(indexList);\r\n while ($enum1.moveNext()) {\r\n var vertexIndex = $enum1.current;\r\n vertexInstanceCounts[vertexIndex]++;\r\n }\r\n var vertexInstances = new Array(vertexCount);\r\n for (var i = 0; i < vertexCount; ++i) {\r\n var count = vertexInstanceCounts[i];\r\n if (count > 0) {\r\n vertexInstances[i] = new Array(count);\r\n }\r\n }\r\n for (var i = 0; i < indexList.length; ++i) {\r\n var faceIndex = Math.floor(i / 3);\r\n var vertexIndex = indexList[i];\r\n vertexInstances[vertexIndex][--vertexInstanceCounts[vertexIndex]] = faceIndex;\r\n }\r\n var faceNormals = new Array(triangleCount);\r\n for (var i = 0; i < triangleCount; ++i) {\r\n var i0 = indexList[i * 3 + 0];\r\n var i1 = indexList[i * 3 + 1];\r\n var i2 = indexList[i * 3 + 2];\r\n var edge0 = Vector3d.subtractVectors(vertexList[i1].get_position(), vertexList[i0].get_position());\r\n var edge1 = Vector3d.subtractVectors(vertexList[i2].get_position(), vertexList[i1].get_position());\r\n faceNormals[i] = Vector3d.cross(edge0, edge1);\r\n faceNormals[i].normalize();\r\n }\r\n var newVertexCount = triangleCount * 3;\r\n var vertexNormals = new Array(newVertexCount);\r\n var cosCreaseAngle = Math.min(0.9999, Math.cos(creaseAngleRad));\r\n for (var i = 0; i < newVertexCount; ++i) {\r\n var vertexIndex = indexList[i];\r\n var faceNormal = faceNormals[Math.floor(i / 3)];\r\n var sum = new Vector3d();\r\n var $enum2 = ss.enumerate(vertexInstances[vertexIndex]);\r\n while ($enum2.moveNext()) {\r\n var faceIndex = $enum2.current;\r\n var n = faceNormals[faceIndex];\r\n if (Vector3d.dot(faceNormal, n) > cosCreaseAngle) {\r\n sum.add(n);\r\n }\r\n }\r\n vertexNormals[i] = sum;\r\n vertexNormals[i].normalize();\r\n }\r\n return vertexNormals;\r\n },\r\n _addMaterial: function(material) {\r\n this._meshMaterials.push(material);\r\n while (this._meshTextures.length < this._meshMaterials.length) {\r\n this._meshTextures.push(null);\r\n }\r\n while (this._meshSpecularTextures.length < this._meshMaterials.length) {\r\n this._meshSpecularTextures.push(null);\r\n }\r\n while (this._meshNormalMaps.length < this._meshMaterials.length) {\r\n this._meshNormalMaps.push(null);\r\n }\r\n },\r\n _loadColorChunk: function(br) {\r\n var chunkID = br.readUInt16();\r\n var chunkLength = br.readUInt32();\r\n var color = Colors.get_black();\r\n if ((chunkID === 16 || chunkID === 19) && chunkLength === 18) {\r\n var r = Math.max(0, Math.min(1, br.readSingle()));\r\n var g = Math.max(0, Math.min(1, br.readSingle()));\r\n var b = Math.max(0, Math.min(1, br.readSingle()));\r\n color = Color.fromArgb(255, ss.truncate((255 * r)), ss.truncate((255 * g)), ss.truncate((255 * b)));\r\n }\r\n else if ((chunkID === 17 || chunkID === 18) && chunkLength === 9) {\r\n color = Color.fromArgb(255, br.readByte(), br.readByte(), br.readByte());\r\n }\r\n else {\r\n br.readBytes(chunkLength - 6);\r\n }\r\n return color;\r\n },\r\n _loadPercentageChunk: function(br) {\r\n var chunkID = br.readUInt16();\r\n var chunkLength = br.readUInt32();\r\n var percentage = 0;\r\n if (chunkID === 48 && chunkLength === 8) {\r\n percentage = br.readUInt16();\r\n }\r\n else if (chunkID === 49 && chunkLength === 10) {\r\n percentage = br.readSingle();\r\n }\r\n else {\r\n br.readBytes(chunkLength - 6);\r\n }\r\n return percentage;\r\n },\r\n _loadMeshFromObj: function(doc, filename) {\r\n var $this = this;\r\n\r\n this.filename = filename;\r\n this._tourDocument = doc;\r\n var blob = doc.getFileBlob(filename);\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n $this._matFiles = $this._readObjMaterialsFromBin(ss.safeCast(chunck.result, String));\r\n $this._matFileIndex = 0;\r\n $this._loadMatLib(ss.safeCast(chunck.result, String));\r\n };\r\n chunck.readAsText(blob);\r\n },\r\n _readObjMaterialsFromBin: function(data) {\r\n var matFiles = [];\r\n var lines = data.split('\\n');\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var lineraw = $enum1.current;\r\n var line = ss.replaceString(lineraw, ' ', ' ');\r\n var parts = ss.trim(line).split(' ');\r\n if (parts.length > 0) {\r\n switch (parts[0]) {\r\n case 'mtllib':\r\n var path = this.filename.substring(0, this.filename.lastIndexOf('\\\\') + 1);\r\n var matFile = path + parts[1];\r\n matFiles.push(matFile);\r\n break;\r\n }\r\n }\r\n }\r\n return matFiles;\r\n },\r\n _readObjFromBin: function(data) {\r\n var objectFound = false;\r\n var objects = [];\r\n var currentObject = new ObjectNode();\r\n currentObject.name = 'Default';\r\n var triangleCount = 0;\r\n var vertexCount = 0;\r\n var vertexList = [];\r\n var vertList = [];\r\n var normList = [];\r\n var uvList = [];\r\n vertList.push(new Vector3d());\r\n normList.push(new Vector3d());\r\n uvList.push(new Vector2d());\r\n var indexList = [];\r\n var attribList = [];\r\n var applyLists = [];\r\n var applyListsIndex = [];\r\n var materialNames = [];\r\n var currentMaterialIndex = -1;\r\n var currentMaterial = new Material();\r\n var currentGroup = new Group();\r\n var currentIndex = 0;\r\n currentMaterial = new Material();\r\n currentMaterial.diffuse = this.color;\r\n currentMaterial.ambient = this.color;\r\n currentMaterial.specular = Colors.get_white();\r\n currentMaterial.specularSharpness = 30;\r\n currentMaterial.opacity = 1;\r\n currentMaterial.isDefault = true;\r\n currentGroup.startIndex = 0;\r\n currentGroup.indexCount = 0;\r\n currentGroup.materialIndex = 0;\r\n var lines = data.split('\\n');\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var lineraw = $enum1.current;\r\n var line = ss.replaceString(lineraw, ' ', ' ');\r\n var parts = ss.trim(line).split(' ');\r\n if (parts.length > 0) {\r\n switch (parts[0]) {\r\n case 'mtllib':\r\n break;\r\n case 'usemtl':\r\n var materialName = parts[1];\r\n if (ss.keyExists(this._matLib, materialName)) {\r\n if (currentMaterialIndex === -1 && currentIndex > 0) {\r\n this._addMaterial(currentMaterial);\r\n currentMaterialIndex++;\r\n }\r\n if (currentMaterialIndex > -1) {\r\n currentGroup.indexCount = currentIndex - currentGroup.startIndex;\r\n currentObject.drawGroup.push(currentGroup);\r\n }\r\n currentMaterialIndex++;\r\n if (ss.keyExists(this._matLib, materialName)) {\r\n currentMaterial = this._matLib[materialName];\r\n if (ss.keyExists(this._textureLib, materialName)) {\r\n try {\r\n if (!ss.keyExists(this._textureCache, this._textureLib[materialName])) {\r\n var path = this.filename.substring(0, this.filename.lastIndexOf('\\\\') + 1);\r\n var tex = this._tourDocument.getCachedTexture2d(path + this._textureLib[materialName]);\r\n if (tex != null) {\r\n this.meshFilenames.push(this._textureLib[materialName]);\r\n this._textureCache[this._textureLib[materialName]] = tex;\r\n }\r\n }\r\n this._meshTextures.push(this._textureCache[this._textureLib[materialName]]);\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n this._addMaterial(currentMaterial);\r\n currentGroup = new Group();\r\n currentGroup.startIndex = currentIndex;\r\n currentGroup.indexCount = 0;\r\n currentGroup.materialIndex = currentMaterialIndex;\r\n }\r\n }\r\n break;\r\n case 'v':\r\n vertexCount++;\r\n if (this.flipHandedness) {\r\n vertList.push(Vector3d.create(-parseFloat(parts[1]), parseFloat(parts[2]), parseFloat(parts[3])));\r\n }\r\n else {\r\n vertList.push(Vector3d.create(parseFloat(parts[1]), parseFloat(parts[2]), parseFloat(parts[3])));\r\n }\r\n break;\r\n case 'vn':\r\n if (this.flipHandedness) {\r\n normList.push(Vector3d.create(-parseFloat(parts[1]), parseFloat(parts[2]), parseFloat(parts[3])));\r\n }\r\n else {\r\n normList.push(Vector3d.create(parseFloat(parts[1]), parseFloat(parts[2]), parseFloat(parts[3])));\r\n }\r\n break;\r\n case 'vt':\r\n uvList.push(Vector2d.create(parseFloat(parts[1]), (this.flipV) ? (1 - parseFloat(parts[2])) : parseFloat(parts[2])));\r\n break;\r\n case 'g':\r\n case 'o':\r\n if (objectFound) {\r\n if (currentMaterialIndex > -1) {\r\n currentGroup.indexCount = currentIndex - currentGroup.startIndex;\r\n currentObject.drawGroup.push(currentGroup);\r\n currentGroup = new Group();\r\n currentGroup.startIndex = currentIndex;\r\n currentGroup.indexCount = 0;\r\n currentGroup.materialIndex = currentMaterialIndex;\r\n }\r\n currentObject = new ObjectNode();\r\n }\r\n objectFound = true;\r\n if (parts.length > 1) {\r\n currentObject.name = parts[1];\r\n }\r\n else {\r\n currentObject.name = 'Unnamed';\r\n }\r\n objects.push(currentObject);\r\n break;\r\n case 'f':\r\n var indexiesA = this._getIndexies(parts[1]);\r\n var indexiesB = this._getIndexies(parts[2]);\r\n var indexiesC = this._getIndexies(parts[3]);\r\n vertexList.push(PositionNormalTextured.createUV(vertList[indexiesA[0]], normList[indexiesA[2]], uvList[indexiesA[1]]));\r\n vertexList.push(PositionNormalTextured.createUV(vertList[indexiesB[0]], normList[indexiesB[2]], uvList[indexiesB[1]]));\r\n vertexList.push(PositionNormalTextured.createUV(vertList[indexiesC[0]], normList[indexiesC[2]], uvList[indexiesC[1]]));\r\n if (this.flipHandedness) {\r\n indexList.push(currentIndex);\r\n indexList.push(currentIndex + 2);\r\n indexList.push(currentIndex + 1);\r\n }\r\n else {\r\n indexList.push(currentIndex);\r\n indexList.push(currentIndex + 1);\r\n indexList.push(currentIndex + 2);\r\n }\r\n triangleCount++;\r\n currentIndex += 3;\r\n if (parts.length > 4) {\r\n var partIndex = 4;\r\n while (partIndex < parts.length) {\r\n if (this.flipHandedness) {\r\n indexiesA = this._getIndexies(parts[1]);\r\n indexiesC = this._getIndexies(parts[partIndex]);\r\n indexiesB = this._getIndexies(parts[partIndex - 1]);\r\n }\r\n else {\r\n indexiesA = this._getIndexies(parts[1]);\r\n indexiesB = this._getIndexies(parts[partIndex - 1]);\r\n indexiesC = this._getIndexies(parts[partIndex]);\r\n }\r\n vertexList.push(PositionNormalTextured.createUV(vertList[indexiesA[0]], normList[indexiesA[2]], uvList[indexiesA[1]]));\r\n vertexList.push(PositionNormalTextured.createUV(vertList[indexiesB[0]], normList[indexiesB[2]], uvList[indexiesB[1]]));\r\n vertexList.push(PositionNormalTextured.createUV(vertList[indexiesC[0]], normList[indexiesC[2]], uvList[indexiesC[1]]));\r\n indexList.push(currentIndex);\r\n indexList.push(currentIndex + 1);\r\n indexList.push(currentIndex + 2);\r\n triangleCount++;\r\n currentIndex += 3;\r\n partIndex++;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (!objectFound) {\r\n objects.push(currentObject);\r\n }\r\n if (currentMaterialIndex === -1 && currentIndex > 0) {\r\n this._addMaterial(currentMaterial);\r\n currentMaterialIndex++;\r\n }\r\n if (currentMaterialIndex > -1) {\r\n currentGroup.indexCount = (currentIndex - currentGroup.startIndex);\r\n currentObject.drawGroup.push(currentGroup);\r\n }\r\n if (normList.length < 2) {\r\n var degtorag = Math.PI / 180;\r\n var creaseAngleRad = ((this.smooth) ? 170 * degtorag : 45 * degtorag);\r\n var vertexNormals = this._calculateVertexNormalsMerged(vertexList, indexList, creaseAngleRad);\r\n var newVertexList = [];\r\n var newVertexCount = indexList.length;\r\n for (var vertexIndex = 0; vertexIndex < newVertexCount; ++vertexIndex) {\r\n var v = vertexList[indexList[vertexIndex]];\r\n v.set_normal(vertexNormals[vertexIndex]);\r\n newVertexList.push(v);\r\n }\r\n vertexList = newVertexList;\r\n }\r\n this._mesh = Mesh.create(vertexList, indexList);\r\n var rootDummy = new ObjectNode();\r\n rootDummy.name = 'Root';\r\n rootDummy.parent = null;\r\n rootDummy.level = -1;\r\n rootDummy.drawGroup = null;\r\n rootDummy.children = objects;\r\n this.objects = [];\r\n this.objects.push(rootDummy);\r\n this._mesh.setObjects(this.objects);\r\n this._mesh.commitToDevice();\r\n this._dirty = false;\r\n this._readyToRender = true;\r\n },\r\n _loadMatLib: function(data) {\r\n var $this = this;\r\n\r\n if (this._matFileIndex < this._matFiles.length) {\r\n var filename = this._matFiles[this._matFileIndex++];\r\n var blob = this._tourDocument.getFileBlob(filename);\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n $this._readMatLibFromBin(ss.safeCast(chunck.result, String));\r\n $this._loadMatLib(data);\r\n };\r\n chunck.readAsText(blob);\r\n }\r\n else {\r\n this._readObjFromBin(data);\r\n }\r\n },\r\n _readMatLibFromBin: function(data) {\r\n try {\r\n var currentMaterial = new Material();\r\n var materialName = '';\r\n this._matLib = {};\r\n this._textureLib = {};\r\n var lines = data.split('\\n');\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var lineraw = $enum1.current;\r\n var line = lineraw;\r\n var parts = ss.trim(line).split(' ');\r\n if (parts.length > 0) {\r\n switch (parts[0]) {\r\n case 'newmtl':\r\n if (!ss.emptyString(materialName)) {\r\n this._matLib[materialName] = currentMaterial;\r\n }\r\n currentMaterial = new Material();\r\n currentMaterial.diffuse = Colors.get_white();\r\n currentMaterial.ambient = Colors.get_white();\r\n currentMaterial.specular = Colors.get_black();\r\n currentMaterial.specularSharpness = 30;\r\n currentMaterial.opacity = 1;\r\n materialName = parts[1];\r\n break;\r\n case 'Ka':\r\n currentMaterial.ambient = Color.fromArgb(255, Math.min(parseFloat(parts[1]) * 255, 255), Math.min(parseFloat(parts[2]) * 255, 255), Math.min(parseFloat(parts[3]) * 255, 255));\r\n break;\r\n case 'map_Kd':\r\n currentMaterial.diffuse = Colors.get_white();\r\n var textureFilename = parts[1];\r\n for (var i = 2; i < parts.length; i++) {\r\n textureFilename += ' ' + parts[i];\r\n }\r\n var path = this.filename.substring(0, this.filename.lastIndexOf('\\\\') + 1);\r\n textureFilename = ss.replaceString(textureFilename, '/', '\\\\');\r\n if (textureFilename.indexOf('\\\\') !== -1) {\r\n textureFilename = textureFilename.substring(textureFilename.lastIndexOf('\\\\') + 1);\r\n }\r\n this._textureLib[materialName] = textureFilename;\r\n break;\r\n case 'Kd':\r\n currentMaterial.diffuse = Color.fromArgb(255, Math.min(parseFloat(parts[1]) * 255, 255), Math.min(parseFloat(parts[2]) * 255, 255), Math.min(parseFloat(parts[3]) * 255, 255));\r\n break;\r\n case 'Ks':\r\n currentMaterial.specular = Color.fromArgb(255, Math.min(parseFloat(parts[1]) * 255, 255), Math.min(parseFloat(parts[2]) * 255, 255), Math.min(parseFloat(parts[3]) * 255, 255));\r\n break;\r\n case 'd':\r\n currentMaterial.opacity = parseFloat(parts[1]);\r\n break;\r\n case 'Tr':\r\n currentMaterial.opacity = 1 - parseFloat(parts[1]);\r\n break;\r\n case 'illum':\r\n var illuminationMode = parseInt(parts[1]);\r\n break;\r\n case 'sharpness':\r\n currentMaterial.specularSharpness = parseFloat(parts[1]);\r\n break;\r\n case 'Ns':\r\n currentMaterial.specularSharpness = 1 + 2 * parseFloat(parts[1]);\r\n currentMaterial.specularSharpness = Math.max(10, currentMaterial.specularSharpness);\r\n break;\r\n }\r\n }\r\n }\r\n if (!ss.emptyString(materialName)) {\r\n this._matLib[materialName] = currentMaterial;\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n },\r\n _getIndexies: function(data) {\r\n var parts = ss.trim(data).split('/');\r\n var indecies = new Array(3);\r\n if (ss.emptyString(data)) {\r\n return indecies;\r\n }\r\n if (parts.length > 0) {\r\n indecies[0] = parseInt(parts[0]);\r\n }\r\n if (parts.length > 1) {\r\n if (ss.emptyString(parts[1])) {\r\n indecies[1] = 0;\r\n }\r\n else {\r\n indecies[1] = parseInt(parts[1]);\r\n }\r\n }\r\n if (parts.length > 2) {\r\n indecies[2] = parseInt(parts[2]);\r\n }\r\n return indecies;\r\n },\r\n _loadMeshFrom3ds: function(doc, filename, scale) {\r\n var $this = this;\r\n\r\n this._tourDocument = doc;\r\n var blob = doc.getFileBlob(filename);\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n $this._read3dsFromBin(new BinaryReader(new Uint8Array(chunck.result)), scale);\r\n };\r\n chunck.readAsArrayBuffer(blob);\r\n },\r\n _read3dsFromBin: function(br, scale) {\r\n var i;\r\n var sectionID;\r\n var sectionLength;\r\n var name = '';\r\n var material = '';\r\n var triangleCount = 0;\r\n var vertexCount = 0;\r\n var vertexList = [];\r\n var indexList = [];\r\n var attribList = [];\r\n var materialNames = [];\r\n var currentMaterialIndex = -1;\r\n var currentMaterial = new Material();\r\n var attributeID = 0;\r\n var count = 0;\r\n var lastID = 0;\r\n var exit = false;\r\n var normalMapFound = false;\r\n var offsetX = 0;\r\n var offsetY = 0;\r\n var offsetZ = 0;\r\n var objects = [];\r\n var currentObject = null;\r\n var objHierarchy = [];\r\n var objNames = [];\r\n var objectTable = {};\r\n var dummyCount = 0;\r\n var length = br.get_length() - 1;\r\n var startMapIndex = 0;\r\n var startTriangleIndex = 0;\r\n while (br.get_position() < length && !exit) {\r\n sectionID = br.readUInt16();\r\n sectionLength = br.readUInt32();\r\n switch (sectionID) {\r\n case 19789:\r\n break;\r\n case 15677:\r\n break;\r\n case 16384:\r\n name = '';\r\n var b;\r\n do {\r\n b = br.readByte();\r\n if (b > 0) {\r\n name += String.fromCharCode(b);\r\n }\r\n } while (!!b);\r\n currentObject = new ObjectNode();\r\n currentObject.name = name;\r\n objects.push(currentObject);\r\n if (!ss.keyExists(objectTable, currentObject.name)) {\r\n objectTable[currentObject.name] = currentObject;\r\n }\r\n break;\r\n case 16640:\r\n startMapIndex = vertexList.length;\r\n startTriangleIndex = Math.floor(indexList.length / 3);\r\n break;\r\n case 16656:\r\n vertexCount = br.readUInt16();\r\n for (i = 0; i < vertexCount; i++) {\r\n var x = br.readSingle() - offsetX;\r\n var y = br.readSingle() - offsetY;\r\n var z = br.readSingle() - offsetZ;\r\n var vert = PositionNormalTextured._create(x * scale, z * scale, y * scale, 0, 0, 0, 0, 0);\r\n vertexList.push(vert);\r\n }\r\n break;\r\n case 16672:\r\n var triCount = br.readUInt16();\r\n triangleCount += triCount;\r\n for (i = 0; i < triCount; i++) {\r\n var aa = br.readUInt16() + startMapIndex;\r\n var bb = br.readUInt16() + startMapIndex;\r\n var cc = br.readUInt16() + startMapIndex;\r\n indexList.push(cc);\r\n indexList.push(bb);\r\n indexList.push(aa);\r\n var flags = br.readUInt16();\r\n }\r\n break;\r\n case 16688:\r\n material = '';\r\n i = 0;\r\n var b1;\r\n do {\r\n b1 = br.readByte();\r\n if (b1 > 0) {\r\n material += String.fromCharCode(b1);\r\n }\r\n i++;\r\n } while (!!b1);\r\n var triCount = br.readUInt16();\r\n var applyList = new Array(triCount);\r\n attributeID = Object3d._getMaterialID(material, materialNames);\r\n for (i = 0; i < triCount; i++) {\r\n applyList[i] = br.readUInt16() + startTriangleIndex;\r\n }\r\n currentObject.applyLists.push(applyList);\r\n currentObject.applyListsIndex.push(attributeID);\r\n break;\r\n case 16704:\r\n count = br.readUInt16();\r\n for (i = 0; i < count; i++) {\r\n var vert = vertexList[startMapIndex + i];\r\n var texCoord = Vector2d.create(br.readSingle(), (this.flipV) ? (1 - br.readSingle()) : br.readSingle());\r\n vertexList[startMapIndex + i] = PositionNormalTextured.createUV(vert.get_position(), new Vector3d(), texCoord);\r\n }\r\n break;\r\n case 16736:\r\n var mat = new Array(12);\r\n for (i = 0; i < 12; i++) {\r\n mat[i] = br.readSingle();\r\n }\r\n if (ss.keyExists(objectTable, name)) {\r\n objectTable[name].localMat = Matrix3d.create(mat[0], mat[1], mat[2], 0, mat[3], mat[4], mat[5], 0, mat[6], mat[7], mat[8], 0, mat[9], mat[10], mat[11], 1);\r\n objectTable[name].localMat.invert();\r\n }\r\n break;\r\n case 45055:\r\n break;\r\n case 40960:\r\n var matName = '';\r\n i = 0;\r\n var b2;\r\n do {\r\n b2 = br.readByte();\r\n if (b2 > 0) {\r\n matName += String.fromCharCode(b2);\r\n }\r\n i++;\r\n } while (!!b2);\r\n materialNames.push(matName);\r\n if (currentMaterialIndex > -1) {\r\n this._addMaterial(currentMaterial);\r\n }\r\n currentMaterialIndex++;\r\n currentMaterial = new Material();\r\n currentMaterial.diffuse = Colors.get_white();\r\n currentMaterial.ambient = Colors.get_white();\r\n currentMaterial.specular = Colors.get_black();\r\n currentMaterial.specularSharpness = 30;\r\n currentMaterial.opacity = 1;\r\n break;\r\n case 40976:\r\n currentMaterial.ambient = this._loadColorChunk(br);\r\n break;\r\n case 40992:\r\n currentMaterial.diffuse = this._loadColorChunk(br);\r\n break;\r\n case 41008:\r\n currentMaterial.specular = this._loadColorChunk(br);\r\n break;\r\n case 41024:\r\n currentMaterial.specularSharpness = 1 + 2 * this._loadPercentageChunk(br);\r\n currentMaterial.specularSharpness = Math.max(10, currentMaterial.specularSharpness);\r\n break;\r\n case 41472:\r\n break;\r\n case 41728:\r\n var textureFilename = '';\r\n i = 0;\r\n var b2;\r\n do {\r\n b2 = br.readByte();\r\n if (b2 > 0) {\r\n textureFilename += String.fromCharCode(b2);\r\n }\r\n i++;\r\n } while (!!b2);\r\n var path = this.filename.substring(0, this.filename.lastIndexOf('\\\\') + 1);\r\n try {\r\n var tex = this._tourDocument.getCachedTexture2d(path + textureFilename);\r\n if (tex != null) {\r\n this._meshTextures.push(tex);\r\n this.meshFilenames.push(textureFilename);\r\n currentMaterial.diffuse = Colors.get_white();\r\n }\r\n else {\r\n this._meshTextures.push(null);\r\n }\r\n }\r\n catch ($e1) {\r\n this._meshTextures.push(null);\r\n }\r\n break;\r\n case 41520:\r\n var percentage = this._loadPercentageChunk(br);\r\n var nameId = br.readUInt16();\r\n var nameBlockLength = br.readUInt32();\r\n var textureFilename = '';\r\n i = 0;\r\n var b2;\r\n do {\r\n b2 = br.readByte();\r\n if (b2 > 0) {\r\n textureFilename += String.fromCharCode(b2);\r\n }\r\n i++;\r\n } while (!!b2);\r\n var path = this.filename.substring(0, this.filename.lastIndexOf('\\\\') + 1);\r\n try {\r\n var tex = this._tourDocument.getCachedTexture2d(path + textureFilename);\r\n if (tex != null) {\r\n this._meshNormalMaps.push(tex);\r\n this.meshFilenames.push(textureFilename);\r\n normalMapFound = true;\r\n }\r\n else {\r\n this._meshNormalMaps.push(null);\r\n }\r\n }\r\n catch ($e2) {\r\n this._meshNormalMaps.push(null);\r\n }\r\n break;\r\n case 41476:\r\n var strength = this._loadPercentageChunk(br);\r\n var nameId = br.readUInt16();\r\n var nameBlockLength = br.readUInt32();\r\n var textureFilename = '';\r\n i = 0;\r\n var b2;\r\n do {\r\n b2 = br.readByte();\r\n if (b2 > 0) {\r\n textureFilename += String.fromCharCode(b2);\r\n }\r\n i++;\r\n } while (!!b2);\r\n var path = this.filename.substring(0, this.filename.lastIndexOf('\\\\') + 1);\r\n try {\r\n var tex = this._tourDocument.getCachedTexture2d(path + textureFilename);\r\n if (tex != null) {\r\n this._meshSpecularTextures.push(tex);\r\n this.meshFilenames.push(textureFilename);\r\n var gray = ss.truncate((255.99 * strength / 100));\r\n currentMaterial.specular = Color.fromArgb(255, gray, gray, gray);\r\n }\r\n else {\r\n this._meshSpecularTextures.push(null);\r\n }\r\n }\r\n catch ($e3) {\r\n this._meshSpecularTextures.push(null);\r\n }\r\n break;\r\n case 45056:\r\n break;\r\n case 45058:\r\n break;\r\n case 45072:\r\n name = '';\r\n i = 0;\r\n var b1;\r\n do {\r\n b1 = br.readByte();\r\n if (b1 > 0) {\r\n name += String.fromCharCode(b1);\r\n }\r\n i++;\r\n } while (!!b1);\r\n var dum1 = br.readUInt16();\r\n var dum2 = br.readUInt16();\r\n var level = br.readUInt16();\r\n if (level === 65535) {\r\n level = -1;\r\n }\r\n if (ss.startsWith(name, '$')) {\r\n dummyCount++;\r\n }\r\n else {\r\n objNames.push(name);\r\n }\r\n objHierarchy.push(level);\r\n if (ss.keyExists(objectTable, name)) {\r\n objectTable[name].level = level;\r\n }\r\n break;\r\n case 45073:\r\n name = '';\r\n i = 0;\r\n var b1;\r\n do {\r\n b1 = br.readByte();\r\n if (b1 > 0) {\r\n name += String.fromCharCode(b1);\r\n }\r\n i++;\r\n } while (!!b1);\r\n objNames.push('$$$' + name);\r\n break;\r\n case 45075:\r\n var points = new Array(3);\r\n for (i = 0; i < 3; i++) {\r\n points[i] = br.readSingle();\r\n }\r\n if (ss.keyExists(objectTable, name)) {\r\n objectTable[name].pivotPoint = Vector3d.create(-points[0], -points[1], -points[2]);\r\n }\r\n break;\r\n case 45088:\r\n var pos = new Array(8);\r\n for (i = 0; i < 8; i++) {\r\n pos[i] = br.readSingle();\r\n }\r\n break;\r\n default:\r\n br.seekRelative((sectionLength - 6));\r\n break;\r\n }\r\n lastID = sectionID;\r\n }\r\n br.close();\r\n if (currentMaterialIndex > -1) {\r\n this._addMaterial(currentMaterial);\r\n }\r\n var degtorag = Math.PI / 180;\r\n var creaseAngleRad = ((this.smooth) ? 70 * degtorag : 45 * degtorag);\r\n var vertexNormals = this._calculateVertexNormalsMerged(vertexList, indexList, creaseAngleRad);\r\n var newVertexList = [];\r\n var newVertexCount = triangleCount * 3;\r\n for (var vertexIndex = 0; vertexIndex < newVertexCount; ++vertexIndex) {\r\n var v = vertexList[indexList[vertexIndex]];\r\n v.set_normal(vertexNormals[vertexIndex]);\r\n newVertexList.push(v);\r\n }\r\n var newIndexList = [];\r\n var $enum4 = ss.enumerate(objects);\r\n while ($enum4.moveNext()) {\r\n var node = $enum4.current;\r\n var materialGroups = [];\r\n for (i = 0; i < node.applyLists.length; i++) {\r\n var matId = node.applyListsIndex[i];\r\n var startIndex = newIndexList.length;\r\n var $enum5 = ss.enumerate(node.applyLists[i]);\r\n while ($enum5.moveNext()) {\r\n var triangleIndex = $enum5.current;\r\n newIndexList.push((triangleIndex * 3));\r\n newIndexList.push((triangleIndex * 3 + 1));\r\n newIndexList.push((triangleIndex * 3 + 2));\r\n }\r\n var group = new Group();\r\n group.startIndex = startIndex;\r\n group.indexCount = node.applyLists[i].length * 3;\r\n group.materialIndex = matId;\r\n materialGroups.push(group);\r\n }\r\n node.drawGroup = materialGroups;\r\n }\r\n var nodeStack = new ss.Stack();\r\n var nodeTreeRoot = [];\r\n var rootDummy = new ObjectNode();\r\n rootDummy.name = 'Root';\r\n rootDummy.parent = null;\r\n rootDummy.level = -1;\r\n rootDummy.drawGroup = null;\r\n var currentLevel = -1;\r\n nodeStack.push(rootDummy);\r\n nodeTreeRoot.push(rootDummy);\r\n for (i = 0; i < objHierarchy.length; i++) {\r\n var level = objHierarchy[i];\r\n if (level <= currentLevel) {\r\n while (level <= nodeStack.peek().level && nodeStack.count > 1) {\r\n nodeStack.pop();\r\n }\r\n currentLevel = level;\r\n }\r\n if (ss.startsWith(objNames[i], '$$$')) {\r\n var dummy = new ObjectNode();\r\n dummy.name = ss.replaceString(objNames[i], '$$$', '');\r\n dummy.parent = nodeStack.peek();\r\n dummy.parent.children.push(dummy);\r\n dummy.level = currentLevel = level;\r\n dummy.drawGroup = null;\r\n nodeStack.push(dummy);\r\n }\r\n else {\r\n objectTable[objNames[i]].level = currentLevel = level;\r\n objectTable[objNames[i]].parent = nodeStack.peek();\r\n objectTable[objNames[i]].parent.children.push(objectTable[objNames[i]]);\r\n nodeStack.push(objectTable[objNames[i]]);\r\n }\r\n }\r\n if (!objHierarchy.length) {\r\n var $enum6 = ss.enumerate(objects);\r\n while ($enum6.moveNext()) {\r\n var node = $enum6.current;\r\n rootDummy.children.push(node);\r\n node.parent = rootDummy;\r\n }\r\n }\r\n if (normalMapFound) {\r\n var tangentIndexList = [];\r\n for (var tangentIndex = 0; tangentIndex < newVertexCount; ++tangentIndex) {\r\n tangentIndexList.push(tangentIndex);\r\n }\r\n var tangents = this._calculateVertexTangents(newVertexList, tangentIndexList, creaseAngleRad);\r\n var vertices = new Array(newVertexList.length);\r\n var vertexIndex = 0;\r\n var $enum7 = ss.enumerate(newVertexList);\r\n while ($enum7.moveNext()) {\r\n var v = $enum7.current;\r\n var tvertex = new PositionNormalTexturedTangent(v.get_position(), v.get_normal(), Vector2d.create(v.tu, v.tv), tangents[vertexIndex]);\r\n vertices[vertexIndex] = tvertex;\r\n ++vertexIndex;\r\n }\r\n this._mesh = Mesh.createTangent(vertices, newIndexList);\r\n }\r\n else {\r\n this._mesh = Mesh.create(newVertexList, newIndexList);\r\n }\r\n this.objects = nodeTreeRoot;\r\n this._mesh.setObjects(nodeTreeRoot);\r\n this._mesh.commitToDevice();\r\n this._dirty = false;\r\n this._readyToRender = true;\r\n },\r\n _offsetObjects: function(vertList, objects, offsetMat, offsetPoint) {\r\n var $enum1 = ss.enumerate(objects);\r\n while ($enum1.moveNext()) {\r\n var node = $enum1.current;\r\n var matLoc = node.localMat;\r\n this._offsetObjects(vertList, node.children, matLoc, Vector3d.addVectors(node.pivotPoint, offsetPoint));\r\n var $enum2 = ss.enumerate(node.drawGroup);\r\n while ($enum2.moveNext()) {\r\n var group = $enum2.current;\r\n var end = group.startIndex + group.indexCount;\r\n for (var i = group.startIndex; i < end; i++) {\r\n var vert = vertList[i];\r\n vert.set_position(Vector3d.addVectors(vert.get_position(), Vector3d.addVectors(node.pivotPoint, offsetPoint)));\r\n vertList[i] = vert;\r\n }\r\n }\r\n }\r\n },\r\n setupLighting: function(renderContext) {\r\n var objPosition = Vector3d.create(renderContext.get_world().get_offsetX(), renderContext.get_world().get_offsetY(), renderContext.get_world().get_offsetZ());\r\n var objToLight = Vector3d.subtractVectors(objPosition, renderContext.get_reflectedLightPosition());\r\n var sunPosition = Vector3d.subtractVectors(renderContext.get_sunPosition(), renderContext.get_reflectedLightPosition());\r\n var cosPhaseAngle = (sunPosition.length() <= 0) ? 1 : Vector3d.dot(objToLight, sunPosition) / (objToLight.length() * sunPosition.length());\r\n var reflectedLightFactor = Math.max(0, cosPhaseAngle);\r\n reflectedLightFactor = Math.sqrt(reflectedLightFactor);\r\n var hemiLightFactor = 0;\r\n var sunlightFactor = 1;\r\n if (renderContext.get_occludingPlanetRadius() > 0) {\r\n var objAltitude = Vector3d.subtractVectors(objPosition, renderContext.get_occludingPlanetPosition()).length() - renderContext.get_occludingPlanetRadius();\r\n hemiLightFactor = Math.max(0, Math.min(1, 1 - (objAltitude / renderContext.get_occludingPlanetRadius()) * 300));\r\n reflectedLightFactor *= (1 - hemiLightFactor);\r\n var sunToPlanet = Vector3d.subtractVectors(renderContext.get_occludingPlanetPosition(), renderContext.get_sunPosition());\r\n var objToPlanet = Vector3d.subtractVectors(renderContext.get_occludingPlanetPosition(), objPosition);\r\n var hemiLightDirection = Vector3d.create(-objToPlanet.x, -objToPlanet.y, -objToPlanet.z);\r\n hemiLightDirection.normalize();\r\n renderContext.set_hemisphereLightUp(hemiLightDirection);\r\n var objToSun = Vector3d.subtractVectors(renderContext.get_sunPosition(), objPosition);\r\n var sunPlanetDistance = sunToPlanet.length();\r\n var t = -Vector3d.dot(objToSun, sunToPlanet) / (sunPlanetDistance * sunPlanetDistance);\r\n if (t > 1) {\r\n var shadowAxisPoint = Vector3d.addVectors(renderContext.get_sunPosition(), Vector3d.multiplyScalar(sunToPlanet, t));\r\n var d = Vector3d.subtractVectors(shadowAxisPoint, objPosition).length();\r\n var s = Vector3d.subtractVectors(shadowAxisPoint, renderContext.get_sunPosition()).length();\r\n var solarRadius = 0.004645784;\r\n var penumbraRadius = renderContext.get_occludingPlanetRadius() + (t - 1) * (renderContext.get_occludingPlanetRadius() + solarRadius);\r\n var umbraRadius = renderContext.get_occludingPlanetRadius() + (t - 1) * (renderContext.get_occludingPlanetRadius() - solarRadius);\r\n if (d < penumbraRadius) {\r\n var minimumShadow = 0;\r\n if (umbraRadius < 0) {\r\n var occlusion = Math.pow(1 / (1 - umbraRadius), 2);\r\n umbraRadius = 0;\r\n minimumShadow = 1 - occlusion;\r\n }\r\n var u = Math.max(0, umbraRadius);\r\n sunlightFactor = Math.max(minimumShadow, (d - u) / (penumbraRadius - u));\r\n var gray = ss.truncate((255.99 * sunlightFactor));\r\n renderContext.set_sunlightColor(Color.fromArgb(255, gray, gray, gray));\r\n hemiLightFactor *= sunlightFactor;\r\n }\r\n }\r\n }\r\n renderContext.set_reflectedLightColor(Color.fromArgb(255, ss.truncate((renderContext.get_reflectedLightColor().r * reflectedLightFactor)), ss.truncate((renderContext.get_reflectedLightColor().g * reflectedLightFactor)), ss.truncate((renderContext.get_reflectedLightColor().b * reflectedLightFactor))));\r\n renderContext.set_hemisphereLightColor(Color.fromArgb(255, ss.truncate((renderContext.get_hemisphereLightColor().r * hemiLightFactor)), ss.truncate((renderContext.get_hemisphereLightColor().g * hemiLightFactor)), ss.truncate((renderContext.get_hemisphereLightColor().b * hemiLightFactor))));\r\n },\r\n render: function(renderContext, opacity) {\r\n if (!this._readyToRender) {\r\n return;\r\n }\r\n if (this._dirty && !this.issLayer) {\r\n this._reload();\r\n }\r\n var oldWorld = renderContext.get_world();\r\n var offset = this._mesh.boundingSphere.center;\r\n var unitScale = 1;\r\n if (this._mesh.boundingSphere.radius > 0) {\r\n unitScale = 1 / this._mesh.boundingSphere.radius;\r\n }\r\n renderContext.set_world(Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(Matrix3d.translation(Vector3d.create(-offset.x, -offset.y, -offset.z)), Matrix3d._scaling(unitScale, unitScale, unitScale)), oldWorld));\r\n var worldView = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n var v = worldView.transform(Vector3d.get_empty());\r\n var scaleFactor = Math.sqrt(worldView.get_m11() * worldView.get_m11() + worldView.get_m22() * worldView.get_m22() + worldView.get_m33() * worldView.get_m33()) / unitScale;\r\n var dist = v.length();\r\n var radius = scaleFactor;\r\n var viewportHeight = ss.truncate(renderContext.height);\r\n var p11 = renderContext.get_projection().get_m11();\r\n var p34 = renderContext.get_projection().get_m34();\r\n var p44 = renderContext.get_projection().get_m44();\r\n var w = Math.abs(p34) * dist + p44;\r\n var pixelsPerUnit = (p11 / w) * viewportHeight;\r\n var radiusInPixels = (radius * pixelsPerUnit);\r\n if (radiusInPixels < 0.5) {\r\n return;\r\n }\r\n var savedSunlightColor = renderContext.get_sunlightColor();\r\n var savedReflectedColor = renderContext.get_reflectedLightColor();\r\n var savedHemiColor = renderContext.get_hemisphereLightColor();\r\n if (Settings.get_current().get_solarSystemLighting()) {\r\n this.setupLighting(renderContext);\r\n if (!this.useCurrentAmbient) {\r\n renderContext.set_ambientLightColor(Color.fromArgb(255, 11, 11, 11));\r\n }\r\n }\r\n else {\r\n renderContext.set_sunlightColor(Colors.get_black());\r\n renderContext.set_reflectedLightColor(Colors.get_black());\r\n renderContext.set_hemisphereLightColor(Colors.get_black());\r\n renderContext.set_ambientLightColor(Colors.get_white());\r\n }\r\n if (this._mesh == null) {\r\n return;\r\n }\r\n ModelShader.minLightingBrightness = 0.1;\r\n var count = this._meshMaterials.length;\r\n this._mesh.beginDrawing(renderContext);\r\n if (count > 0) {\r\n for (var i = 0; i < this._meshMaterials.length; i++) {\r\n if (this._meshMaterials[i].isDefault) {\r\n var mat = this._meshMaterials[i];\r\n mat.diffuse = this.color;\r\n mat.ambient = this.color;\r\n this._meshMaterials[i] = mat;\r\n }\r\n renderContext.setMaterial(this._meshMaterials[i], this._meshTextures[i], this._meshSpecularTextures[i], this._meshNormalMaps[i], opacity);\r\n if (this._mesh.vertexBuffer != null) {\r\n ModelShader.use(renderContext, this._mesh.vertexBuffer.vertexBuffer, this._mesh.indexBuffer.buffer, (this._meshTextures[i] != null) ? this._meshTextures[i].texture2d : null, opacity, false, 32);\r\n }\r\n else {\r\n ModelShader.use(renderContext, this._mesh.tangentVertexBuffer.vertexBuffer, this._mesh.indexBuffer.buffer, (this._meshTextures[i] != null) ? this._meshTextures[i].texture2d : null, opacity, false, 44);\r\n }\r\n renderContext.preDraw();\r\n this._mesh.drawSubset(renderContext, i);\r\n }\r\n }\r\n else {\r\n renderContext.preDraw();\r\n for (var i = 0; i < this._meshTextures.length; i++) {\r\n if (this._meshTextures[i] != null) {\r\n renderContext.set_mainTexture(this._meshTextures[i]);\r\n if (this._mesh.vertexBuffer != null) {\r\n ModelShader.use(renderContext, this._mesh.vertexBuffer.vertexBuffer, this._mesh.indexBuffer.buffer, (this._meshTextures[i] != null) ? this._meshTextures[i].texture2d : null, opacity, false, 32);\r\n }\r\n else {\r\n ModelShader.use(renderContext, this._mesh.tangentVertexBuffer.vertexBuffer, this._mesh.indexBuffer.buffer, (this._meshTextures[i] != null) ? this._meshTextures[i].texture2d : null, opacity, false, 44);\r\n }\r\n }\r\n renderContext.preDraw();\r\n this._mesh.drawSubset(renderContext, i);\r\n }\r\n }\r\n renderContext.set_world(oldWorld);\r\n renderContext.set_sunlightColor(savedSunlightColor);\r\n renderContext.set_reflectedLightColor(savedReflectedColor);\r\n renderContext.set_hemisphereLightColor(savedHemiColor);\r\n renderContext.set_ambientLightColor(Colors.get_black());\r\n },\r\n dispose: function() {\r\n if (this._mesh != null) {\r\n this._mesh.dispose();\r\n this._mesh = null;\r\n }\r\n var $enum1 = ss.enumerate(ss.keys(this._textureCache));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var tex = this._textureCache[key];\r\n if (tex != null) {\r\n tex.dispose();\r\n }\r\n }\r\n ss.clearKeys(this._textureCache);\r\n Object3d._disposeTextureList(this._meshTextures);\r\n Object3d._disposeTextureList(this._meshSpecularTextures);\r\n Object3d._disposeTextureList(this._meshNormalMaps);\r\n this._meshMaterials.length = 0;\r\n this._dirty = true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ObjectNode\r\n\r\n function ObjectNode() {\r\n this.level = -1;\r\n this.children = [];\r\n this.enabled = true;\r\n this.drawGroup = [];\r\n this.applyLists = [];\r\n this.applyListsIndex = [];\r\n }\r\n var ObjectNode$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Orbit\r\n\r\n function Orbit(elements, segments, color, thickness, scale) {\r\n this._elements = null;\r\n this._orbitColor = Colors.get_white();\r\n this._scale = 0;\r\n this._segmentCount = 0;\r\n this._elements = elements;\r\n this._segmentCount = segments;\r\n this._orbitColor = color;\r\n this._scale = scale;\r\n }\r\n var Orbit$ = {\r\n cleanUp: function() {\r\n },\r\n get_boundingRadius: function() {\r\n if (this._elements != null) {\r\n return (this._elements.a * (1 + this._elements.e)) / this._scale;\r\n }\r\n else {\r\n return 0;\r\n }\r\n },\r\n draw3D: function(renderContext, opacity, centerPoint) {\r\n var orbitalPlaneOrientation = Matrix3d.multiplyMatrix(Matrix3d._rotationZ(Coordinates.degreesToRadians(this._elements.w)), Matrix3d.multiplyMatrix(Matrix3d._rotationX(Coordinates.degreesToRadians(this._elements.i)), Matrix3d._rotationZ(Coordinates.degreesToRadians(this._elements.omega))));\r\n orbitalPlaneOrientation = Matrix3d.multiplyMatrix(orbitalPlaneOrientation, Orbit._orbitalToWwt);\r\n var worldMatrix = Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(orbitalPlaneOrientation, Matrix3d.translation(centerPoint)), renderContext.get_world());\r\n var M = this._elements.n * (SpaceTimeController.get_jNow() - this._elements.t);\r\n var F = 1;\r\n if (M < 0) {\r\n F = -1;\r\n }\r\n M = Math.abs(M) / 360;\r\n M = (M - ss.truncate(M)) * 360 * F;\r\n var color = Color._fromArgbColor(ss.truncate((opacity * 255)), this._orbitColor);\r\n M = Coordinates.degreesToRadians(M);\r\n var E = M;\r\n for (var i = 0; i < 5; i++) {\r\n E += (M - E + this._elements.e * Math.sin(E)) / (1 - this._elements.e * Math.cos(E));\r\n }\r\n EllipseRenderer.drawEllipse(renderContext, this._elements.a / this._scale, this._elements.e, E, color, worldMatrix);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.EllipseRenderer\r\n\r\n function EllipseRenderer() {\r\n }\r\n EllipseRenderer.drawEllipseWithPosition = function(renderContext, semiMajorAxis, eccentricity, eccentricAnomaly, color, worldMatrix, positionNow) {\r\n if (EllipseRenderer._ellipseShader == null) {\r\n EllipseRenderer._ellipseShader = new EllipseShader();\r\n }\r\n if (EllipseRenderer._ellipseVertexBuffer == null) {\r\n EllipseRenderer._ellipseVertexBuffer = EllipseRenderer.createEllipseVertexBuffer(500);\r\n }\r\n var savedWorld = renderContext.get_world();\r\n renderContext.set_world(worldMatrix);\r\n renderContext.gl.bindBuffer(34962, EllipseRenderer._ellipseVertexBuffer.vertexBuffer);\r\n renderContext.gl.bindBuffer(34963, null);\r\n EllipseShader.use(renderContext, semiMajorAxis, eccentricity, eccentricAnomaly, color, 1, savedWorld, positionNow);\r\n renderContext.gl.drawArrays(3, 0, EllipseRenderer._ellipseVertexBuffer.count);\r\n renderContext.set_world(savedWorld);\r\n };\r\n EllipseRenderer.drawEllipse = function(renderContext, semiMajorAxis, eccentricity, eccentricAnomaly, color, worldMatrix) {\r\n if (EllipseRenderer._ellipseShader == null) {\r\n EllipseRenderer._ellipseShader = new EllipseShader();\r\n }\r\n if (EllipseRenderer._ellipseWithoutStartPointVertexBuffer == null) {\r\n EllipseRenderer._ellipseWithoutStartPointVertexBuffer = EllipseRenderer.createEllipseVertexBufferWithoutStartPoint(360);\r\n }\r\n var savedWorld = renderContext.get_world();\r\n renderContext.set_world(worldMatrix);\r\n renderContext.gl.bindBuffer(34962, EllipseRenderer._ellipseWithoutStartPointVertexBuffer.vertexBuffer);\r\n renderContext.gl.bindBuffer(34963, null);\r\n EllipseShader.use(renderContext, semiMajorAxis, eccentricity, eccentricAnomaly, color, 1, savedWorld, Vector3d.create(0, 0, 0));\r\n renderContext.gl.drawArrays(3, 0, EllipseRenderer._ellipseWithoutStartPointVertexBuffer.count - 1);\r\n renderContext.set_world(savedWorld);\r\n };\r\n EllipseRenderer.createEllipseVertexBuffer = function(vertexCount) {\r\n var vb = new PositionVertexBuffer(vertexCount);\r\n var verts = vb.lock();\r\n var index = 0;\r\n for (var i = 0; i < vertexCount / 2; ++i) {\r\n verts[index++] = Vector3d.create(2 * i / vertexCount * 0.05, 0, 0);\r\n }\r\n for (var i = 0; i < vertexCount / 2; ++i) {\r\n verts[index++] = Vector3d.create(2 * i / vertexCount * 0.95 + 0.05, 0, 0);\r\n }\r\n vb.unlock();\r\n return vb;\r\n };\r\n EllipseRenderer.createEllipseVertexBufferWithoutStartPoint = function(vertexCount) {\r\n var vb = new PositionVertexBuffer(vertexCount);\r\n var verts = vb.lock();\r\n verts[0] = Vector3d.create(1E-06, 0, 0);\r\n for (var i = 1; i < vertexCount; ++i) {\r\n verts[i] = Vector3d.create(2 * i / vertexCount, 0, 0);\r\n }\r\n vb.unlock();\r\n return vb;\r\n };\r\n var EllipseRenderer$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.ReferenceFrame\r\n\r\n function ReferenceFrame() {\r\n this._systemGenerated = false;\r\n this.meanAnomoly = 0;\r\n this.orbitalYears = 0;\r\n this.observingLocation = false;\r\n this.reference = 18;\r\n this.parentsRoationalBase = false;\r\n this.referenceFrameType = 0;\r\n this.meanRadius = 6371000;\r\n this.oblateness = 0.0033528;\r\n this.heading = 0;\r\n this.pitch = 0;\r\n this.roll = 0;\r\n this.scale = 1;\r\n this.tilt = 0;\r\n this.translation = new Vector3d();\r\n this.lat = 0;\r\n this.lng = 0;\r\n this.altitude = 0;\r\n this.rotationalPeriod = 0;\r\n this.zeroRotationDate = 0;\r\n this.representativeColor = Colors.get_white();\r\n this.showAsPoint = false;\r\n this.showOrbitPath = false;\r\n this.stationKeeping = true;\r\n this.semiMajorAxis = 0;\r\n this.semiMajorAxisUnits = 1;\r\n this.eccentricity = 0;\r\n this.inclination = 0;\r\n this.argumentOfPeriapsis = 0;\r\n this.longitudeOfAscendingNode = 0;\r\n this.meanAnomolyAtEpoch = 0;\r\n this.meanDailyMotion = 0;\r\n this.epoch = 0;\r\n this._orbit = null;\r\n this._elements = new EOE();\r\n this.worldMatrix = new Matrix3d();\r\n this.worldMatrix = Matrix3d.get_identity();\r\n }\r\n ReferenceFrame.isTLECheckSumGood = function(line) {\r\n if (line.length !== 69) {\r\n return false;\r\n }\r\n var checksum = 0;\r\n for (var i = 0; i < 68; i++) {\r\n switch (line.substr(i, 1)) {\r\n case '1':\r\n checksum += 1;\r\n break;\r\n case '2':\r\n checksum += 2;\r\n break;\r\n case '3':\r\n checksum += 3;\r\n break;\r\n case '4':\r\n checksum += 4;\r\n break;\r\n case '5':\r\n checksum += 5;\r\n break;\r\n case '6':\r\n checksum += 6;\r\n break;\r\n case '7':\r\n checksum += 7;\r\n break;\r\n case '8':\r\n checksum += 8;\r\n break;\r\n case '9':\r\n checksum += 9;\r\n break;\r\n case '-':\r\n checksum += 1;\r\n break;\r\n }\r\n }\r\n return (checksum % 10).toString() === line.charAt(68).toString();\r\n };\r\n ReferenceFrame.toTLEExponential = function(num, size) {\r\n var exp = num.toExponential(size);\r\n if (exp.length < size + 6) {\r\n exp = exp.substring(0, size + 4) + '0' + exp.substr(size + 4, 1);\r\n }\r\n return exp;\r\n };\r\n ReferenceFrame.tleNumberString = function(num, left, right) {\r\n var formated = num.toFixed(right);\r\n var point = formated.indexOf('.');\r\n if (point === -1) {\r\n point = formated.length;\r\n formated += '.0';\r\n }\r\n var len = formated.length - point - 1;\r\n var fill = '00000000';\r\n formated = fill.substr(0, left - point) + formated + fill.substr(0, right - len);\r\n return formated;\r\n };\r\n ReferenceFrame.computeTLECheckSum = function(line) {\r\n if (line.length !== 68) {\r\n return '0';\r\n }\r\n var checksum = 0;\r\n for (var i = 0; i < 68; i++) {\r\n switch (line[i]) {\r\n case '1':\r\n checksum += 1;\r\n break;\r\n case '2':\r\n checksum += 2;\r\n break;\r\n case '3':\r\n checksum += 3;\r\n break;\r\n case '4':\r\n checksum += 4;\r\n break;\r\n case '5':\r\n checksum += 5;\r\n break;\r\n case '6':\r\n checksum += 6;\r\n break;\r\n case '7':\r\n checksum += 7;\r\n break;\r\n case '8':\r\n checksum += 8;\r\n break;\r\n case '9':\r\n checksum += 9;\r\n break;\r\n case '-':\r\n checksum += 1;\r\n break;\r\n }\r\n }\r\n return ((checksum % 10));\r\n };\r\n var ReferenceFrame$ = {\r\n get_representativeColor: function() {\r\n return this.representativeColor;\r\n },\r\n set_representativeColor: function(value) {\r\n if (value !== this.representativeColor) {\r\n this.representativeColor = value;\r\n this._orbit = null;\r\n }\r\n return value;\r\n },\r\n get_orbit: function() {\r\n return this._orbit;\r\n },\r\n set_orbit: function(value) {\r\n this._orbit = value;\r\n return value;\r\n },\r\n getIndentifier: function() {\r\n return this.name;\r\n },\r\n importTrajectory: function(filename) {\r\n },\r\n saveToXml: function(xmlWriter) {\r\n xmlWriter._writeStartElement('ReferenceFrame');\r\n xmlWriter._writeAttributeString('Name', this.name);\r\n xmlWriter._writeAttributeString('Parent', this.parent);\r\n xmlWriter._writeAttributeString('ReferenceFrameType', Enums.toXml('ReferenceFrameTypes', this.referenceFrameType));\r\n xmlWriter._writeAttributeString('Reference', Enums.toXml('ReferenceFrames', this.reference));\r\n xmlWriter._writeAttributeString('ParentsRoationalBase', this.parentsRoationalBase.toString());\r\n xmlWriter._writeAttributeString('MeanRadius', this.meanRadius.toString());\r\n xmlWriter._writeAttributeString('Oblateness', this.oblateness.toString());\r\n xmlWriter._writeAttributeString('Heading', this.heading.toString());\r\n xmlWriter._writeAttributeString('Pitch', this.pitch.toString());\r\n xmlWriter._writeAttributeString('Roll', this.roll.toString());\r\n xmlWriter._writeAttributeString('Scale', this.scale.toString());\r\n xmlWriter._writeAttributeString('Tilt', this.tilt.toString());\r\n xmlWriter._writeAttributeString('Translation', this.translation.toString());\r\n if (!this.referenceFrameType) {\r\n xmlWriter._writeAttributeString('Lat', this.lat.toString());\r\n xmlWriter._writeAttributeString('Lng', this.lng.toString());\r\n xmlWriter._writeAttributeString('Altitude', this.altitude.toString());\r\n }\r\n xmlWriter._writeAttributeString('RotationalPeriod', this.rotationalPeriod.toString());\r\n xmlWriter._writeAttributeString('ZeroRotationDate', this.zeroRotationDate.toString());\r\n xmlWriter._writeAttributeString('RepresentativeColor', this.get_representativeColor().save());\r\n xmlWriter._writeAttributeString('ShowAsPoint', this.showAsPoint.toString());\r\n xmlWriter._writeAttributeString('ShowOrbitPath', this.showOrbitPath.toString());\r\n xmlWriter._writeAttributeString('StationKeeping', this.stationKeeping.toString());\r\n if (this.referenceFrameType === 1) {\r\n xmlWriter._writeAttributeString('SemiMajorAxis', this.semiMajorAxis.toString());\r\n xmlWriter._writeAttributeString('SemiMajorAxisScale', Enums.toXml('AltUnits', this.semiMajorAxisUnits));\r\n xmlWriter._writeAttributeString('Eccentricity', this.eccentricity.toString());\r\n xmlWriter._writeAttributeString('Inclination', this.inclination.toString());\r\n xmlWriter._writeAttributeString('ArgumentOfPeriapsis', this.argumentOfPeriapsis.toString());\r\n xmlWriter._writeAttributeString('LongitudeOfAscendingNode', this.longitudeOfAscendingNode.toString());\r\n xmlWriter._writeAttributeString('MeanAnomolyAtEpoch', this.meanAnomolyAtEpoch.toString());\r\n xmlWriter._writeAttributeString('MeanDailyMotion', this.meanDailyMotion.toString());\r\n xmlWriter._writeAttributeString('Epoch', this.epoch.toString());\r\n }\r\n xmlWriter._writeEndElement();\r\n },\r\n initializeFromXml: function(node) {\r\n this.name = node.attributes.getNamedItem('Name').nodeValue;\r\n this.parent = node.attributes.getNamedItem('Parent').nodeValue;\r\n this.referenceFrameType = Enums.parse('ReferenceFrameTypes', node.attributes.getNamedItem('ReferenceFrameType').nodeValue);\r\n this.reference = Enums.parse('ReferenceFrames', node.attributes.getNamedItem('Reference').nodeValue);\r\n this.parentsRoationalBase = ss.boolean(node.attributes.getNamedItem('ParentsRoationalBase').nodeValue);\r\n this.meanRadius = parseFloat(node.attributes.getNamedItem('MeanRadius').nodeValue);\r\n this.oblateness = parseFloat(node.attributes.getNamedItem('Oblateness').nodeValue);\r\n this.heading = parseFloat(node.attributes.getNamedItem('Heading').nodeValue);\r\n this.pitch = parseFloat(node.attributes.getNamedItem('Pitch').nodeValue);\r\n this.roll = parseFloat(node.attributes.getNamedItem('Roll').nodeValue);\r\n this.scale = parseFloat(node.attributes.getNamedItem('Scale').nodeValue);\r\n this.tilt = parseFloat(node.attributes.getNamedItem('Tilt').nodeValue);\r\n this.translation = Vector3d.parse(node.attributes.getNamedItem('Translation').nodeValue);\r\n if (!this.referenceFrameType) {\r\n this.lat = parseFloat(node.attributes.getNamedItem('Lat').nodeValue);\r\n this.lng = parseFloat(node.attributes.getNamedItem('Lng').nodeValue);\r\n this.altitude = parseFloat(node.attributes.getNamedItem('Altitude').nodeValue);\r\n }\r\n this.rotationalPeriod = parseFloat(node.attributes.getNamedItem('RotationalPeriod').nodeValue);\r\n this.zeroRotationDate = parseFloat(node.attributes.getNamedItem('ZeroRotationDate').nodeValue);\r\n this.set_representativeColor(Color.load(node.attributes.getNamedItem('RepresentativeColor').nodeValue));\r\n this.showAsPoint = ss.boolean(node.attributes.getNamedItem('ShowAsPoint').nodeValue);\r\n if (node.attributes.getNamedItem('StationKeeping') != null) {\r\n this.stationKeeping = ss.boolean(node.attributes.getNamedItem('StationKeeping').nodeValue);\r\n }\r\n if (this.referenceFrameType === 1) {\r\n this.showOrbitPath = ss.boolean(node.attributes.getNamedItem('ShowOrbitPath').nodeValue);\r\n this.semiMajorAxis = parseFloat(node.attributes.getNamedItem('SemiMajorAxis').nodeValue);\r\n this.semiMajorAxisUnits = Enums.parse('AltUnits', node.attributes.getNamedItem('SemiMajorAxisScale').nodeValue);\r\n this.eccentricity = parseFloat(node.attributes.getNamedItem('Eccentricity').nodeValue);\r\n this.inclination = parseFloat(node.attributes.getNamedItem('Inclination').nodeValue);\r\n this.argumentOfPeriapsis = parseFloat(node.attributes.getNamedItem('ArgumentOfPeriapsis').nodeValue);\r\n this.longitudeOfAscendingNode = parseFloat(node.attributes.getNamedItem('LongitudeOfAscendingNode').nodeValue);\r\n this.meanAnomolyAtEpoch = parseFloat(node.attributes.getNamedItem('MeanAnomolyAtEpoch').nodeValue);\r\n this.meanDailyMotion = parseFloat(node.attributes.getNamedItem('MeanDailyMotion').nodeValue);\r\n this.epoch = parseFloat(node.attributes.getNamedItem('Epoch').nodeValue);\r\n }\r\n },\r\n fromTLE: function(line1, line2, gravity) {\r\n this.epoch = SpaceTimeController._twoLineDateToJulian(line1.substr(18, 14));\r\n this.eccentricity = parseFloat('0.' + line2.substr(26, 7));\r\n this.inclination = parseFloat(line2.substr(8, 8));\r\n this.longitudeOfAscendingNode = parseFloat(line2.substr(17, 8));\r\n this.argumentOfPeriapsis = parseFloat(line2.substr(34, 8));\r\n var revs = parseFloat(line2.substr(52, 11));\r\n this.meanAnomolyAtEpoch = parseFloat(line2.substr(43, 8));\r\n this.meanDailyMotion = revs * 360;\r\n var part = (86400 / revs) / (Math.PI * 2);\r\n this.semiMajorAxis = Math.pow((part * part) * gravity, 1 / 3);\r\n this.semiMajorAxisUnits = 1;\r\n },\r\n toTLE: function() {\r\n var line1 = new ss.StringBuilder();\r\n line1.append('1 99999U 00111AAA ');\r\n line1.append(SpaceTimeController.julianToTwoLineDate(this.epoch));\r\n line1.append(' ');\r\n line1.append(this.semiMajorAxis.toExponential(4));\r\n line1.append(' 00000-0 ');\r\n line1.append(ReferenceFrame.toTLEExponential(this.meanDailyMotion, 5));\r\n line1.append(' 001');\r\n line1.append(ReferenceFrame.computeTLECheckSum(line1.toString()));\r\n line1.appendLine('');\r\n var line2 = new ss.StringBuilder();\r\n line2.append('2 99999 ');\r\n line2.append(ReferenceFrame.tleNumberString(this.inclination, 3, 4) + ' ');\r\n line2.append(ReferenceFrame.tleNumberString(this.longitudeOfAscendingNode, 3, 4) + ' ');\r\n line2.append((ReferenceFrame.tleNumberString(this.eccentricity, 1, 7) + ' ').substring(2));\r\n line2.append(ReferenceFrame.tleNumberString(this.argumentOfPeriapsis, 3, 4) + ' ');\r\n line2.append(ReferenceFrame.tleNumberString(this.meanAnomolyAtEpoch, 3, 4) + ' ');\r\n line2.append(ReferenceFrame.toTLEExponential(this.meanDailyMotion / 207732, 5));\r\n line2.append('00001');\r\n line2.append(ReferenceFrame.computeTLECheckSum(line2.toString()));\r\n line2.appendLine('');\r\n return line1.toString() + line2.toString();\r\n },\r\n get_elements: function() {\r\n this._elements.a = this.semiMajorAxis;\r\n this._elements.e = this.eccentricity;\r\n this._elements.i = this.inclination;\r\n this._elements.w = this.argumentOfPeriapsis;\r\n this._elements.omega = this.longitudeOfAscendingNode;\r\n this._elements.jdEquinox = this.epoch;\r\n if (!this.meanDailyMotion) {\r\n this._elements.n = ELL.meanMotionFromSemiMajorAxis(this._elements.a);\r\n }\r\n else {\r\n this._elements.n = this.meanDailyMotion;\r\n }\r\n this._elements.t = this.epoch - (this.meanAnomolyAtEpoch / this._elements.n);\r\n return this._elements;\r\n },\r\n set_elements: function(value) {\r\n this._elements = value;\r\n return value;\r\n },\r\n computeFrame: function(renderContext) {\r\n switch (this.referenceFrameType) {\r\n case 1:\r\n this._computeOrbital(renderContext);\r\n break;\r\n case 0:\r\n this._computeFixedSherical(renderContext);\r\n break;\r\n case 2:\r\n this._computeFrameTrajectory(renderContext);\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n useRotatingParentFrame: function() {\r\n switch (this.referenceFrameType) {\r\n case 1:\r\n case 2:\r\n case 3:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n },\r\n _computeFixedRectangular: function(renderContext) {\r\n },\r\n _computeFixedSherical: function(renderContext) {\r\n if (this.observingLocation) {\r\n this.lat = SpaceTimeController.get_location().get_lat();\r\n this.lng = SpaceTimeController.get_location().get_lng();\r\n this.altitude = SpaceTimeController.get_altitude();\r\n }\r\n this.worldMatrix = Matrix3d.get_identity();\r\n this.worldMatrix.translate(this.translation);\r\n var localScale = (1 / renderContext.get_nominalRadius()) * this.scale * this.meanRadius;\r\n this.worldMatrix.scale(Vector3d.create(localScale, localScale, localScale));\r\n this.worldMatrix._multiply(Matrix3d.rotationYawPitchRoll((this.heading / 180 * Math.PI), (this.pitch / 180 * Math.PI), (this.roll / 180 * Math.PI)));\r\n this.worldMatrix._multiply(Matrix3d._rotationZ(-90 / 180 * Math.PI));\r\n if (!!this.rotationalPeriod) {\r\n var rotationCurrent = (((SpaceTimeController.get_jNow() - this.zeroRotationDate) / this.rotationalPeriod) * Math.PI * 2) % (Math.PI * 2);\r\n this.worldMatrix._multiply(Matrix3d._rotationX(-rotationCurrent));\r\n }\r\n this.worldMatrix.translate(Vector3d.create(1 + (this.altitude / renderContext.get_nominalRadius()), 0, 0));\r\n this.worldMatrix._multiply(Matrix3d._rotationZ(this.lat / 180 * Math.PI));\r\n this.worldMatrix._multiply(Matrix3d._rotationY(-(this.lng + 180) / 180 * Math.PI));\r\n },\r\n _computeFrameTrajectory: function(renderContext) {\r\n },\r\n _computeOrbital: function(renderContext) {\r\n var ee = this.get_elements();\r\n var point = ELL.calculateRectangularJD(SpaceTimeController.get_jNow(), ee);\r\n this.meanAnomoly = ee.meanAnnomolyOut;\r\n var pointInstantLater = ELL.calculateRectangular(ee, this.meanAnomoly + 0.001);\r\n var direction = Vector3d.subtractVectors(point, pointInstantLater);\r\n var up = point.copy();\r\n up.normalize();\r\n direction.normalize();\r\n var dist = point.length();\r\n var scaleFactor = 1;\r\n switch (this.semiMajorAxisUnits) {\r\n case 1:\r\n scaleFactor = 1;\r\n break;\r\n case 2:\r\n scaleFactor = 1 / 3.2808399;\r\n break;\r\n case 3:\r\n scaleFactor = (1 / 3.2808399) / 12;\r\n break;\r\n case 4:\r\n scaleFactor = 1609.344;\r\n break;\r\n case 5:\r\n scaleFactor = 1000;\r\n break;\r\n case 6:\r\n scaleFactor = 149598000 * 1000;\r\n break;\r\n case 7:\r\n scaleFactor = 63239.6717 * 149598000 * 1000;\r\n break;\r\n case 8:\r\n scaleFactor = 206264.806 * 149598000 * 1000;\r\n break;\r\n case 9:\r\n scaleFactor = 206264.806 * 149598000 * 1000 * 1000000;\r\n break;\r\n case 10:\r\n scaleFactor = 1;\r\n break;\r\n default:\r\n break;\r\n }\r\n scaleFactor *= 1 / renderContext.get_nominalRadius();\r\n var look = Matrix3d.lookAtLH(Vector3d.create(0, 0, 0), direction, up);\r\n look.invert();\r\n this.worldMatrix = Matrix3d.get_identity();\r\n this.worldMatrix.translate(this.translation);\r\n var localScale = (1 / renderContext.get_nominalRadius()) * this.scale * this.meanRadius;\r\n this.worldMatrix.scale(Vector3d.create(localScale, localScale, localScale));\r\n this.worldMatrix._multiply(Matrix3d.rotationYawPitchRoll((this.heading / 180 * Math.PI), (this.pitch / 180 * Math.PI), (this.roll / 180 * Math.PI)));\r\n if (!!this.rotationalPeriod) {\r\n var rotationCurrent = (((SpaceTimeController.get_jNow() - this.zeroRotationDate) / this.rotationalPeriod) * Math.PI * 2) % (Math.PI * 2);\r\n this.worldMatrix._multiply(Matrix3d._rotationX(-rotationCurrent));\r\n }\r\n point = Vector3d.scale(point, scaleFactor);\r\n this.worldMatrix.translate(point);\r\n if (this.stationKeeping) {\r\n this.worldMatrix = Matrix3d.multiplyMatrix(look, this.worldMatrix);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.KmlCoordinate\r\n\r\n function KmlCoordinate() {\r\n this.lat = 0;\r\n this.lng = 0;\r\n this.alt = 0;\r\n }\r\n var KmlCoordinate$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.KmlLineList\r\n\r\n function KmlLineList() {\r\n this.extrude = false;\r\n this.astronomical = false;\r\n this.meanRadius = 6371000;\r\n this.pointList = [];\r\n }\r\n var KmlLineList$ = {\r\n parseWkt: function(geoText, option, alt, date) {\r\n var parts = UiTools.split(geoText, '(,)');\r\n var $enum1 = ss.enumerate(parts);\r\n while ($enum1.moveNext()) {\r\n var part = $enum1.current;\r\n var coordinates = ss.trim(part).split(' ');\r\n if (coordinates.length > 1) {\r\n var pnt = new KmlCoordinate();\r\n pnt.lng = parseFloat(coordinates[0]);\r\n if (this.astronomical) {\r\n pnt.lng -= 180;\r\n }\r\n pnt.lat = parseFloat(coordinates[1]);\r\n if (coordinates.length > 2 && !alt) {\r\n pnt.alt = parseFloat(coordinates[2]);\r\n }\r\n else {\r\n pnt.alt = alt;\r\n }\r\n pnt.date = date;\r\n this.pointList.push(pnt);\r\n }\r\n }\r\n },\r\n getCenterPoint: function() {\r\n var point = new KmlCoordinate();\r\n point.lat = 0;\r\n point.lng = 0;\r\n point.alt = 0;\r\n var $enum1 = ss.enumerate(this.pointList);\r\n while ($enum1.moveNext()) {\r\n var pnt = $enum1.current;\r\n point.lat += pnt.lat;\r\n point.lng += pnt.lng;\r\n point.alt += pnt.alt;\r\n }\r\n point.lat /= this.pointList.length;\r\n point.lng /= this.pointList.length;\r\n point.alt /= this.pointList.length;\r\n return point;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PushPin\r\n\r\n function PushPin() {\r\n }\r\n PushPin.getPushPinTexture = function(pinId) {\r\n var texture = null;\r\n if (ss.keyExists(PushPin._pinTextureCache, pinId)) {\r\n return PushPin._pinTextureCache[pinId];\r\n }\r\n try {\r\n texture = Tile.prepDevice.createTexture();\r\n Tile.prepDevice.bindTexture(3553, texture);\r\n var row = Math.floor(pinId / 16);\r\n var col = pinId % 16;\r\n var temp = document.createElement('canvas');\r\n temp.height = 32;\r\n temp.width = 32;\r\n var ctx = temp.getContext('2d');\r\n ctx.drawImage(PushPin._pins.imageElement, (col * 32), (row * 32), 32, 32, 0, 0, 32, 32);\r\n var image = temp;\r\n Tile.prepDevice.texParameteri(3553, 10242, 33071);\r\n Tile.prepDevice.texParameteri(3553, 10243, 33071);\r\n Tile.prepDevice.texImage2D(3553, 0, 6408, 6408, 5121, image);\r\n Tile.prepDevice.texParameteri(3553, 10241, 9985);\r\n Tile.prepDevice.generateMipmap(3553);\r\n Tile.prepDevice.bindTexture(3553, null);\r\n PushPin._pinTextureCache[pinId] = texture;\r\n }\r\n catch ($e1) {\r\n }\r\n return texture;\r\n };\r\n var PushPin$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Table\r\n\r\n function Table() {\r\n this.guid = new Guid();\r\n this.header = [];\r\n this.rows = [];\r\n this.delimiter = '\\t';\r\n this.locked = false;\r\n }\r\n var Table$ = {\r\n lock: function() {\r\n this.locked = true;\r\n },\r\n unlock: function() {\r\n this.locked = false;\r\n },\r\n save: function() {\r\n var data = '';\r\n var first = true;\r\n var $enum1 = ss.enumerate(this.header);\r\n while ($enum1.moveNext()) {\r\n var col = $enum1.current;\r\n if (!first) {\r\n data += '\\t';\r\n }\r\n else {\r\n first = false;\r\n }\r\n data += col;\r\n }\r\n data += '\\r\\n';\r\n var $enum2 = ss.enumerate(this.rows);\r\n while ($enum2.moveNext()) {\r\n var row = $enum2.current;\r\n first = true;\r\n var $enum3 = ss.enumerate(row);\r\n while ($enum3.moveNext()) {\r\n var col = $enum3.current;\r\n if (!first) {\r\n data += '\\t';\r\n }\r\n else {\r\n first = false;\r\n }\r\n data += col;\r\n }\r\n data += '\\r\\n';\r\n }\r\n return data;\r\n },\r\n loadFromString: function(data, isUpdate, purge, hasHeader) {\r\n var count = 0;\r\n var lines = data.split('\\r\\n');\r\n if (!isUpdate || hasHeader) {\r\n if (lines.length > 0) {\r\n var headerLine = lines[0];\r\n count++;\r\n if (headerLine.indexOf('\\t') === -1 && headerLine.indexOf(',') > -1) {\r\n this.delimiter = ',';\r\n }\r\n if (!isUpdate) {\r\n this.rows.length = 0;\r\n }\r\n this.header = UiTools.splitString(headerLine, this.delimiter);\r\n }\r\n else {\r\n this.header = [];\r\n }\r\n }\r\n var temp = [];\r\n if (!purge) {\r\n temp = this.rows;\r\n }\r\n while (count < lines.length) {\r\n var line = lines[count];\r\n var rowData = UiTools.splitString(line, this.delimiter);\r\n if (rowData.length < 1) {\r\n break;\r\n }\r\n temp.push(rowData);\r\n count++;\r\n }\r\n if (purge) {\r\n this.rows = temp;\r\n }\r\n },\r\n clone: function() {\r\n var cloned_table = new Table();\r\n for (var i = 0; i < this.header.length; i++) {\r\n cloned_table.header.push(this.header[i]);\r\n }\r\n for (var j = 0; j < this.rows.length; j++) {\r\n cloned_table.rows.push([]);\r\n for (var i = 0; i < this.rows[j].length; i++) {\r\n cloned_table.rows[j].push(this.rows[j][i]);\r\n }\r\n }\r\n return cloned_table;\r\n },\r\n addColumn: function(name, data) {\r\n this.header.push(name);\r\n for (var i = 0; i < data.length; i++) {\r\n this.rows[i].push(data[i]);\r\n }\r\n },\r\n removeColumn: function(name) {\r\n var remove_index = this.header.indexOf(name);\r\n if (remove_index > -1) {\r\n this.header.splice(remove_index, 1);\r\n for (var i = 0; i < this.rows.length; i++) {\r\n this.rows[i].splice(remove_index, 1);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VoTable\r\n\r\n function VoTable() {\r\n this.columns = {};\r\n this.column = [];\r\n this.rows = [];\r\n this.loadFilename = '';\r\n this.sampId = '';\r\n this.selectedRow = null;\r\n this.error = false;\r\n this.errorText = '';\r\n }\r\n VoTable.loadFromUrl = function(url, complete) {\r\n var temp = new VoTable();\r\n temp._onComplete = complete;\r\n temp._webFile = new WebFile(URLHelpers.singleton.rewrite(url, 1));\r\n temp._webFile.onStateChange = ss.bind('_loadData', temp);\r\n temp._webFile.send();\r\n return temp;\r\n };\r\n VoTable.loadFromString = function(data) {\r\n var xParser = new DOMParser();\r\n var doc = xParser.parseFromString(data, 'text/xml');\r\n var table = new VoTable();\r\n table.loadFromXML(doc);\r\n return table;\r\n };\r\n var VoTable$ = {\r\n _loadData: function() {\r\n if (this._webFile.get_state() === 2) {\r\n alert(this._webFile.get_message());\r\n }\r\n else if (this._webFile.get_state() === 1) {\r\n this.loadFromXML(this._webFile.getXml());\r\n if (this._onComplete != null) {\r\n this._onComplete();\r\n }\r\n }\r\n },\r\n loadFromXML: function(xml) {\r\n var voTable = Util.selectSingleNode(xml, 'VOTABLE');\r\n if (voTable == null) {\r\n return;\r\n }\r\n var index = 0;\r\n try {\r\n var table = Util.selectSingleNode(Util.selectSingleNode(voTable, 'RESOURCE'), 'TABLE');\r\n if (table != null) {\r\n var $enum1 = ss.enumerate(table.childNodes);\r\n while ($enum1.moveNext()) {\r\n var node = $enum1.current;\r\n if (node.nodeName === 'FIELD') {\r\n var col = new VoColumn(node, index++);\r\n this.columns[col.name] = col;\r\n this.column.push(col);\r\n }\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n this.error = true;\r\n this.errorText = Util.selectSingleNode(voTable, 'DESCRIPTION').text;\r\n }\r\n try {\r\n var tableData = Util.selectSingleNode(Util.selectSingleNode(Util.selectSingleNode(Util.selectSingleNode(voTable, 'RESOURCE'), 'TABLE'), 'DATA'), 'TABLEDATA');\r\n if (tableData != null) {\r\n var $enum3 = ss.enumerate(tableData.childNodes);\r\n while ($enum3.moveNext()) {\r\n var node = $enum3.current;\r\n if (node.nodeName === 'TR') {\r\n var row = new VoRow(this);\r\n row.columnData = new Array(ss.keyCount(this.columns));\r\n index = 0;\r\n var $enum4 = ss.enumerate(node.childNodes);\r\n while ($enum4.moveNext()) {\r\n var child = $enum4.current;\r\n if (child.nodeName === 'TD') {\r\n row.columnData[index++] = ss.trim(Util.getInnerText(child));\r\n }\r\n }\r\n this.rows.push(row);\r\n }\r\n }\r\n }\r\n }\r\n catch ($e5) {\r\n }\r\n },\r\n save: function(filename) {\r\n return true;\r\n },\r\n getColumnByUcd: function(ucd) {\r\n var $enum1 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var col = this.columns[key];\r\n if (ss.replaceString(col.ucd, '_', '.').toLocaleLowerCase().indexOf(ucd.toLocaleLowerCase()) > -1) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n },\r\n getRAColumn: function() {\r\n var $enum1 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var col = this.columns[key];\r\n if (col.ucd.toLocaleLowerCase().indexOf('pos.eq.ra') > -1 || col.ucd.toLocaleLowerCase().indexOf('pos_eq_ra') > -1) {\r\n return col;\r\n }\r\n }\r\n var $enum2 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum2.moveNext()) {\r\n var key = $enum2.current;\r\n var col = this.columns[key];\r\n if (col.name.toLocaleLowerCase().indexOf('ra') > -1) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n },\r\n getDecColumn: function() {\r\n var $enum1 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var col = this.columns[key];\r\n if (col.ucd.toLowerCase().indexOf('pos.eq.dec') > -1 || col.ucd.toLowerCase().indexOf('pos_eq_dec') > -1) {\r\n return col;\r\n }\r\n }\r\n var $enum2 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum2.moveNext()) {\r\n var key = $enum2.current;\r\n var col = this.columns[key];\r\n if (col.name.toLowerCase().indexOf('dec') > -1) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n },\r\n getMagColumn: function() {\r\n var $enum1 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var col = this.columns[key];\r\n if (col.ucd.toLowerCase().indexOf('phot.mag') > -1 || col.ucd.toLowerCase().indexOf('phot_mag') > -1) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n },\r\n getDistanceColumn: function() {\r\n var $enum1 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var col = this.columns[key];\r\n if (col.ucd.toLowerCase().indexOf('pos.distance') > -1 || col.ucd.toLowerCase().indexOf('pos_distance') > -1) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n },\r\n toString: function() {\r\n var sb = new ss.StringBuilder();\r\n var first = true;\r\n var $enum1 = ss.enumerate(ss.keys(this.columns));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var col = this.columns[key];\r\n if (first) {\r\n first = false;\r\n }\r\n else {\r\n sb.append('\\t');\r\n }\r\n sb.append(col.name);\r\n }\r\n sb.appendLine('');\r\n var $enum2 = ss.enumerate(this.rows);\r\n while ($enum2.moveNext()) {\r\n var row = $enum2.current;\r\n first = true;\r\n var $enum3 = ss.enumerate(row.columnData);\r\n while ($enum3.moveNext()) {\r\n var col = $enum3.current;\r\n if (first) {\r\n first = false;\r\n }\r\n else {\r\n sb.append('\\t');\r\n }\r\n sb.append(col.toString());\r\n }\r\n sb.appendLine('');\r\n }\r\n return sb.toString();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VoRow\r\n\r\n function VoRow(owner) {\r\n this.selected = false;\r\n this.owner = owner;\r\n }\r\n var VoRow$ = {\r\n getColumnData: function(key) {\r\n if (this.owner.columns[key] != null) {\r\n return this.columnData[this.owner.columns[key].index];\r\n }\r\n return null;\r\n },\r\n get_item: function(index) {\r\n if (index < 0 || index >= this.columnData.length) {\r\n return null;\r\n }\r\n return this.columnData[index];\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VoColumn\r\n\r\n function VoColumn(node, index) {\r\n this.id = '';\r\n this.type = 0;\r\n this.precision = 0;\r\n this.dimentions = 0;\r\n this.sizes = null;\r\n this.ucd = '';\r\n this.unit = '';\r\n this.name = '';\r\n this.index = 0;\r\n this.index = index;\r\n if (node.attributes.getNamedItem('datatype') != null) {\r\n this.type = VoColumn.getType(node.attributes.getNamedItem('datatype').nodeValue);\r\n }\r\n if (node.attributes.getNamedItem('ucd') != null) {\r\n this.ucd = node.attributes.getNamedItem('ucd').nodeValue;\r\n }\r\n if (node.attributes.getNamedItem('precision') != null) {\r\n try {\r\n this.precision = parseInt(node.attributes.getNamedItem('precision').nodeValue);\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n if (node.attributes.getNamedItem('ID') != null) {\r\n this.id = node.attributes.getNamedItem('ID').nodeValue;\r\n }\r\n if (node.attributes.getNamedItem('name') != null) {\r\n this.name = node.attributes.getNamedItem('name').nodeValue;\r\n }\r\n else {\r\n this.name = this.id;\r\n }\r\n if (node.attributes.getNamedItem('unit') != null) {\r\n this.unit = node.attributes.getNamedItem('unit').nodeValue;\r\n }\r\n if (node.attributes.getNamedItem('arraysize') != null) {\r\n var split = node.attributes.getNamedItem('arraysize').nodeValue.split('x');\r\n this.dimentions = split.length;\r\n this.sizes = new Array(split.length);\r\n var indexer = 0;\r\n var $enum2 = ss.enumerate(split);\r\n while ($enum2.moveNext()) {\r\n var dim = $enum2.current;\r\n if (!(dim.indexOf('*') > -1)) {\r\n this.sizes[indexer++] = parseInt(dim);\r\n }\r\n else {\r\n var len = 9999;\r\n var lenString = ss.replaceString(dim, '*', '');\r\n if (lenString.length > 0) {\r\n len = parseInt(lenString);\r\n }\r\n this.sizes[indexer++] = len;\r\n }\r\n }\r\n }\r\n }\r\n VoColumn.getType = function(type) {\r\n var Type = 13;\r\n switch (type) {\r\n case 'boolean':\r\n Type = 1;\r\n break;\r\n case 'bit':\r\n Type = 2;\r\n break;\r\n case 'unsignedByte':\r\n Type = 3;\r\n break;\r\n case 'short':\r\n Type = 4;\r\n break;\r\n case 'int':\r\n Type = 5;\r\n break;\r\n case 'long':\r\n Type = 6;\r\n break;\r\n case 'char':\r\n Type = 7;\r\n break;\r\n case 'unicodeChar':\r\n Type = 8;\r\n break;\r\n case 'float':\r\n Type = 9;\r\n break;\r\n case 'double':\r\n Type = 10;\r\n break;\r\n case 'floatComplex':\r\n Type = 11;\r\n break;\r\n case 'doubleComplex':\r\n Type = 12;\r\n break;\r\n default:\r\n Type = 13;\r\n break;\r\n }\r\n return Type;\r\n };\r\n var VoColumn$ = {\r\n toString: function() {\r\n return this.name;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.WcsImage\r\n\r\n function WcsImage() {\r\n this.copyright = '';\r\n this.creditsUrl = '';\r\n this._validWcs = false;\r\n this.keywords = [];\r\n this.description = '';\r\n this.scaleX = 0;\r\n this.scaleY = 0;\r\n this.centerX = 0;\r\n this.centerY = 0;\r\n this.rotation = 0;\r\n this.referenceX = 0;\r\n this.referenceY = 0;\r\n this.sizeX = 0;\r\n this.sizeY = 0;\r\n this.cd1_1 = 0;\r\n this.cd1_2 = 0;\r\n this.cd2_1 = 0;\r\n this.cd2_2 = 0;\r\n this.hasRotation = false;\r\n this.hasSize = false;\r\n this.hasScale = false;\r\n this.hasLocation = false;\r\n this.hasPixel = false;\r\n this.filename = '';\r\n this._colorCombine = false;\r\n }\r\n var WcsImage$ = {\r\n get_copyright: function() {\r\n return this.copyright;\r\n },\r\n set_copyright: function(value) {\r\n this.copyright = value;\r\n return value;\r\n },\r\n get_creditsUrl: function() {\r\n return this.creditsUrl;\r\n },\r\n set_creditsUrl: function(value) {\r\n this.creditsUrl = value;\r\n return value;\r\n },\r\n get_validWcs: function() {\r\n return this._validWcs;\r\n },\r\n set_validWcs: function(value) {\r\n this._validWcs = value;\r\n return value;\r\n },\r\n get_keywords: function() {\r\n if (!this.keywords.length) {\r\n this.keywords.push('Image File');\r\n }\r\n return this.keywords;\r\n },\r\n set_keywords: function(value) {\r\n this.keywords = value;\r\n return value;\r\n },\r\n get_description: function() {\r\n return this.description;\r\n },\r\n set_description: function(value) {\r\n this.description = value;\r\n return value;\r\n },\r\n get_scaleX: function() {\r\n return this.scaleX;\r\n },\r\n set_scaleX: function(value) {\r\n this.scaleX = value;\r\n return value;\r\n },\r\n get_scaleY: function() {\r\n return this.scaleY;\r\n },\r\n set_scaleY: function(value) {\r\n this.scaleY = value;\r\n return value;\r\n },\r\n get_centerX: function() {\r\n return this.centerX;\r\n },\r\n set_centerX: function(value) {\r\n this.centerX = value;\r\n return value;\r\n },\r\n get_viewCenterX: function() {\r\n return this.centerX + (this.get_sizeX() / 2 - this.get_referenceX()) * this.get_scaleX();\r\n },\r\n get_centerY: function() {\r\n return this.centerY;\r\n },\r\n set_centerY: function(value) {\r\n this.centerY = value;\r\n return value;\r\n },\r\n get_viewCenterY: function() {\r\n return this.centerY + (this.get_sizeY() / 2 - this.get_referenceY()) * this.get_scaleY();\r\n },\r\n get_rotation: function() {\r\n return this.rotation;\r\n },\r\n set_rotation: function(value) {\r\n this.rotation = value;\r\n return value;\r\n },\r\n get_referenceX: function() {\r\n return this.referenceX;\r\n },\r\n set_referenceX: function(value) {\r\n this.referenceX = value;\r\n return value;\r\n },\r\n get_referenceY: function() {\r\n return this.referenceY;\r\n },\r\n set_referenceY: function(value) {\r\n this.referenceY = value;\r\n return value;\r\n },\r\n get_sizeX: function() {\r\n return this.sizeX;\r\n },\r\n set_sizeX: function(value) {\r\n this.sizeX = value;\r\n return value;\r\n },\r\n get_sizeY: function() {\r\n return this.sizeY;\r\n },\r\n set_sizeY: function(value) {\r\n this.sizeY = value;\r\n return value;\r\n },\r\n get_cd1_1: function() {\r\n return this.cd1_1;\r\n },\r\n set_cd1_1: function(value) {\r\n this.cd1_1 = value;\r\n return value;\r\n },\r\n get_cd1_2: function() {\r\n return this.cd1_2;\r\n },\r\n set_cd1_2: function(value) {\r\n this.cd1_2 = value;\r\n return value;\r\n },\r\n get_cd2_1: function() {\r\n return this.cd2_1;\r\n },\r\n set_cd2_1: function(value) {\r\n this.cd2_1 = value;\r\n return value;\r\n },\r\n get_cd2_2: function() {\r\n return this.cd2_2;\r\n },\r\n set_cd2_2: function(value) {\r\n this.cd2_2 = value;\r\n return value;\r\n },\r\n adjustScale: function(width, height) {\r\n if (width !== this.sizeX) {\r\n this.scaleX *= (this.sizeX / width);\r\n this.referenceX /= (this.sizeX / width);\r\n this.sizeX = width;\r\n }\r\n if (height !== this.sizeY) {\r\n this.scaleY *= (this.sizeY / height);\r\n this.referenceY /= (this.sizeY / height);\r\n this.sizeY = height;\r\n }\r\n },\r\n calculateScaleFromCD: function() {\r\n this.scaleX = (Math.sqrt(this.cd1_1 * this.cd1_1 + this.cd2_1 * this.cd2_1) * (this.cd1_1 * this.cd2_2 - this.cd1_2 * this.cd2_1) < 0) ? -1 : 1;\r\n this.scaleY = Math.sqrt(this.cd1_2 * this.cd1_2 + this.cd2_2 * this.cd2_2);\r\n },\r\n calculateRotationFromCD: function() {\r\n var sign = ((this.cd1_1 * this.cd2_2 - this.cd1_2 * this.cd2_1) < 0) ? -1 : 1;\r\n var rot2 = Math.atan2((-sign * this.cd1_2), this.cd2_2);\r\n this.rotation = rot2 / Math.PI * 180;\r\n },\r\n get_filename: function() {\r\n return this.filename;\r\n },\r\n set_filename: function(value) {\r\n this.filename = value;\r\n return value;\r\n },\r\n get_colorCombine: function() {\r\n return this._colorCombine;\r\n },\r\n set_colorCombine: function(value) {\r\n this._colorCombine = value;\r\n return value;\r\n },\r\n getBitmap: function() {\r\n return null;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.MainView\r\n\r\n function MainView() {\r\n }\r\n MainView._drawTest = function() {\r\n var canvas = document.getElementById('canvas');\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgb(80,0,0)';\r\n ctx.fillRect(120, 120, 165, 160);\r\n ctx.fillStyle = 'rgba(0, 0, 160, 0.5)';\r\n ctx.fillRect(140, 140, 165, 160);\r\n };\r\n\r\n\r\n // wwtlib.MinorPlanets\r\n\r\n function MinorPlanets() {\r\n }\r\n MinorPlanets.getMpcFile = function(url) {\r\n MinorPlanets._webMpcFile = new WebFile(url);\r\n MinorPlanets._webMpcFile.responseType = 'blob';\r\n MinorPlanets._webMpcFile.onStateChange = MinorPlanets.starFileStateChange;\r\n MinorPlanets._webMpcFile.send();\r\n };\r\n MinorPlanets.starFileStateChange = function() {\r\n if (MinorPlanets._webMpcFile.get_state() === 2) {\r\n alert(MinorPlanets._webMpcFile.get_message());\r\n }\r\n else if (MinorPlanets._webMpcFile.get_state() === 1) {\r\n var mainBlob = MinorPlanets._webMpcFile.getBlob();\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n MinorPlanets._readFromBin(new BinaryReader(new Uint8Array(chunck.result)));\r\n MinorPlanets.initMPCVertexBuffer();\r\n };\r\n chunck.readAsArrayBuffer(mainBlob);\r\n }\r\n };\r\n MinorPlanets._readFromBin = function(br) {\r\n MinorPlanets.mpcList = [];\r\n var len = br.get_length();\r\n var ee;\r\n try {\r\n while (br.get_position() < len) {\r\n ee = EOE._create(br);\r\n MinorPlanets.mpcList.push(ee);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n br.close();\r\n };\r\n MinorPlanets.drawMPC3D = function(renderContext, opacity, centerPoint) {\r\n var zoom = renderContext.viewCamera.zoom;\r\n var distAlpha = ((Math.log(Math.max(1, zoom)) / Math.log(4)) - 15.5) * 90;\r\n var alpha = Math.min(255, Math.max(0, ss.truncate(distAlpha)));\r\n if (alpha > 254) {\r\n return;\r\n }\r\n if (MinorPlanets._mpcVertexBuffer == null) {\r\n if (MinorPlanets.starTexture == null) {\r\n MinorPlanets.starTexture = Planets.loadPlanetTexture(URLHelpers.singleton.engineAssetUrl('StarProfileAlpha.png'));\r\n }\r\n for (var i = 0; i < 7; i++) {\r\n MinorPlanets._mpcBlendStates[i] = BlendState.create(false, 1000);\r\n }\r\n if (!MinorPlanets._initBegun) {\r\n MinorPlanets._startInit();\r\n MinorPlanets._initBegun = true;\r\n }\r\n return;\r\n }\r\n var offset = Matrix3d.translation(Vector3d.negate(centerPoint));\r\n var world = Matrix3d.multiplyMatrix(renderContext.get_world(), offset);\r\n var matrixWV = Matrix3d.multiplyMatrix(world, renderContext.get_view());\r\n var cam = Vector3d._transformCoordinate(renderContext.cameraPosition, Matrix3d.invertMatrix(renderContext.get_world()));\r\n if (MinorPlanets._mpcVertexBuffer != null) {\r\n for (var i = 0; i < 7; i++) {\r\n MinorPlanets._mpcBlendStates[i].set_targetState(true);\r\n if (MinorPlanets._mpcBlendStates[i].get_state()) {\r\n KeplerPointSpriteShader.use(renderContext, matrixWV, MinorPlanets._mpcVertexBuffer[i].vertexBuffer, MinorPlanets.starTexture.texture2d, Colors.get_white(), opacity * MinorPlanets._mpcBlendStates[i].get_opacity(), false, (SpaceTimeController.get_jNow() - KeplerVertex.baseDate), 0, renderContext.cameraPosition, 200, 0.1);\r\n renderContext.gl.drawArrays(0, 0, MinorPlanets._mpcVertexBuffer[i].count);\r\n }\r\n }\r\n }\r\n };\r\n MinorPlanets._startInit = function() {\r\n MinorPlanets.getMpcFile(URLHelpers.singleton.coreStaticUrl('wwtweb/catalog.aspx?Q=mpcbin'));\r\n };\r\n MinorPlanets.initMPCVertexBuffer = function() {\r\n try {\r\n if (MinorPlanets._mpcVertexBuffer == null) {\r\n var mpcVertexBufferTemp = new Array(7);\r\n MinorPlanets._mpcCount = MinorPlanets.mpcList.length;\r\n var lists = new Array(7);\r\n for (var i = 0; i < 7; i++) {\r\n lists[i] = [];\r\n }\r\n var $enum1 = ss.enumerate(MinorPlanets.mpcList);\r\n while ($enum1.moveNext()) {\r\n var ee = $enum1.current;\r\n var listID = 0;\r\n if (ee.a < 2.5) {\r\n listID = 0;\r\n }\r\n else if (ee.a < 2.83) {\r\n listID = 1;\r\n }\r\n else if (ee.a < 2.96) {\r\n listID = 2;\r\n }\r\n else if (ee.a < 3.3) {\r\n listID = 3;\r\n }\r\n else if (ee.a < 5) {\r\n listID = 4;\r\n }\r\n else if (ee.a < 10) {\r\n listID = 5;\r\n }\r\n else {\r\n listID = 6;\r\n }\r\n var vert = new KeplerVertex();\r\n vert.fill(ee);\r\n lists[listID].push(vert);\r\n }\r\n for (var i = 0; i < 7; i++) {\r\n mpcVertexBufferTemp[i] = KeplerVertexBuffer.create(lists[i]);\r\n mpcVertexBufferTemp[i].unlock();\r\n }\r\n MinorPlanets._mpcVertexBuffer = mpcVertexBufferTemp;\r\n }\r\n }\r\n finally {\r\n }\r\n };\r\n var MinorPlanets$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Place\r\n\r\n function Place() {\r\n this._camParams = CameraParameters.create(0, 0, -1, 0, 0, 100);\r\n this._location3d = Vector3d.create(0, 0, 0);\r\n this.htmlDescription = '';\r\n this._constellation = '';\r\n this._classification = 1048576;\r\n this._type = 2;\r\n this._magnitude = 0;\r\n this._distnace = 0;\r\n this.angularSize = 60;\r\n this.annotation = '';\r\n this._thumbNail = null;\r\n this._studyImageset = null;\r\n this._backgroundImageSet = null;\r\n this._searchDistance = 0;\r\n this._elevation = 50;\r\n }\r\n Place.create = function(name, lat, lng, classification, constellation, type, zoomFactor) {\r\n var temp = new Place();\r\n temp.set_zoomLevel(zoomFactor);\r\n temp._constellation = constellation;\r\n temp._name = name;\r\n if (type === 2 || type === 4) {\r\n temp._camParams.set_RA(lng);\r\n }\r\n else {\r\n temp.set_lng(lng);\r\n }\r\n temp.set_lat(lat);\r\n temp.set_classification(classification);\r\n temp.set_type(type);\r\n return temp;\r\n };\r\n Place.createCameraParams = function(name, camParams, classification, constellation, type, target) {\r\n var temp = new Place();\r\n temp._constellation = constellation;\r\n temp._name = name;\r\n temp.set_classification(classification);\r\n temp._camParams = camParams;\r\n temp.set_type(type);\r\n temp.set_target(target);\r\n return temp;\r\n };\r\n Place._fromXml = function(place) {\r\n var newPlace = new Place();\r\n newPlace._name = place.attributes.getNamedItem('Name').nodeValue;\r\n if (place.attributes.getNamedItem('MSRComponentId') != null && place.attributes.getNamedItem('Permission') != null && place.attributes.getNamedItem('Url') != null) {\r\n newPlace.set_url(place.attributes.getNamedItem('Url').nodeValue);\r\n newPlace.set_thumbnailUrl(place.attributes.getNamedItem('Thumbnail').nodeValue);\r\n return newPlace;\r\n }\r\n if (place.attributes.getNamedItem('DataSetType') != null) {\r\n newPlace._type = Enums.parse('ImageSetType', place.attributes.getNamedItem('DataSetType').nodeValue);\r\n }\r\n if (newPlace.get_type() === 2) {\r\n newPlace._camParams.set_RA(parseFloat(place.attributes.getNamedItem('RA').nodeValue));\r\n newPlace._camParams.set_dec(parseFloat(place.attributes.getNamedItem('Dec').nodeValue));\r\n }\r\n else {\r\n newPlace.set_lat(parseFloat(place.attributes.getNamedItem('Lat').nodeValue));\r\n newPlace.set_lng(parseFloat(place.attributes.getNamedItem('Lng').nodeValue));\r\n }\r\n if (place.attributes.getNamedItem('Constellation') != null) {\r\n newPlace._constellation = place.attributes.getNamedItem('Constellation').nodeValue;\r\n }\r\n if (place.attributes.getNamedItem('Classification') != null) {\r\n newPlace._classification = Enums.parse('Classification', place.attributes.getNamedItem('Classification').nodeValue);\r\n }\r\n if (place.attributes.getNamedItem('Magnitude') != null) {\r\n newPlace._magnitude = parseFloat(place.attributes.getNamedItem('Magnitude').nodeValue);\r\n }\r\n if (place.attributes.getNamedItem('AngularSize') != null) {\r\n newPlace.angularSize = parseFloat(place.attributes.getNamedItem('AngularSize').nodeValue);\r\n }\r\n if (place.attributes.getNamedItem('ZoomLevel') != null) {\r\n newPlace.set_zoomLevel(parseFloat(place.attributes.getNamedItem('ZoomLevel').nodeValue));\r\n }\r\n if (place.attributes.getNamedItem('Rotation') != null) {\r\n newPlace._camParams.rotation = parseFloat(place.attributes.getNamedItem('Rotation').nodeValue);\r\n }\r\n if (place.attributes.getNamedItem('Annotation') != null) {\r\n newPlace.annotation = place.attributes.getNamedItem('Annotation').nodeValue;\r\n }\r\n if (place.attributes.getNamedItem('Angle') != null) {\r\n newPlace._camParams.angle = parseFloat(place.attributes.getNamedItem('Angle').nodeValue);\r\n }\r\n if (place.attributes.getNamedItem('Opacity') != null) {\r\n newPlace._camParams.opacity = parseFloat(place.attributes.getNamedItem('Opacity').nodeValue);\r\n }\r\n else {\r\n newPlace._camParams.opacity = 100;\r\n }\r\n newPlace.set_target(65536);\r\n if (place.attributes.getNamedItem('Target') != null) {\r\n newPlace.set_target(Enums.parse('SolarSystemObjects', place.attributes.getNamedItem('Target').nodeValue));\r\n }\r\n if (place.attributes.getNamedItem('ViewTarget') != null) {\r\n newPlace._camParams.viewTarget = Vector3d.parse(place.attributes.getNamedItem('ViewTarget').nodeValue);\r\n }\r\n if (place.attributes.getNamedItem('TargetReferenceFrame') != null) {\r\n newPlace._camParams.targetReferenceFrame = place.attributes.getNamedItem('TargetReferenceFrame').nodeValue;\r\n }\r\n var descriptionNode = Util.selectSingleNode(place, 'Description');\r\n if (descriptionNode != null) {\r\n newPlace.htmlDescription = Util.getInnerText(descriptionNode);\r\n }\r\n var backgroundImageSet = Util.selectSingleNode(place, 'BackgroundImageSet');\r\n if (backgroundImageSet != null) {\r\n var imageSet = Util.selectSingleNode(backgroundImageSet, 'ImageSet');\r\n newPlace._backgroundImageSet = Imageset.fromXMLNode(imageSet);\r\n }\r\n var study = Util.selectSingleNode(place, 'ForegroundImageSet');\r\n if (study != null) {\r\n var imageSet = Util.selectSingleNode(study, 'ImageSet');\r\n newPlace._studyImageset = Imageset.fromXMLNode(imageSet);\r\n }\r\n study = Util.selectSingleNode(place, 'ImageSet');\r\n if (study != null) {\r\n newPlace._studyImageset = Imageset.fromXMLNode(study);\r\n }\r\n return newPlace;\r\n };\r\n Place._properCaps = function(name) {\r\n var list = name.split(' ');\r\n var ProperName = '';\r\n var $enum1 = ss.enumerate(list);\r\n while ($enum1.moveNext()) {\r\n var part = $enum1.current;\r\n ProperName = ProperName + part.substr(0, 1).toUpperCase() + ((part.length > 1) ? part.substr(1).toLowerCase() : '') + ' ';\r\n }\r\n return ss.trim(ProperName);\r\n };\r\n var Place$ = {\r\n get_tag: function() {\r\n return this._tag;\r\n },\r\n set_tag: function(value) {\r\n this._tag = value;\r\n return value;\r\n },\r\n get_url: function() {\r\n return this._url;\r\n },\r\n set_url: function(value) {\r\n this._url = value;\r\n return value;\r\n },\r\n get_thumbnail: function() {\r\n return this._thumbnail;\r\n },\r\n set_thumbnail: function(value) {\r\n this._thumbnail = value;\r\n return value;\r\n },\r\n get_name: function() {\r\n return this.get_names()[0];\r\n },\r\n get_names: function() {\r\n if (ss.emptyString(this._name)) {\r\n return ''.split(';');\r\n }\r\n return this._name.split(';');\r\n },\r\n set_names: function(value) {\r\n this._name = UiTools.getNamesStringFromArray(value);\r\n return value;\r\n },\r\n get_camParams: function() {\r\n if (this.get_classification() === 536870912 && this._camParams.target !== 20) {\r\n var raDec = Planets.getPlanetLocation(this.get_name());\r\n this._camParams.set_RA(raDec.RA);\r\n this._camParams.set_dec(raDec.dec);\r\n this._distnace = raDec.distance;\r\n }\r\n return this._camParams;\r\n },\r\n set_camParams: function(value) {\r\n this._camParams = value;\r\n return value;\r\n },\r\n updatePlanetLocation: function(jNow) {\r\n this._camParams.viewTarget = Planets.getPlanet3dLocationJD(this.get_target(), jNow);\r\n if (this.get_target() !== 65536 && this.get_target() !== 20) {\r\n this._camParams.viewTarget = Planets.getPlanetTargetPoint(this.get_target(), this.get_lat(), this.get_lng(), jNow);\r\n }\r\n },\r\n get_location3d: function() {\r\n if (this.get_classification() === 536870912 || (!this._location3d.x && !this._location3d.y && !this._location3d.z)) {\r\n this._location3d = Coordinates.raDecTo3d(this.get_RA(), this.get_dec());\r\n }\r\n return this._location3d;\r\n },\r\n get_lat: function() {\r\n return this.get_camParams().lat;\r\n },\r\n set_lat: function(value) {\r\n this._camParams.lat = value;\r\n return value;\r\n },\r\n get_lng: function() {\r\n return this.get_camParams().lng;\r\n },\r\n set_lng: function(value) {\r\n this._camParams.lng = value;\r\n return value;\r\n },\r\n get_opacity: function() {\r\n return this.get_camParams().opacity;\r\n },\r\n set_opacity: function(value) {\r\n this._camParams.opacity = value;\r\n return value;\r\n },\r\n get_constellation: function() {\r\n return this._constellation;\r\n },\r\n set_constellation: function(value) {\r\n this._constellation = value;\r\n return value;\r\n },\r\n get_classification: function() {\r\n return this._classification;\r\n },\r\n set_classification: function(value) {\r\n this._classification = value;\r\n return value;\r\n },\r\n get_type: function() {\r\n return this._type;\r\n },\r\n set_type: function(value) {\r\n this._type = value;\r\n return value;\r\n },\r\n get_magnitude: function() {\r\n return this._magnitude;\r\n },\r\n set_magnitude: function(value) {\r\n this._magnitude = value;\r\n return value;\r\n },\r\n get_distance: function() {\r\n return this._distnace;\r\n },\r\n set_distance: function(value) {\r\n this._distnace = value;\r\n return value;\r\n },\r\n get_zoomLevel: function() {\r\n return this.get_camParams().zoom;\r\n },\r\n set_zoomLevel: function(value) {\r\n this._camParams.zoom = value;\r\n return value;\r\n },\r\n get_annotation: function() {\r\n return this.annotation;\r\n },\r\n set_annotation: function(value) {\r\n this.annotation = value;\r\n return value;\r\n },\r\n get_studyImageset: function() {\r\n return this._studyImageset;\r\n },\r\n set_studyImageset: function(value) {\r\n this._studyImageset = value;\r\n return value;\r\n },\r\n get_backgroundImageset: function() {\r\n return this._backgroundImageSet;\r\n },\r\n set_backgroundImageset: function(value) {\r\n if (value != null) {\r\n this.set_type(value.get_dataSetType());\r\n }\r\n this._backgroundImageSet = value;\r\n return value;\r\n },\r\n get_searchDistance: function() {\r\n return this._searchDistance;\r\n },\r\n set_searchDistance: function(value) {\r\n this._searchDistance = value;\r\n return value;\r\n },\r\n get_elevation: function() {\r\n return this._elevation;\r\n },\r\n set_elevation: function(value) {\r\n this._elevation = value;\r\n return value;\r\n },\r\n get_thumbnailUrl: function() {\r\n if (ss.emptyString(this._thumbnailField)) {\r\n if (this._studyImageset != null && !ss.emptyString(this._studyImageset.get_thumbnailUrl())) {\r\n return this._studyImageset.get_thumbnailUrl();\r\n }\r\n if (this._backgroundImageSet != null && !ss.emptyString(this._backgroundImageSet.get_thumbnailUrl())) {\r\n return this._backgroundImageSet.get_thumbnailUrl();\r\n }\r\n var name = this.get_name();\r\n if (name.indexOf(';') > -1) {\r\n name = name.substr(0, name.indexOf(';'));\r\n }\r\n if (this.get_classification() === 1) {\r\n return URLHelpers.singleton.coreStaticUrl('wwtweb/thumbnail.aspx?name=star');\r\n }\r\n return URLHelpers.singleton.coreStaticUrl('wwtweb/thumbnail.aspx?name=' + name.toLowerCase());\r\n }\r\n return this._thumbnailField;\r\n },\r\n set_thumbnailUrl: function(value) {\r\n this._thumbnailField = value;\r\n return value;\r\n },\r\n get_RA: function() {\r\n return this.get_camParams().get_RA();\r\n },\r\n set_RA: function(value) {\r\n this._camParams.set_RA(value);\r\n return value;\r\n },\r\n get_dec: function() {\r\n return this.get_camParams().get_dec();\r\n },\r\n set_dec: function(value) {\r\n this._camParams.set_dec(value);\r\n return value;\r\n },\r\n toString: function() {\r\n return this._name;\r\n },\r\n _saveToXml: function(xmlWriter, elementName) {\r\n xmlWriter._writeStartElement(elementName);\r\n xmlWriter._writeAttributeString('Name', this._name);\r\n xmlWriter._writeAttributeString('DataSetType', Enums.toXml('ImageSetType', this._type));\r\n if (this.get_type() === 2) {\r\n xmlWriter._writeAttributeString('RA', this._camParams.get_RA().toString());\r\n xmlWriter._writeAttributeString('Dec', this._camParams.get_dec().toString());\r\n }\r\n else {\r\n xmlWriter._writeAttributeString('Lat', this.get_lat().toString());\r\n xmlWriter._writeAttributeString('Lng', this.get_lng().toString());\r\n }\r\n xmlWriter._writeAttributeString('Constellation', this._constellation);\r\n xmlWriter._writeAttributeString('Classification', Enums.toXml('Classification', this._classification));\r\n xmlWriter._writeAttributeString('Magnitude', this._magnitude.toString());\r\n xmlWriter._writeAttributeString('Distance', this._distnace.toString());\r\n xmlWriter._writeAttributeString('AngularSize', this.angularSize.toString());\r\n xmlWriter._writeAttributeString('ZoomLevel', this.get_zoomLevel().toString());\r\n xmlWriter._writeAttributeString('Rotation', this._camParams.rotation.toString());\r\n xmlWriter._writeAttributeString('Angle', this._camParams.angle.toString());\r\n xmlWriter._writeAttributeString('Opacity', this._camParams.opacity.toString());\r\n xmlWriter._writeAttributeString('Target', Enums.toXml('SolarSystemObjects', this.get_target()));\r\n xmlWriter._writeAttributeString('ViewTarget', this._camParams.viewTarget.toString());\r\n xmlWriter._writeAttributeString('TargetReferenceFrame', this._camParams.targetReferenceFrame);\r\n xmlWriter._writeStartElement('Description');\r\n xmlWriter._writeCData(this.htmlDescription);\r\n xmlWriter._writeEndElement();\r\n if (this._backgroundImageSet != null) {\r\n xmlWriter._writeStartElement('BackgroundImageSet');\r\n Imageset.saveToXml(xmlWriter, this._backgroundImageSet, '');\r\n xmlWriter._writeEndElement();\r\n }\r\n if (this._studyImageset != null) {\r\n Imageset.saveToXml(xmlWriter, this._studyImageset, '');\r\n }\r\n xmlWriter._writeEndElement();\r\n },\r\n get_bounds: function() {\r\n return this._bounds;\r\n },\r\n set_bounds: function(value) {\r\n this._bounds = value;\r\n return value;\r\n },\r\n get_isImage: function() {\r\n return this._studyImageset != null || this._backgroundImageSet != null;\r\n },\r\n get_isTour: function() {\r\n return false;\r\n },\r\n get_isFolder: function() {\r\n return false;\r\n },\r\n get_children: function() {\r\n return [];\r\n },\r\n get_readOnly: function() {\r\n return true;\r\n },\r\n get_target: function() {\r\n return this._camParams.target;\r\n },\r\n set_target: function(value) {\r\n this._camParams.target = value;\r\n return value;\r\n },\r\n get_isCloudCommunityItem: function() {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.KeplerianElements\r\n\r\n function KeplerianElements() {\r\n this.a = 0;\r\n this.e = 0;\r\n this.ea = 0;\r\n }\r\n var KeplerianElements$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.BodyAngles\r\n\r\n function BodyAngles(poleRa, poleDec, primeMeridian, rotationRate) {\r\n this.poleDec = 0;\r\n this.poleRa = 0;\r\n this.primeMeridian = 0;\r\n this.rotationRate = 0;\r\n this.poleDec = poleDec;\r\n this.poleRa = poleRa;\r\n this.primeMeridian = primeMeridian;\r\n this.rotationRate = rotationRate;\r\n }\r\n var BodyAngles$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Planets\r\n\r\n function Planets() {\r\n }\r\n Planets.loadPlanetTexture = function(url) {\r\n var texture = new Texture();\r\n texture.load(url);\r\n return texture;\r\n };\r\n Planets.getPlanet3dLocation = function(target) {\r\n try {\r\n if (target < 21) {\r\n return Planets._planet3dLocations[target].copy();\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n return Vector3d.create(0, 0, 0);\r\n };\r\n Planets.getPlanet3dSufaceAltitude = function(target) {\r\n try {\r\n if (target < 21) {\r\n return Planets.getAdjustedPlanetRadius(target);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n return 0;\r\n };\r\n Planets.getPlanetTargetPoint = function(target, lat, lng, jNow) {\r\n var temp;\r\n if (!jNow) {\r\n temp = Planets.getPlanet3dLocation(target);\r\n }\r\n else {\r\n temp = Planets.getPlanet3dLocationJD(target, jNow);\r\n }\r\n temp.add(Coordinates.raDecTo3dAu((lng / 15) + 6, lat, Planets.getPlanet3dSufaceAltitude(target)));\r\n return temp;\r\n };\r\n Planets.getPlanet3dLocationJD = function(target, jNow) {\r\n try {\r\n var result = new Vector3d();\r\n var centerRaDec = AstroCalc.getPlanet(jNow, 0, 0, 0, -6378149);\r\n var center = Coordinates.raDecTo3dAu(centerRaDec.RA, centerRaDec.dec, centerRaDec.distance);\r\n if (target === 19) {\r\n result = Vector3d.create(-center.x, -center.y, -center.z);\r\n }\r\n else {\r\n var planet = AstroCalc.getPlanet(jNow, target, 0, 0, -6378149);\r\n result = Coordinates.raDecTo3dAu(planet.RA, planet.dec, planet.distance);\r\n result.subtract(center);\r\n }\r\n result.rotateX(Coordinates.meanObliquityOfEcliptic(jNow) * Planets.RC);\r\n if (Settings.get_active().get_solarSystemScale() !== 1) {\r\n switch (target) {\r\n case 9:\r\n var parent = Planets.getPlanet3dLocationJD(19, jNow);\r\n result.subtract(parent);\r\n result.multiply(Settings.get_active().get_solarSystemScale() / 2);\r\n result.add(parent);\r\n break;\r\n case 10:\r\n case 11:\r\n case 12:\r\n case 13:\r\n var parent = Planets.getPlanet3dLocationJD(4, jNow);\r\n result.subtract(parent);\r\n result.multiply(Settings.get_active().get_solarSystemScale());\r\n result.add(parent);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n catch ($e1) {\r\n return Vector3d.create(0, 0, 0);\r\n }\r\n };\r\n Planets.getPlanetLocation = function(name) {\r\n var id = Planets.getPlanetIDFromName(name);\r\n if (Planets._planetLocations != null) {\r\n return Planets._planetLocations[id];\r\n }\r\n else {\r\n return AstroCalc.getPlanet(SpaceTimeController.get_jNow(), id, SpaceTimeController.get_location().get_lat(), SpaceTimeController.get_location().get_lng(), SpaceTimeController.get_altitude());\r\n }\r\n };\r\n Planets.getPlanetLocationJD = function(name, jNow) {\r\n var id = Planets.getPlanetIDFromName(name);\r\n return AstroCalc.getPlanet(jNow, id, SpaceTimeController.get_location().get_lat(), SpaceTimeController.get_location().get_lng(), SpaceTimeController.get_altitude());\r\n };\r\n Planets.getPlanetIDFromName = function(planetName) {\r\n switch (planetName) {\r\n case 'Sun':\r\n return 0;\r\n case 'Mercury':\r\n return 1;\r\n case 'Venus':\r\n return 2;\r\n case 'Mars':\r\n return 3;\r\n case 'Jupiter':\r\n return 4;\r\n case 'Saturn':\r\n return 5;\r\n case 'Uranus':\r\n return 6;\r\n case 'Neptune':\r\n return 7;\r\n case 'Pluto':\r\n return 8;\r\n case 'Moon':\r\n return 9;\r\n case 'Io':\r\n return 10;\r\n case 'Europa':\r\n return 11;\r\n case 'Ganymede':\r\n return 12;\r\n case 'Callisto':\r\n return 13;\r\n case 'Earth':\r\n return 19;\r\n case 'IoShadow':\r\n return 14;\r\n case 'EuropaShadow':\r\n return 15;\r\n case 'GanymedeShadow':\r\n return 16;\r\n case 'CallistoShadow':\r\n return 17;\r\n case 'SunEclipsed':\r\n return 18;\r\n case 'Custom':\r\n return 20;\r\n case 'Undefined':\r\n return 65536;\r\n default:\r\n return -1;\r\n }\r\n };\r\n Planets.getImageSetNameNameFrom3dId = function(id) {\r\n switch (id) {\r\n case 0:\r\n return 'Sun';\r\n case 1:\r\n return 'Mercury';\r\n case 2:\r\n return 'Venus';\r\n case 3:\r\n return 'Visible Imagery';\r\n case 4:\r\n return 'Jupiter';\r\n case 5:\r\n return 'Saturn';\r\n case 6:\r\n return 'Uranus';\r\n case 7:\r\n return 'Neptune';\r\n case 8:\r\n return 'Pluto';\r\n case 9:\r\n return 'Moon';\r\n case 10:\r\n return 'Io (Jupiter)';\r\n case 11:\r\n return 'Europa (Jupiter)';\r\n case 12:\r\n return 'Ganymede (Jupiter)';\r\n case 13:\r\n return 'Callisto (Jupiter)';\r\n case 19:\r\n return 'Bing Maps Aerial';\r\n default:\r\n return '';\r\n }\r\n };\r\n Planets.getNameFrom3dId = function(id) {\r\n switch (id) {\r\n case 0:\r\n return 'Sun';\r\n case 1:\r\n return 'Mercury';\r\n case 2:\r\n return 'Venus';\r\n case 3:\r\n return 'Mars';\r\n case 4:\r\n return 'Jupiter';\r\n case 5:\r\n return 'Saturn';\r\n case 6:\r\n return 'Uranus';\r\n case 7:\r\n return 'Neptune';\r\n case 8:\r\n return 'Pluto';\r\n case 9:\r\n return 'Moon';\r\n case 10:\r\n return 'Io';\r\n case 11:\r\n return 'Europa';\r\n case 12:\r\n return 'Ganymede';\r\n case 13:\r\n return 'Callisto';\r\n case 19:\r\n return 'Earth';\r\n default:\r\n return '';\r\n }\r\n };\r\n Planets.updatePlanetLocations = function(threeDee) {\r\n Planets._jNow = SpaceTimeController.get_jNow();\r\n if (threeDee) {\r\n Planets.updateOrbits(0);\r\n }\r\n if (Planets._planetDiameters == null) {\r\n Planets._planetDiameters = new Array(20);\r\n Planets._planetDiameters[0] = 0.009291568;\r\n Planets._planetDiameters[1] = 3.25794793734425E-05;\r\n Planets._planetDiameters[2] = 8.08669220531394E-05;\r\n Planets._planetDiameters[3] = 4.53785605596396E-05;\r\n Planets._planetDiameters[4] = 0.000954501;\r\n Planets._planetDiameters[5] = 0.000802173;\r\n Planets._planetDiameters[6] = 0.000339564;\r\n Planets._planetDiameters[7] = 0.000324825;\r\n Planets._planetDiameters[8] = 1.52007379777805E-05;\r\n Planets._planetDiameters[9] = 2.32084653538149E-05;\r\n Planets._planetDiameters[10] = 2.43519298386342E-05;\r\n Planets._planetDiameters[11] = 2.08692629580609E-05;\r\n Planets._planetDiameters[12] = 3.51742670356556E-05;\r\n Planets._planetDiameters[13] = 3.22263666626559E-05;\r\n Planets._planetDiameters[14] = 2.43519298386342E-05;\r\n Planets._planetDiameters[15] = 2.08692629580609E-05;\r\n Planets._planetDiameters[16] = 3.51742670356556E-05;\r\n Planets._planetDiameters[17] = 3.22263666626559E-05;\r\n Planets._planetDiameters[18] = 0.009291568 * 2;\r\n Planets._planetDiameters[19] = 8.55626412117809E-05;\r\n }\r\n if (Planets.planetColors == null) {\r\n var lightYellow = Color.fromArgb(255, 255, 255, 221);\r\n var orangeRed = Color.fromArgb(255, 255, 68, 0);\r\n Planets.planetColors = new Array(20);\r\n Planets.planetColors[0] = Colors.get_yellow();\r\n Planets.planetColors[1] = Colors.get_white();\r\n Planets.planetColors[2] = lightYellow;\r\n Planets.planetColors[3] = orangeRed;\r\n Planets.planetColors[4] = Color.fromArgb(255, 255, 165, 0);\r\n Planets.planetColors[5] = Color.fromArgb(255, 184, 134, 11);\r\n Planets.planetColors[6] = Color.fromArgb(255, 173, 216, 230);\r\n Planets.planetColors[7] = Colors.get_blue();\r\n Planets.planetColors[8] = Colors.get_white();\r\n Planets.planetColors[9] = Colors.get_white();\r\n Planets.planetColors[10] = Colors.get_white();\r\n Planets.planetColors[11] = Colors.get_white();\r\n Planets.planetColors[12] = Colors.get_white();\r\n Planets.planetColors[13] = Colors.get_white();\r\n Planets.planetColors[14] = Colors.get_black();\r\n Planets.planetColors[15] = Colors.get_black();\r\n Planets.planetColors[16] = Colors.get_black();\r\n Planets.planetColors[17] = Colors.get_black();\r\n Planets.planetColors[18] = Colors.get_white();\r\n Planets.planetColors[19] = Color.fromArgb(255, 173, 216, 230);\r\n }\r\n if (Planets._planetTilts == null) {\r\n Planets._planetTilts = new Array(20);\r\n Planets._planetTilts[0] = 0;\r\n Planets._planetTilts[1] = 0.01;\r\n Planets._planetTilts[2] = 177.4;\r\n Planets._planetTilts[3] = 25.19;\r\n Planets._planetTilts[4] = 3.13;\r\n Planets._planetTilts[5] = 26.73;\r\n Planets._planetTilts[6] = 97.77;\r\n Planets._planetTilts[7] = 28.32;\r\n Planets._planetTilts[8] = 119.61;\r\n Planets._planetTilts[9] = 23.439;\r\n Planets._planetTilts[10] = 2.21;\r\n Planets._planetTilts[11] = 0;\r\n Planets._planetTilts[12] = -0.33;\r\n Planets._planetTilts[13] = 0;\r\n Planets._planetTilts[14] = 0;\r\n Planets._planetTilts[15] = 0;\r\n Planets._planetTilts[16] = 0;\r\n Planets._planetTilts[17] = 0;\r\n Planets._planetTilts[18] = 0;\r\n Planets._planetTilts[19] = 23.5;\r\n }\r\n Planets._planetTilts[19] = Planets._obliquity / Planets.RC;\r\n if (Planets.planetRotationPeriod == null) {\r\n Planets.planetRotationPeriod = new Array(20);\r\n Planets.planetRotationPeriod[0] = 25.37995;\r\n Planets.planetRotationPeriod[1] = 58.6462;\r\n Planets.planetRotationPeriod[2] = -243.0187;\r\n Planets.planetRotationPeriod[3] = 1.02595675;\r\n Planets.planetRotationPeriod[4] = 0.41007;\r\n Planets.planetRotationPeriod[5] = 0.426;\r\n Planets.planetRotationPeriod[6] = -0.71833;\r\n Planets.planetRotationPeriod[7] = 0.67125;\r\n Planets.planetRotationPeriod[8] = -6.38718;\r\n Planets.planetRotationPeriod[9] = 27.3;\r\n Planets.planetRotationPeriod[10] = 1.769137786;\r\n Planets.planetRotationPeriod[11] = 3.551;\r\n Planets.planetRotationPeriod[12] = 7.155;\r\n Planets.planetRotationPeriod[13] = 16.69;\r\n Planets.planetRotationPeriod[14] = 0;\r\n Planets.planetRotationPeriod[15] = 0;\r\n Planets.planetRotationPeriod[16] = 0;\r\n Planets.planetRotationPeriod[17] = 0;\r\n Planets.planetRotationPeriod[18] = 0;\r\n Planets.planetRotationPeriod[19] = 0.99726968;\r\n }\r\n if (Planets._planetScales == null) {\r\n Planets._planetScales = new Array(20);\r\n }\r\n if (Planets._planet3dLocations == null) {\r\n Planets._planet3dLocations = new Array(20);\r\n }\r\n if (Settings.get_active().get_actualPlanetScale()) {\r\n Planets._planetScales[0] = 0.5;\r\n Planets._planetScales[1] = 0.25;\r\n Planets._planetScales[2] = 0.25;\r\n Planets._planetScales[3] = 0.25;\r\n Planets._planetScales[4] = 0.25;\r\n Planets._planetScales[5] = 0.5;\r\n Planets._planetScales[6] = 0.25;\r\n Planets._planetScales[7] = 0.25;\r\n Planets._planetScales[8] = 0.25;\r\n Planets._planetScales[9] = 0.25;\r\n Planets._planetScales[10] = 0.25;\r\n Planets._planetScales[11] = 0.25;\r\n Planets._planetScales[12] = 0.25;\r\n Planets._planetScales[13] = 0.25;\r\n Planets._planetScales[14] = 0.25;\r\n Planets._planetScales[15] = 0.25;\r\n Planets._planetScales[16] = 0.25;\r\n Planets._planetScales[17] = 0.25;\r\n Planets._planetScales[18] = 0.5;\r\n Planets._planetScales[19] = 0.25;\r\n }\r\n else {\r\n for (var i = 0; i < 20; i++) {\r\n if (i < 10) {\r\n Planets._planetScales[i] = 0.25;\r\n }\r\n else {\r\n Planets._planetScales[i] = 0.1;\r\n }\r\n }\r\n Planets._planetScales[0] = 0.5;\r\n Planets._planetScales[5] = 0.5;\r\n Planets._planetScales[18] = 0.5;\r\n }\r\n Planets._planetDrawOrder = {};\r\n Planets._planetLocations = new Array(20);\r\n var center = new Vector3d();\r\n var planetCenter = 0;\r\n if (planetCenter > -1) {\r\n var centerRaDec = AstroCalc.getPlanet(Planets._jNow, planetCenter, (threeDee) ? 0 : SpaceTimeController.get_location().get_lat(), (threeDee) ? 0 : SpaceTimeController.get_location().get_lng(), (threeDee) ? -6378149 : SpaceTimeController.get_altitude());\r\n center = Coordinates.raDecTo3dAu(centerRaDec.RA, centerRaDec.dec, centerRaDec.distance);\r\n }\r\n Planets._planet3dLocations[19] = Vector3d.create(-center.x, -center.y, -center.z);\r\n Planets._planet3dLocations[19].rotateX(Planets._obliquity);\r\n for (var i = 0; i < 18; i++) {\r\n Planets._planetLocations[i] = AstroCalc.getPlanet(Planets._jNow, i, (threeDee) ? 0 : SpaceTimeController.get_location().get_lat(), (threeDee) ? 0 : SpaceTimeController.get_location().get_lng(), (threeDee) ? -6378149 : SpaceTimeController.get_altitude());\r\n Planets._planet3dLocations[i] = Coordinates.raDecTo3dAu(Planets._planetLocations[i].RA, Planets._planetLocations[i].dec, Planets._planetLocations[i].distance);\r\n Planets._planet3dLocations[i].subtract(center);\r\n Planets._planet3dLocations[i].rotateX(Planets._obliquity);\r\n if (Settings.get_active().get_actualPlanetScale()) {\r\n Planets._planetScales[i] = (2 * Math.atan(0.5 * (Planets._planetDiameters[i] / Planets._planetLocations[i].distance))) / Math.PI * 180;\r\n }\r\n if (Settings.get_active().get_solarSystemScale() !== 1) {\r\n var id = i;\r\n switch (id) {\r\n case 9:\r\n var parent = Planets._planet3dLocations[19];\r\n Planets._planet3dLocations[i].subtract(parent);\r\n Planets._planet3dLocations[i].multiply(Settings.get_active().get_solarSystemScale() / 2);\r\n Planets._planet3dLocations[i].add(parent);\r\n break;\r\n case 10:\r\n case 11:\r\n case 12:\r\n case 13:\r\n var parent = Planets._planet3dLocations[4];\r\n Planets._planet3dLocations[i].subtract(parent);\r\n Planets._planet3dLocations[i].multiply(Settings.get_active().get_solarSystemScale());\r\n Planets._planet3dLocations[i].add(parent);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n var finalDistance = -Planets._planetLocations[i].distance;\r\n while (ss.keyExists(Planets._planetDrawOrder, finalDistance)) {\r\n finalDistance += 1E-10;\r\n }\r\n Planets._planetDrawOrder[finalDistance] = i;\r\n }\r\n Planets._planetLocations[18] = Planets._planetLocations[0];\r\n Planets._planetScales[0] *= 2;\r\n Planets._planetScales[18] = Planets._planetScales[0];\r\n Planets._planetScales[5] = Planets._planetScales[5] * 2;\r\n Planets._lastUpdate = SpaceTimeController.get_now();\r\n };\r\n Planets.planetsReady = function() {\r\n };\r\n Planets.updateOrbits = function(planetCenter) {\r\n try {\r\n Planets._obliquity = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow()) * Planets.RC;\r\n if (planetCenter !== Planets._lastPlanetCenterID) {\r\n Planets._orbits = null;\r\n }\r\n Planets._lastPlanetCenterID = planetCenter;\r\n if (Planets._orbits == null) {\r\n if (planetCenter < 0) {\r\n Planets._eclipticTilt = Matrix3d.get_identity();\r\n }\r\n else {\r\n Planets._eclipticTilt = Matrix3d.get_identity();\r\n Planets._eclipticTilt = Matrix3d._rotationX(Planets._obliquity);\r\n }\r\n if (Planets.planetOrbitalYears == null) {\r\n Planets.planetOrbitalYears = new Array(20);\r\n Planets.planetOrbitalYears[0] = 1;\r\n Planets.planetOrbitalYears[1] = 0.241;\r\n Planets.planetOrbitalYears[2] = 0.615;\r\n Planets.planetOrbitalYears[3] = 1.881;\r\n Planets.planetOrbitalYears[4] = 11.87;\r\n Planets.planetOrbitalYears[5] = 29.45;\r\n Planets.planetOrbitalYears[6] = 84.07;\r\n Planets.planetOrbitalYears[7] = 164.9;\r\n Planets.planetOrbitalYears[8] = 248.1;\r\n Planets.planetOrbitalYears[9] = 27.3 / 365.25;\r\n Planets.planetOrbitalYears[10] = 16.6890184 / 365.25;\r\n Planets.planetOrbitalYears[11] = 3.551181 / 365.25;\r\n Planets.planetOrbitalYears[12] = 7.15455296 / 365.25;\r\n Planets.planetOrbitalYears[13] = 16.6890184 / 365.25;\r\n Planets.planetOrbitalYears[19] = 1;\r\n }\r\n if (!Planets.readOrbits()) {\r\n Planets._orbits = new Array(20);\r\n for (var i = 1; i < 20; i++) {\r\n Planets._orbits[i] = new Array(Planets._orbitalSampleRate);\r\n if (i < 9 || i === 19) {\r\n for (var j = 0; j < Planets._orbitalSampleRate; j++) {\r\n var centerId = planetCenter;\r\n var now = Planets._jNow + ((Planets.planetOrbitalYears[i] * 365.25 / Planets._orbitalSampleRate) * (j - (Planets._orbitalSampleRate / 2)));\r\n var center = new Vector3d();\r\n if (i === 9) {\r\n centerId = -1;\r\n }\r\n else if (i > 9 && i < 14) {\r\n centerId = 4;\r\n }\r\n if (centerId > -1) {\r\n var centerRaDec = AstroCalc.getPlanet(now, centerId, 0, 0, -6378149);\r\n center = Coordinates.raDecTo3dAu(centerRaDec.RA, centerRaDec.dec, centerRaDec.distance);\r\n }\r\n if (i !== 19) {\r\n var planetRaDec = AstroCalc.getPlanet(now, i, 0, 0, -6378149);\r\n Planets._orbits[i][j] = Coordinates.raDecTo3dAu(planetRaDec.RA, planetRaDec.dec, planetRaDec.distance);\r\n Planets._orbits[i][j].subtract(center);\r\n }\r\n else {\r\n Planets._orbits[i][j] = Vector3d.create(-center.x, -center.y, -center.z);\r\n }\r\n Planets._orbits[i][j].rotateX(Planets._obliquity);\r\n }\r\n Planets._orbits[i][Planets._orbitalSampleRate - 1] = Planets._orbits[i][0];\r\n }\r\n }\r\n Planets.dumpOrbitsFile();\r\n }\r\n }\r\n }\r\n finally {\r\n }\r\n };\r\n Planets.readOrbits = function() {\r\n return false;\r\n };\r\n Planets.dumpOrbitsFile = function() {\r\n };\r\n Planets.drawPlanets = function(renderContext, opacity) {\r\n if (Planets._planetTextures == null) {\r\n Planets._loadPlanetTextures();\r\n }\r\n var elong = Planets._geocentricElongation(Planets._planetLocations[9].RA, Planets._planetLocations[9].dec, Planets._planetLocations[0].RA, Planets._planetLocations[0].dec);\r\n var raDif = Planets._planetLocations[9].RA - Planets._planetLocations[0].RA;\r\n if (Planets._planetLocations[9].RA < Planets._planetLocations[0].RA) {\r\n raDif += 24;\r\n }\r\n var phaseAngle = Planets._phaseAngle(elong, Planets._planetLocations[9].distance, Planets._planetLocations[0].distance);\r\n var limbAngle = Planets._positionAngle(Planets._planetLocations[9].RA, Planets._planetLocations[9].dec, Planets._planetLocations[0].RA, Planets._planetLocations[0].dec);\r\n if (raDif < 12) {\r\n phaseAngle += 180;\r\n }\r\n var dista = (Math.abs(Planets._planetLocations[9].RA - Planets._planetLocations[0].RA) * 15) * Math.cos(Coordinates.degreesToRadians(Planets._planetLocations[0].dec));\r\n var distb = Math.abs(Planets._planetLocations[9].dec - Planets._planetLocations[0].dec);\r\n var sunMoonDist = Math.sqrt(dista * dista + distb * distb);\r\n var eclipse = false;\r\n var coronaOpacity = 0;\r\n var moonEffect = (Planets._planetScales[9] / 2 - sunMoonDist);\r\n var darkLimb = Math.min(32, ss.truncate((sunMoonDist * 32)));\r\n if (moonEffect > (Planets._planetScales[0] / 4)) {\r\n eclipse = true;\r\n coronaOpacity = Math.min(1, (moonEffect - (Planets._planetScales[0] / 2)) / 0.001);\r\n Planets._drawPlanet(renderContext, 18, coronaOpacity);\r\n }\r\n var $enum1 = ss.enumerate(ss.keys(Planets._planetDrawOrder));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var planetId = Planets._planetDrawOrder[key];\r\n Planets._drawPlanet(renderContext, planetId, 1);\r\n }\r\n return true;\r\n };\r\n Planets._loadPlanetTextures = function() {\r\n var baseUrl = URLHelpers.singleton.engineAssetUrl('');\r\n Planets._planetTextures = new Array(20);\r\n Planets._planetTextures[0] = Planets.loadPlanetTexture(baseUrl + 'sun.png');\r\n Planets._planetTextures[1] = Planets.loadPlanetTexture(baseUrl + 'mercury.png');\r\n Planets._planetTextures[2] = Planets.loadPlanetTexture(baseUrl + 'venus.png');\r\n Planets._planetTextures[3] = Planets.loadPlanetTexture(baseUrl + 'mars.png');\r\n Planets._planetTextures[4] = Planets.loadPlanetTexture(baseUrl + 'jupiter.png');\r\n Planets._planetTextures[5] = Planets.loadPlanetTexture(baseUrl + 'saturn.png');\r\n Planets._planetTextures[6] = Planets.loadPlanetTexture(baseUrl + 'uranus.png');\r\n Planets._planetTextures[7] = Planets.loadPlanetTexture(baseUrl + 'neptune.png');\r\n Planets._planetTextures[8] = Planets.loadPlanetTexture(baseUrl + 'pluto.png');\r\n Planets._planetTextures[9] = Planets.loadPlanetTexture(baseUrl + 'moon.png');\r\n Planets._planetTextures[10] = Planets.loadPlanetTexture(baseUrl + 'io.png');\r\n Planets._planetTextures[11] = Planets.loadPlanetTexture(baseUrl + 'europa.png');\r\n Planets._planetTextures[12] = Planets.loadPlanetTexture(baseUrl + 'ganymede.png');\r\n Planets._planetTextures[13] = Planets.loadPlanetTexture(baseUrl + 'callisto.png');\r\n Planets._planetTextures[14] = Planets.loadPlanetTexture(baseUrl + 'moonshadow.png');\r\n Planets._planetTextures[15] = Planets.loadPlanetTexture(baseUrl + 'moonshadow.png');\r\n Planets._planetTextures[16] = Planets.loadPlanetTexture(baseUrl + 'moonshadow.png');\r\n Planets._planetTextures[17] = Planets.loadPlanetTexture(baseUrl + 'moonshadow.png');\r\n Planets._planetTextures[18] = Planets.loadPlanetTexture(baseUrl + 'sunCorona.png');\r\n Planets._planetTextures[19] = Planets.loadPlanetTexture(baseUrl + 'earth.png');\r\n };\r\n Planets.drawPlanets3D = function(renderContext, opacity, centerPoint) {\r\n Planets.initPlanetResources(renderContext);\r\n var distss = UiTools.solarSystemToMeters(renderContext.get_solarSystemCameraDistance());\r\n var moonFade = Math.min(1, Math.max(Util.log10(distss) - 7.3, 0));\r\n var fade = Math.min(1, Math.max(Util.log10(distss) - 8.6, 0));\r\n if (Settings.get_active().get_solarSystemOrbits() && fade > 0) {\r\n for (var ii = 1; ii < 10; ii++) {\r\n var id = ii;\r\n if (ii === 9) {\r\n id = 19;\r\n }\r\n var angle = Math.atan2(Planets._planet3dLocations[id].z, Planets._planet3dLocations[id].x);\r\n Planets._drawSingleOrbit(renderContext, Planets.planetColors[id], id, centerPoint, angle, Planets._planet3dLocations[id], fade);\r\n }\r\n var mid = 9;\r\n Planets._drawSingleOrbit(renderContext, Planets.planetColors[mid], mid, centerPoint, 0, Planets._planet3dLocations[mid], fade);\r\n }\r\n ss.clearKeys(Planets._drawOrder);\r\n var camera = renderContext.cameraPosition.copy();\r\n for (var planetId = 0; planetId < 14; planetId++) {\r\n if (!(Settings.get_active().get_solarSystemLighting() && Planets._planetLocations[planetId].eclipsed)) {\r\n var distVector = Vector3d.subtractVectors(camera, Vector3d.subtractVectors(Planets._planet3dLocations[planetId], centerPoint));\r\n if (!ss.keyExists(Planets._drawOrder, distVector.length())) {\r\n Planets._drawOrder[distVector.length()] = planetId;\r\n }\r\n }\r\n }\r\n var distVectorEarth = Vector3d.subtractVectors(camera, Vector3d.subtractVectors(Planets._planet3dLocations[19], centerPoint));\r\n if (!ss.keyExists(Planets._drawOrder, distVectorEarth.length())) {\r\n Planets._drawOrder[distVectorEarth.length()] = 19;\r\n }\r\n var $enum1 = ss.enumerate(ss.keys(Planets._drawOrder));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var planetId = Planets._drawOrder[key];\r\n Planets._drawPlanet3d(renderContext, planetId, centerPoint);\r\n }\r\n return true;\r\n };\r\n Planets.getPlanetOrientationAtEpoch = function(planetID) {\r\n var m = Matrix3d.get_identity();\r\n var obliquityOfEcliptic = 23.4392794;\r\n if (planetID === 19) {\r\n m._multiply(Matrix3d._rotationX(obliquityOfEcliptic * Planets.RC));\r\n }\r\n else {\r\n m._multiply(Matrix3d._rotationX(-90 * Planets.RC));\r\n m._multiply(Matrix3d._rotationZ((180 + Planets._planetAngles[planetID].primeMeridian) * Planets.RC));\r\n m._multiply(Matrix3d._rotationX((90 - Planets._planetAngles[planetID].poleDec) * Planets.RC));\r\n m._multiply(Matrix3d._rotationZ((Planets._planetAngles[planetID].poleRa - 90) * Planets.RC));\r\n m._multiply(Matrix3d._rotationX(obliquityOfEcliptic * Planets.RC));\r\n m._multiply(Matrix3d._rotationX(90 * Planets.RC));\r\n }\r\n return m;\r\n };\r\n Planets.setupPlanetMatrix = function(renderContext, planetID, centerPoint, makeFrustum) {\r\n var matNonRotating = renderContext.get_world().clone();\r\n Planets._setupMatrixForPlanetGeometry(renderContext, planetID, centerPoint, makeFrustum);\r\n if (planetID === 0) {\r\n var radius = Planets.getAdjustedPlanetRadius(planetID);\r\n matNonRotating.scale(Vector3d.create(radius, radius, radius));\r\n var translation = Vector3d.subtractVectors(Planets._planet3dLocations[planetID], centerPoint);\r\n matNonRotating._multiply(Matrix3d.translation(translation));\r\n renderContext.set_worldBaseNonRotating(matNonRotating);\r\n }\r\n };\r\n Planets._setupMatrixForPlanetGeometry = function(renderContext, planetID, centerPoint, makeFrustum) {\r\n var radius = Planets.getAdjustedPlanetRadius(planetID);\r\n var rotationCurrent = 0;\r\n if (planetID === 19) {\r\n rotationCurrent = Math.PI + Coordinates.mstFromUTC2(SpaceTimeController.get_now(), 0) / 180 * Math.PI;\r\n }\r\n else {\r\n rotationCurrent = Math.PI + (((Planets._jNow - 2451545) / Planets.planetRotationPeriod[planetID]) * Math.PI * 2) % (Math.PI * 2);\r\n }\r\n if (planetID === 9) {\r\n rotationCurrent -= Math.PI / 2;\r\n }\r\n var matLocal = renderContext.get_world().clone();\r\n var matNonRotating = renderContext.get_world().clone();\r\n var translation = Vector3d.subtractVectors(Planets._planet3dLocations[planetID], centerPoint);\r\n var orientationAtEpoch = Planets.getPlanetOrientationAtEpoch(planetID);\r\n matLocal.scale(Vector3d.create(radius, radius, radius));\r\n matLocal._multiply(Matrix3d._rotationY(-rotationCurrent));\r\n matLocal._multiply(orientationAtEpoch);\r\n if (planetID === renderContext.viewCamera.target) {\r\n Planets.earthMatrix = Matrix3d.get_identity();\r\n Planets.earthMatrix._multiply(Matrix3d._rotationY(-rotationCurrent));\r\n Planets.earthMatrix._multiply(orientationAtEpoch);\r\n Planets.earthMatrixInv = Planets.earthMatrix.clone();\r\n Planets.earthMatrixInv.invert();\r\n }\r\n matLocal._multiply(Matrix3d.translation(translation));\r\n renderContext.set_world(matLocal);\r\n renderContext.set_worldBase(renderContext.get_world().clone());\r\n renderContext.set_nominalRadius(Planets.getPlanetRadiusInMeters(planetID));\r\n if (makeFrustum) {\r\n renderContext.makeFrustum();\r\n }\r\n matNonRotating.scale(Vector3d.create(radius, radius, radius));\r\n matNonRotating._multiply(orientationAtEpoch);\r\n matNonRotating._multiply(Matrix3d.translation(translation));\r\n renderContext.set_worldBaseNonRotating(matNonRotating);\r\n return rotationCurrent;\r\n };\r\n Planets.initPlanetResources = function(renderContext) {\r\n };\r\n Planets._drawSingleOrbit = function(renderContext, eclipticColor, id, centerPoint, startAngle, planetNow, opacity) {\r\n if (opacity < 0.01) {\r\n return;\r\n }\r\n if (renderContext.gl == null) {\r\n var count = Planets._orbitalSampleRate;\r\n var planetDropped = false;\r\n var viewPoint = renderContext.get_viewPoint();\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.strokeStyle = eclipticColor.toString();\r\n ctx.lineWidth = 2;\r\n ctx.globalAlpha = 1;\r\n var point = new Vector3d();\r\n var pointTest = new Vector3d();\r\n var lastPoint = new Vector3d();\r\n var firstPoint = true;\r\n var translate = Matrix3d.translation(Vector3d.negate(centerPoint));\r\n var mat = Matrix3d.multiplyMatrix(translate, renderContext.WVP);\r\n var matWV = Matrix3d.multiplyMatrix(translate, renderContext.WV);\r\n for (var i = 0; i < count; i++) {\r\n var pnt = Planets._orbits[id][i];\r\n var angle = (Math.atan2(Planets._orbits[id][i].z, Planets._orbits[id][i].x) + Math.PI * 2 - startAngle) % (Math.PI * 2);\r\n var alpha = ss.truncate((angle / (Math.PI * 2) * 255));\r\n var alphaD = alpha / 255;\r\n if (alpha < 2 && !planetDropped) {\r\n pnt = planetNow;\r\n alphaD = 1;\r\n }\r\n pointTest = matWV.transform(pnt);\r\n point = mat.transform(pnt);\r\n if (pointTest.z > 0) {\r\n if (firstPoint) {\r\n firstPoint = false;\r\n }\r\n else {\r\n ctx.beginPath();\r\n ctx.globalAlpha = alphaD * opacity;\r\n ctx.moveTo(lastPoint.x, lastPoint.y);\r\n ctx.lineTo(point.x, point.y);\r\n ctx.stroke();\r\n }\r\n }\r\n lastPoint = point;\r\n }\r\n ctx.restore();\r\n }\r\n else {\r\n if (id !== 9) {\r\n var count = Planets._orbitalSampleRate;\r\n var planetDropped = false;\r\n var viewPoint = renderContext.get_viewPoint();\r\n var point = new Vector3d();\r\n var pointTest = new Vector3d();\r\n var lastPoint = new Vector3d();\r\n var lastColor = new Color();\r\n var firstPoint = true;\r\n var list = new OrbitLineList();\r\n for (var i = 0; i < count; i++) {\r\n var pnt = Planets._orbits[id][i].copy();\r\n var angle = (Math.atan2(pnt.z, pnt.x) + Math.PI * 2 - startAngle) % (Math.PI * 2);\r\n var alpha = ss.truncate((angle / (Math.PI * 2) * 255));\r\n var alphaD = alpha / 255;\r\n var color = Color.fromArgb(alpha, eclipticColor.r, eclipticColor.g, eclipticColor.b);\r\n if (alpha < 2 && !planetDropped && !firstPoint) {\r\n pnt = Vector3d.subtractVectors(planetNow, centerPoint);\r\n alphaD = 1;\r\n alpha = 255;\r\n color.a = 255;\r\n lastColor.a = 255;\r\n list.addLine(lastPoint, pnt.copy(), lastColor._clone(), color._clone());\r\n lastColor.a = 0;\r\n color.a = 0;\r\n pnt = Planets._orbits[id][i].copy();\r\n planetDropped = true;\r\n }\r\n pnt = Vector3d.subtractVectors(pnt, centerPoint);\r\n if (firstPoint) {\r\n firstPoint = false;\r\n }\r\n else {\r\n list.addLine(lastPoint, pnt, lastColor, color);\r\n }\r\n lastPoint = pnt;\r\n lastColor = color._clone();\r\n }\r\n list.drawLines(renderContext, 1, Colors.get_white());\r\n list.clear();\r\n }\r\n else {\r\n var mu = 0;\r\n switch (id) {\r\n case 9:\r\n mu = 398600.44189 + 4902.7779;\r\n break;\r\n case 10:\r\n case 11:\r\n case 12:\r\n case 13:\r\n mu = 126686534;\r\n break;\r\n default:\r\n mu = 132712440018.8;\r\n break;\r\n }\r\n var deltaT = 1 / 1440 * 0.1;\r\n var r0 = Planets.getPlanetPositionDirect(id, Planets._jNow);\r\n var r1 = Planets.getPlanetPositionDirect(id, Planets._jNow - deltaT);\r\n var v = Vector3d.scale(Vector3d.subtractVectors(r0, r1), 1 / deltaT);\r\n var elements = Planets._stateVectorToKeplerian(r0, v, mu);\r\n Planets._drawSingleOrbitElements(renderContext, eclipticColor, id, centerPoint, startAngle, planetNow, elements);\r\n }\r\n }\r\n };\r\n Planets.getPlanetPositionDirect = function(id, jd) {\r\n var L = 0;\r\n var B = 0;\r\n var R = 0;\r\n switch (id) {\r\n case 1:\r\n L = CAAMercury.eclipticLongitude(jd);\r\n B = CAAMercury.eclipticLatitude(jd);\r\n R = CAAMercury.radiusVector(jd);\r\n break;\r\n case 2:\r\n L = CAAVenus.eclipticLongitude(jd);\r\n B = CAAVenus.eclipticLatitude(jd);\r\n R = CAAVenus.radiusVector(jd);\r\n break;\r\n case 19:\r\n L = CAAEarth.eclipticLongitude(jd);\r\n B = CAAEarth.eclipticLatitude(jd);\r\n R = CAAEarth.radiusVector(jd);\r\n break;\r\n case 3:\r\n L = CAAMars.eclipticLongitude(jd);\r\n B = CAAMars.eclipticLatitude(jd);\r\n R = CAAMars.radiusVector(jd);\r\n break;\r\n case 4:\r\n L = CAAJupiter.eclipticLongitude(jd);\r\n B = CAAJupiter.eclipticLatitude(jd);\r\n R = CAAJupiter.radiusVector(jd);\r\n break;\r\n case 5:\r\n L = CAASaturn.eclipticLongitude(jd);\r\n B = CAASaturn.eclipticLatitude(jd);\r\n R = CAASaturn.radiusVector(jd);\r\n break;\r\n case 6:\r\n L = CAAUranus.eclipticLongitude(jd);\r\n B = CAAUranus.eclipticLatitude(jd);\r\n R = CAAUranus.radiusVector(jd);\r\n break;\r\n case 7:\r\n L = CAANeptune.eclipticLongitude(jd);\r\n B = CAANeptune.eclipticLatitude(jd);\r\n R = CAANeptune.radiusVector(jd);\r\n break;\r\n case 8:\r\n L = CAAPluto.eclipticLongitude(jd);\r\n B = CAAPluto.eclipticLatitude(jd);\r\n R = CAAPluto.radiusVector(jd);\r\n break;\r\n case 9:\r\n L = CAAMoon.eclipticLongitude(jd);\r\n B = CAAMoon.eclipticLatitude(jd);\r\n R = CAAMoon.radiusVector(jd) / 149598000;\r\n break;\r\n case 10:\r\n var galileanInfo = GM.calculate(jd);\r\n var position = galileanInfo.satellite1.eclipticRectangularCoordinates;\r\n return Vector3d.create(position.x, position.z, position.y);\r\n case 11:\r\n var galileanInfo = GM.calculate(jd);\r\n var position = galileanInfo.satellite2.eclipticRectangularCoordinates;\r\n return Vector3d.create(position.x, position.z, position.y);\r\n case 12:\r\n var galileanInfo = GM.calculate(jd);\r\n var position = galileanInfo.satellite3.eclipticRectangularCoordinates;\r\n return Vector3d.create(position.x, position.z, position.y);\r\n case 13:\r\n var galileanInfo = GM.calculate(jd);\r\n var position = galileanInfo.satellite4.eclipticRectangularCoordinates;\r\n return Vector3d.create(position.x, position.z, position.y);\r\n }\r\n L = Coordinates.degreesToRadians(L);\r\n B = Coordinates.degreesToRadians(B);\r\n var eclPos = Vector3d.create(Math.cos(L) * Math.cos(B) * R, Math.sin(L) * Math.cos(B) * R, Math.sin(B) * R);\r\n var eclipticOfDateRotation = (Coordinates.meanObliquityOfEcliptic(jd) - Coordinates.meanObliquityOfEcliptic(2451545)) * Planets.RC;\r\n eclPos.rotateX(eclipticOfDateRotation);\r\n return Vector3d.create(eclPos.x, eclPos.z, eclPos.y);\r\n };\r\n Planets._stateVectorToKeplerian = function(position, velocity, mu) {\r\n var r = Vector3d.scale(position, 149598000);\r\n var v = Vector3d.scale(Vector3d.scale(velocity, 1 / 86400), 149598000);\r\n var rmag = r.length();\r\n var vmag = v.length();\r\n var sma = 1 / (2 / rmag - vmag * vmag / mu);\r\n var h = Vector3d.cross(r, v);\r\n var ecc = Vector3d.subtractVectors(Vector3d.scale(Vector3d.cross(v, h), 1 / mu), Vector3d.scale(r, 1 / rmag));\r\n var e = ecc.length();\r\n h.normalize();\r\n ecc.normalize();\r\n var s = Vector3d.cross(h, ecc);\r\n r.normalize();\r\n var cosNu = Vector3d.dot(ecc, r);\r\n var sinNu = Vector3d.dot(s, r);\r\n var E = Math.atan2(Math.sqrt(1 - e * e) * sinNu, e + cosNu);\r\n var elements = new KeplerianElements();\r\n elements.orientation = Matrix3d.create(ecc.x, ecc.y, ecc.z, 0, s.x, s.y, s.z, 0, h.x, h.y, h.z, 0, 0, 0, 0, 1);\r\n elements.a = sma;\r\n elements.e = e;\r\n elements.ea = E;\r\n return elements;\r\n };\r\n Planets._drawSingleOrbitElements = function(renderContext, eclipticColor, id, centerPoint, xstartAngle, planetNow, el) {\r\n var scaleFactor;\r\n switch (id) {\r\n case 9:\r\n if (Settings.get_active().get_solarSystemScale() > 1) {\r\n scaleFactor = Settings.get_active().get_solarSystemScale() / 2;\r\n }\r\n else {\r\n scaleFactor = 1;\r\n }\r\n break;\r\n case 10:\r\n case 11:\r\n case 12:\r\n case 13:\r\n scaleFactor = Settings.get_active().get_solarSystemScale();\r\n break;\r\n default:\r\n scaleFactor = 1;\r\n break;\r\n }\r\n var translation = Vector3d.negate(centerPoint);\r\n if (id === 9) {\r\n translation.add(Planets._planet3dLocations[19]);\r\n }\r\n else if (id === 10 || id === 11 || id === 12 || id === 13) {\r\n translation.add(Planets._planet3dLocations[4]);\r\n }\r\n var currentPosition = Vector3d.subtractVectors(planetNow, centerPoint);\r\n var worldMatrix = Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(el.orientation, Matrix3d.translation(translation)), renderContext.get_world());\r\n EllipseRenderer.drawEllipseWithPosition(renderContext, el.a / 149598000 * scaleFactor, el.e, el.ea, eclipticColor, worldMatrix, currentPosition);\r\n };\r\n Planets.isPlanetInFrustum = function(renderContext, rad) {\r\n var frustum = renderContext.get_frustum();\r\n var center = Vector3d.create(0, 0, 0);\r\n var centerV4 = new Vector4d(0, 0, 0, 1);\r\n for (var i = 0; i < 6; i++) {\r\n if (frustum[i].dot(centerV4) + rad < 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n Planets._drawPlanet3d = function(renderContext, planetID, centerPoint) {\r\n if (planetID === 0) {\r\n TileShader.minLightingBrightness = 1;\r\n }\r\n else {\r\n TileShader.minLightingBrightness = 0.025;\r\n if (planetID === 19) {\r\n TileShader.atmosphereColor = Color.fromArgb(255, 65, 157, 217);\r\n }\r\n else {\r\n TileShader.atmosphereColor = Color.fromArgb(0, 0, 0, 0);\r\n }\r\n }\r\n var matOld = renderContext.get_world();\r\n var matOldBase = renderContext.get_worldBase();\r\n var matOldNonRotating = renderContext.get_worldBaseNonRotating();\r\n var radius = Planets.getAdjustedPlanetRadius(planetID);\r\n Planets.setupPlanetMatrix(renderContext, planetID, centerPoint, true);\r\n var planetWidth = 1;\r\n if (planetID === 5) {\r\n planetWidth = 3;\r\n }\r\n if (Planets.isPlanetInFrustum(renderContext, planetWidth)) {\r\n var matOld2 = renderContext.get_world();\r\n var matOldBase2 = renderContext.get_worldBase();\r\n var matOldNonRotating2 = renderContext.get_worldBaseNonRotating();\r\n var sun = Planets._planet3dLocations[0].copy();\r\n var planet = Planets._planet3dLocations[planetID].copy();\r\n sun = matOld.transform(sun);\r\n planet = matOld.transform(planet);\r\n renderContext.set_world(matOld);\r\n renderContext.set_worldBase(matOldBase);\r\n renderContext.set_worldBaseNonRotating(matOldNonRotating);\r\n Planets._setupMatrixForPlanetGeometry(renderContext, planetID, centerPoint, true);\r\n var sunPosition = Vector3d.subtractVectors(sun, planet);\r\n sunPosition.normalize();\r\n renderContext.set_sunPosition(sunPosition);\r\n TileShader.sunPosition = Vector3d.subtractVectors(Planets._planet3dLocations[0], planet);\r\n var loc = Vector3d.subtractVectors(Planets._planet3dLocations[planetID], centerPoint);\r\n loc.subtract(renderContext.cameraPosition);\r\n var dist = loc.length();\r\n var sizeIndexParam = (2 * Math.atan(0.5 * (radius / dist))) / Math.PI * 180;\r\n var sizeIndex = 0;\r\n if (sizeIndexParam > 10.5) {\r\n sizeIndex = 0;\r\n }\r\n else if (sizeIndexParam > 3.9) {\r\n sizeIndex = 1;\r\n }\r\n else if (sizeIndexParam > 0.72) {\r\n sizeIndex = 2;\r\n }\r\n else if (sizeIndexParam > 0.05) {\r\n sizeIndex = 3;\r\n }\r\n else {\r\n sizeIndex = 4;\r\n }\r\n if (planetID === 19 && sizeIndex < 2) {\r\n var width = Settings.get_active().get_solarSystemScale() * 1E-05;\r\n }\r\n if (sizeIndex < 4) {\r\n var oldLighting = renderContext.lighting;\r\n if (planetID === 5) {\r\n if (renderContext.gl == null) {\r\n renderContext.lighting = false;\r\n Planets.drawSaturnsRings(renderContext, false, dist);\r\n renderContext.lighting = oldLighting;\r\n }\r\n }\r\n if (!planetID) {\r\n renderContext.lighting = false;\r\n }\r\n Planets._drawSphere(renderContext, planetID);\r\n if (planetID === 5) {\r\n if (renderContext.gl == null) {\r\n renderContext.lighting = false;\r\n Planets.drawSaturnsRings(renderContext, true, dist);\r\n }\r\n else {\r\n renderContext.lighting = false;\r\n Planets._drawRings(renderContext);\r\n renderContext.lighting = oldLighting;\r\n }\r\n }\r\n renderContext.lighting = oldLighting;\r\n }\r\n else {\r\n if (!planetID) {\r\n Planets.drawPointPlanet(renderContext, new Vector3d(), (10 * Planets._planetDiameters[planetID]), Planets.planetColors[planetID], true);\r\n }\r\n else if (planetID < 9 || planetID === 19) {\r\n var size = (800 * Planets._planetDiameters[planetID]);\r\n Planets.drawPointPlanet(renderContext, new Vector3d(), Math.max(0.05, Math.min(0.1, size)), Planets.planetColors[planetID], true);\r\n }\r\n else if (sizeIndexParam > 0.002) {\r\n var size = (800 * Planets._planetDiameters[planetID]);\r\n Planets.drawPointPlanet(renderContext, new Vector3d(), Math.max(0.05, Math.min(0.1, size)), Planets.planetColors[planetID], true);\r\n }\r\n }\r\n }\r\n LayerManager._draw(renderContext, 1, false, Planets.getNameFrom3dId(planetID), true, false);\r\n renderContext.set_world(matOld);\r\n renderContext.set_worldBase(matOldBase);\r\n renderContext.set_worldBaseNonRotating(matOldNonRotating);\r\n };\r\n Planets.drawSaturnsRings = function(renderContext, front, distance) {\r\n if (Planets._ringsTriangleLists[0] == null) {\r\n Planets._ringImage = document.createElement('img');\r\n var xdomimg = Planets._ringImage;\r\n xdomimg.crossOrigin = 'anonymous';\r\n Planets._ringImage.src = URLHelpers.singleton.engineAssetUrl('saturnringsshadow.png');\r\n Planets._ringsTriangleLists[0] = [];\r\n Planets._ringsTriangleLists[1] = [];\r\n var ringSize = 2.25;\r\n var TopLeft = Vector3d.create(-ringSize, 0, -ringSize);\r\n var TopRight = Vector3d.create(ringSize, 0, -ringSize);\r\n var BottomLeft = Vector3d.create(-ringSize, 0, ringSize);\r\n var BottomRight = Vector3d.create(ringSize, 0, ringSize);\r\n var center = Vector3d.create(0, 0, 0);\r\n var leftCenter = Vector3d.create(-ringSize, 0, 0);\r\n var topCenter = Vector3d.create(0, 0, -ringSize);\r\n var bottomCenter = Vector3d.create(0, 0, ringSize);\r\n var rightCenter = Vector3d.create(ringSize, 0, 0);\r\n var level = 6;\r\n var vertexList;\r\n vertexList = [];\r\n var Width = 1024;\r\n var Height = 1024;\r\n vertexList.push(PositionTexture.createPosSize(TopLeft, 0, 0, Width, Height));\r\n vertexList.push(PositionTexture.createPosSize(TopRight, 1, 0, Width, Height));\r\n vertexList.push(PositionTexture.createPosSize(BottomLeft, 0, 1, Width, Height));\r\n vertexList.push(PositionTexture.createPosSize(BottomRight, 1, 1, Width, Height));\r\n var childTriangleList = [];\r\n childTriangleList.push(Triangle.create(0, 2, 1));\r\n childTriangleList.push(Triangle.create(2, 3, 1));\r\n var count = 5;\r\n while (count-- > 1) {\r\n var newList = [];\r\n var $enum1 = ss.enumerate(childTriangleList);\r\n while ($enum1.moveNext()) {\r\n var tri = $enum1.current;\r\n tri.subDivideNoNormalize(newList, vertexList);\r\n }\r\n childTriangleList = newList;\r\n }\r\n var miter = 0.6 / (Width / 256);\r\n var $enum2 = ss.enumerate(childTriangleList);\r\n while ($enum2.moveNext()) {\r\n var tri = $enum2.current;\r\n var p1 = vertexList[tri.a];\r\n var p2 = vertexList[tri.b];\r\n var p3 = vertexList[tri.c];\r\n Planets._ringsTriangleLists[0].push(RenderTriangle.createWithMiter(p1, p2, p3, Planets._ringImage, level, miter));\r\n }\r\n }\r\n if (renderContext.gl == null) {\r\n var cam = renderContext.cameraPosition;\r\n var test = new Vector3d();\r\n var worldLocal = Matrix3d.multiplyMatrix(Matrix3d._rotationY(Math.atan2(renderContext.get_sunPosition().x, renderContext.get_sunPosition().z)), renderContext.get_worldBaseNonRotating());\r\n var wv = Matrix3d.multiplyMatrix(worldLocal, renderContext.get_view());\r\n var wvp = Matrix3d.multiplyMatrix(wv, renderContext.get_projection());\r\n var Width = renderContext.width;\r\n var Height = renderContext.height;\r\n wvp.scale(Vector3d.create(Width / 2, -Height / 2, 1));\r\n wvp.translate(Vector3d.create(Width / 2, Height / 2, 0));\r\n var td = 0;\r\n for (var i = 0; i < 2; i++) {\r\n var $enum3 = ss.enumerate(Planets._ringsTriangleLists[0]);\r\n while ($enum3.moveNext()) {\r\n var tri = $enum3.current;\r\n test = wv.transform(tri.a.position);\r\n td = test.length();\r\n var draw = td > distance;\r\n if (front) {\r\n draw = !draw;\r\n }\r\n if (draw) {\r\n tri.opacity = 1;\r\n tri.draw(renderContext.device, wvp);\r\n }\r\n }\r\n RenderTriangle.cullInside = !RenderTriangle.cullInside;\r\n }\r\n }\r\n else {\r\n }\r\n };\r\n Planets._drawRings = function(renderContext) {\r\n Planets._initRings();\r\n TileShader.use(renderContext, Planets._ringsVertexBuffer.vertexBuffer, null, Planets._ringsTexture.texture2d, 1, false, Vector3d.zero);\r\n renderContext.gl.drawArrays(5, 0, Planets._triangleCountRings);\r\n };\r\n Planets._initRings = function() {\r\n if (Planets._ringsVertexBuffer != null) {\r\n return;\r\n }\r\n Planets._ringsTexture = Planets.loadPlanetTexture(URLHelpers.singleton.engineAssetUrl('saturnringsstrip.png'));\r\n var inner = 1.113;\r\n var outer = 2.25;\r\n Planets._ringsVertexBuffer = new PositionTextureVertexBuffer(((192 + 1) * 2));\r\n Planets._triangleCountRings = (192 + 1) * 2;\r\n var verts = Planets._ringsVertexBuffer.lock();\r\n var radStep = Math.PI * 2 / 192;\r\n var index = 0;\r\n for (var x = 0; x <= 192; x += 2) {\r\n var rads1 = x * radStep;\r\n var rads2 = (x + 1) * radStep;\r\n verts[index] = new PositionTexture();\r\n verts[index].position = Vector3d.create((Math.cos(rads1) * inner), 0, (Math.sin(rads1) * inner));\r\n verts[index].tu = 1;\r\n verts[index].tv = 0;\r\n index++;\r\n verts[index] = new PositionTexture();\r\n verts[index].position = Vector3d.create((Math.cos(rads1) * outer), 0, (Math.sin(rads1) * outer));\r\n verts[index].tu = 0;\r\n verts[index].tv = 0;\r\n index++;\r\n verts[index] = new PositionTexture();\r\n verts[index].position = Vector3d.create((Math.cos(rads2) * inner), 0, (Math.sin(rads2) * inner));\r\n verts[index].tu = 1;\r\n verts[index].tv = 1;\r\n index++;\r\n verts[index] = new PositionTexture();\r\n verts[index].position = Vector3d.create((Math.cos(rads2) * outer), 0, (Math.sin(rads2) * outer));\r\n verts[index].tu = 0;\r\n verts[index].tv = 1;\r\n index++;\r\n }\r\n Planets._ringsVertexBuffer.unlock();\r\n };\r\n Planets.drawPointPlanet = function(renderContext, location, size, color, zOrder) {\r\n var center = location;\r\n var rad = size / 2;\r\n if (renderContext.gl != null) {\r\n var ppList = new PointList(renderContext);\r\n ppList.minSize = 20;\r\n ppList.addPoint(location.copy(), color._clone(), new Dates(0, 1), size / 100);\r\n ppList.depthBuffered = true;\r\n ppList.draw(renderContext, 1, false);\r\n }\r\n else {\r\n var screenSpacePnt = renderContext.WVP.transform(center);\r\n if (screenSpacePnt.z < 0) {\r\n return;\r\n }\r\n if (!zOrder) {\r\n if (Vector3d.dot(renderContext.get_viewPoint(), center) < 0.55) {\r\n return;\r\n }\r\n }\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.arc(screenSpacePnt.x, screenSpacePnt.y, rad, 0, Math.PI * 2, true);\r\n ctx.lineWidth = 1;\r\n ctx.fillStyle = color.toString();\r\n if (true) {\r\n ctx.fill();\r\n }\r\n ctx.globalAlpha = 1;\r\n ctx.strokeStyle = color.toString();\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n };\r\n Planets.getAdjustedPlanetRadius = function(planetID) {\r\n if (planetID > Planets._planetDiameters.length - 1) {\r\n planetID = 19;\r\n }\r\n var diameter = Planets._planetDiameters[planetID];\r\n var radius = (diameter / 2);\r\n if (!!planetID) {\r\n radius = radius * (1 + (3 * (Settings.get_active().get_solarSystemScale() - 1)));\r\n }\r\n else {\r\n radius = radius * (1 + (0.3 * (Settings.get_active().get_solarSystemScale() - 1)));\r\n }\r\n return radius;\r\n };\r\n Planets.getPlanetRadiusInMeters = function(planetID) {\r\n if (planetID > Planets._planetDiameters.length - 1) {\r\n planetID = 19;\r\n }\r\n var diameter = Planets._planetDiameters[planetID];\r\n return (diameter / 2) * 149598000 * 1000;\r\n };\r\n Planets._drawPlanet = function(renderContext, planetID, opacity) {\r\n var planetPosition = Planets._planetLocations[planetID];\r\n if (((planetID < 14) && Planets._planetScales[planetID] < (renderContext.viewCamera.zoom / 6) / 400)) {\r\n if (planetID < 10 || ((planetID < 14) && Planets._planetScales[planetID] > (renderContext.viewCamera.zoom / 6) / 6400)) {\r\n var point = Coordinates.raDecTo3d(planetPosition.RA, planetPosition.dec);\r\n Planets.drawPointPlanet(renderContext, point, 3, Planets.planetColors[planetID], false);\r\n }\r\n return;\r\n }\r\n var brush = null;\r\n if (planetID < 10 || planetID === 18) {\r\n brush = Planets._planetTextures[planetID];\r\n }\r\n else if (planetID < 14) {\r\n if (Planets._planetLocations[planetID].eclipsed) {\r\n brush = Planets._planetTextures[15];\r\n }\r\n else {\r\n if (Settings.get_active().get_showMoonsAsPointSource()) {\r\n brush = Planets._planetTextures[14];\r\n }\r\n else {\r\n brush = Planets._planetTextures[planetID];\r\n }\r\n }\r\n }\r\n else {\r\n if (!Planets._planetLocations[planetID].shadow) {\r\n return;\r\n }\r\n brush = Planets._planetTextures[15];\r\n }\r\n if (renderContext.gl != null) {\r\n if (Planets._planetPoints == null) {\r\n Planets._planetPoints = new Array(4);\r\n for (var i = 0; i < 4; i++) {\r\n Planets._planetPoints[i] = new PositionColoredTextured();\r\n }\r\n }\r\n var radius = (Planets._planetScales[planetID] / 2);\r\n var raRadius = (radius / Math.cos(planetPosition.dec / 180 * Math.PI));\r\n Planets._planetPoints[0].position = Coordinates.raDecTo3dAu((planetPosition.RA - (raRadius / 15)), planetPosition.dec + radius, 1);\r\n Planets._planetPoints[0].tu = 0;\r\n Planets._planetPoints[0].tv = 1;\r\n Planets._planetPoints[0].color = Colors.get_white();\r\n Planets._planetPoints[1].position = Coordinates.raDecTo3dAu((planetPosition.RA - (raRadius / 15)), planetPosition.dec - radius, 1);\r\n Planets._planetPoints[1].tu = 0;\r\n Planets._planetPoints[1].tv = 0;\r\n Planets._planetPoints[1].color = Colors.get_white();\r\n Planets._planetPoints[2].position = Coordinates.raDecTo3dAu((planetPosition.RA + (raRadius / 15)), planetPosition.dec + radius, 1);\r\n Planets._planetPoints[2].tu = 1;\r\n Planets._planetPoints[2].tv = 1;\r\n Planets._planetPoints[2].color = Colors.get_white();\r\n Planets._planetPoints[3].position = Coordinates.raDecTo3dAu((planetPosition.RA + (raRadius / 15)), planetPosition.dec - radius, 1);\r\n Planets._planetPoints[3].tu = 1;\r\n Planets._planetPoints[3].tv = 0;\r\n Planets._planetPoints[3].color = Colors.get_white();\r\n Planets._planetSprite.draw(renderContext, Planets._planetPoints, 4, brush, true, 1);\r\n }\r\n else {\r\n var center = Coordinates.raDecTo3d(planetPosition.RA, planetPosition.dec);\r\n var rad = Planets._planetScales[planetID] / (renderContext.get_fovScale() / 3600) / 2;\r\n var screenSpacePnt = renderContext.WVP.transform(center);\r\n if (screenSpacePnt.z < 0) {\r\n return;\r\n }\r\n if (Vector3d.dot(renderContext.get_viewPoint(), center) < 0.55) {\r\n return;\r\n }\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.globalAlpha = opacity;\r\n ctx.beginPath();\r\n ctx.arc(screenSpacePnt.x, screenSpacePnt.y, rad, 0, Math.PI * 2, true);\r\n ctx.lineWidth = 0;\r\n ctx.closePath();\r\n ctx.clip();\r\n ctx.drawImage(brush.imageElement, screenSpacePnt.x - rad, screenSpacePnt.y - rad, rad * 2, rad * 2);\r\n ctx.globalAlpha = 1;\r\n ctx.restore();\r\n }\r\n };\r\n Planets._drawPlanetPhase = function(renderContext, planetID, phase, angle, dark) {\r\n };\r\n Planets._geocentricElongation = function(ObjectAlpha, ObjectDelta, SunAlpha, SunDelta) {\r\n ObjectAlpha = Coordinates.degreesToRadians(ObjectAlpha * 15);\r\n SunAlpha = Coordinates.degreesToRadians(SunAlpha * 15);\r\n ObjectDelta = Coordinates.degreesToRadians(ObjectDelta);\r\n SunDelta = Coordinates.degreesToRadians(SunDelta);\r\n return Coordinates.radiansToDegrees(Math.acos(Math.sin(SunDelta) * Math.sin(ObjectDelta) + Math.cos(SunDelta) * Math.cos(ObjectDelta) * Math.cos(SunAlpha - ObjectAlpha)));\r\n };\r\n Planets._phaseAngle = function(GeocentricElongation, EarthObjectDistance, EarthSunDistance) {\r\n GeocentricElongation = Coordinates.degreesToRadians(GeocentricElongation);\r\n return Coordinates.mapTo0To360Range(Coordinates.radiansToDegrees(Math.atan2(EarthSunDistance * Math.sin(GeocentricElongation), EarthObjectDistance - EarthSunDistance * Math.cos(GeocentricElongation))));\r\n };\r\n Planets._positionAngle = function(Alpha0, Delta0, Alpha, Delta) {\r\n Alpha0 = Coordinates.hoursToRadians(Alpha0);\r\n Alpha = Coordinates.hoursToRadians(Alpha);\r\n Delta0 = Coordinates.degreesToRadians(Delta0);\r\n Delta = Coordinates.degreesToRadians(Delta);\r\n return Coordinates.mapTo0To360Range(Coordinates.radiansToDegrees(Math.atan2(Math.cos(Delta0) * Math.sin(Alpha0 - Alpha), Math.sin(Delta0) * Math.cos(Delta) - Math.cos(Delta0) * Math.sin(Delta) * Math.cos(Alpha0 - Alpha))));\r\n };\r\n Planets._drawSphere = function(renderContext, planetID) {\r\n var planetName = Planets.getImageSetNameNameFrom3dId(planetID);\r\n var planet = WWTControl.singleton.getImagesetByName(planetName);\r\n if (planet == null) {\r\n planet = WWTControl.singleton.getImagesetByName('Bing Maps Aerial');\r\n }\r\n if (planet != null) {\r\n renderContext.drawImageSet(planet, 100);\r\n if (planetID === 19) {\r\n }\r\n return;\r\n }\r\n };\r\n var Planets$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Material\r\n\r\n function Material() {\r\n this.specularSharpness = 0;\r\n this.opacity = 0;\r\n this.isDefault = false;\r\n }\r\n var Material$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.InViewReturnMessage\r\n\r\n function InViewReturnMessage() {\r\n this.aborted = false;\r\n }\r\n var InViewReturnMessage$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.RenderContext\r\n\r\n function RenderContext() {\r\n this.height = 0;\r\n this.width = 0;\r\n this.lighting = false;\r\n this._viewPoint = new Vector3d();\r\n this.space = false;\r\n this._fovAngle = 0;\r\n this._fovScale = 0;\r\n this._nominalRadius = 6378137;\r\n this._mainTexture = null;\r\n this.viewMover = null;\r\n this.viewCamera = new CameraParameters();\r\n this.targetCamera = new CameraParameters();\r\n this.alt = 0;\r\n this.az = 0;\r\n this.targetAlt = 0;\r\n this.targetAz = 0;\r\n this._backgroundImageset = null;\r\n this._foregroundImageset = null;\r\n this._activeCatalogHipsImagesets = [];\r\n this._targetHeight = 1;\r\n this.targetAltitude = 0;\r\n this._galactic = true;\r\n this._galacticMatrix = Matrix3d.create(-0.4838350155, -0.0548755604, -0.8734370902, 0, 0.7469822445, 0.4941094279, -0.44482963, 0, 0.4559837762, -0.867666149, -0.1980763734, 0, 0, 0, 0, 1);\r\n this._firstTimeInit = false;\r\n this._useSolarSystemTilt = true;\r\n this.customTrackingParams = new CameraParameters();\r\n this._cameraOffset = new Vector3d();\r\n this._fovLocal = (Math.PI / 4);\r\n this.perspectiveFov = Math.PI / 4;\r\n this.nearPlane = 0;\r\n this._frustumDirty = true;\r\n this._frustum = new Array(6);\r\n this._ambientLightColor = Colors.get_black();\r\n this._hemiLightColor = Colors.get_black();\r\n this._hemiLightUp = new Vector3d();\r\n this._sunlightColor = Colors.get_white();\r\n this._sunPosition = new Vector3d();\r\n this._reflectedLightColor = Colors.get_black();\r\n this._reflectedLightPosition = new Vector3d();\r\n this._occludingPlanetRadius = 0;\r\n this._occludingPlanetPosition = new Vector3d();\r\n this._lightingStateDirty = true;\r\n this._twoSidedLighting = false;\r\n this.cameraPosition = new Vector3d();\r\n this._skyColor = 'Blue';\r\n for (var i = 0; i < 6; i++) {\r\n this._frustum[i] = new PlaneD(0, 0, 0, 0);\r\n }\r\n }\r\n RenderContext.create = function(device) {\r\n var temp = new RenderContext();\r\n temp.device = device;\r\n temp.viewCamera.zoom = 700;\r\n temp.viewCamera.target = 65536;\r\n return temp;\r\n };\r\n RenderContext.getTilesYForLevel = function(layer, level) {\r\n var maxY = 1;\r\n switch (layer.get_projection()) {\r\n case 0:\r\n maxY = Math.pow(2, level);\r\n break;\r\n case 1:\r\n maxY = (Math.pow(2, level) * (180 / layer.get_baseTileDegrees()));\r\n break;\r\n case 2:\r\n maxY = Math.pow(2, level);\r\n break;\r\n case 4:\r\n maxY = 1;\r\n break;\r\n case 7:\r\n maxY = 4 * Math.pow(2, level);\r\n break;\r\n default:\r\n maxY = Math.pow(2, level);\r\n break;\r\n }\r\n if (maxY === Number.POSITIVE_INFINITY) {\r\n maxY = 1;\r\n }\r\n return maxY;\r\n };\r\n RenderContext.getTilesXForLevel = function(layer, level) {\r\n var maxX = 1;\r\n switch (layer.get_projection()) {\r\n case 6:\r\n case 3:\r\n maxX = Math.pow(2, level);\r\n break;\r\n case 0:\r\n maxX = Math.pow(2, level) * ss.truncate((layer.get_baseTileDegrees() / 360));\r\n break;\r\n case 1:\r\n maxX = Math.pow(2, level) * ss.truncate((360 / layer.get_baseTileDegrees()));\r\n break;\r\n case 2:\r\n if (layer.get_widthFactor() === 1) {\r\n maxX = Math.pow(2, level) * 2;\r\n }\r\n else {\r\n maxX = Math.pow(2, level);\r\n }\r\n break;\r\n case 5:\r\n maxX = 1;\r\n break;\r\n case 4:\r\n maxX = 1;\r\n break;\r\n case 7:\r\n maxX = Math.pow(2, level) * 3;\r\n break;\r\n default:\r\n maxX = Math.pow(2, level) * 2;\r\n break;\r\n }\r\n return maxX;\r\n };\r\n var RenderContext$ = {\r\n save: function() {\r\n if (this.gl != null) {\r\n }\r\n else {\r\n this.device.save();\r\n }\r\n },\r\n restore: function() {\r\n if (this.gl != null) {\r\n }\r\n else {\r\n this.device.restore();\r\n }\r\n },\r\n clear: function() {\r\n if (this.gl != null) {\r\n this.gl.viewport(0, 0, ss.truncate(this.width), ss.truncate(this.height));\r\n this.gl.clear(16384 | 256);\r\n }\r\n else {\r\n this.device.save();\r\n this.device.fillStyle = 'black';\r\n this.device.fillRect(0, 0, this.width, this.height);\r\n this.device.restore();\r\n }\r\n },\r\n get_viewPoint: function() {\r\n return this._viewPoint;\r\n },\r\n get_RA: function() {\r\n return ((((180 - (this.viewCamera.lng - 180)) / 15) % 24) + 48) % 24;\r\n },\r\n rAtoViewLng: function(ra) {\r\n return 180 - (ra / 24 * 360) - 180;\r\n },\r\n get_dec: function() {\r\n return this.viewCamera.lat;\r\n },\r\n get_fovAngle: function() {\r\n return this._fovAngle;\r\n },\r\n get_fovScale: function() {\r\n return this._fovScale;\r\n },\r\n set_fovScale: function(value) {\r\n this._fovScale = value;\r\n return value;\r\n },\r\n get_view: function() {\r\n return this._view;\r\n },\r\n set_view: function(value) {\r\n this._view = value;\r\n this._frustumDirty = true;\r\n return value;\r\n },\r\n get_viewBase: function() {\r\n return this._viewBase;\r\n },\r\n set_viewBase: function(value) {\r\n this._viewBase = value;\r\n return value;\r\n },\r\n get_projection: function() {\r\n return this._projection;\r\n },\r\n set_projection: function(value) {\r\n this._projection = value;\r\n this._frustumDirty = true;\r\n return value;\r\n },\r\n get_world: function() {\r\n return this._world;\r\n },\r\n set_world: function(value) {\r\n this._world = value;\r\n this._frustumDirty = true;\r\n return value;\r\n },\r\n _getScreenTexture: function() {\r\n var tex = null;\r\n return tex;\r\n },\r\n get_worldBase: function() {\r\n return this._worldBase;\r\n },\r\n set_worldBase: function(value) {\r\n this._worldBase = value;\r\n return value;\r\n },\r\n get_worldBaseNonRotating: function() {\r\n return this._worldBaseNonRotating;\r\n },\r\n set_worldBaseNonRotating: function(value) {\r\n this._worldBaseNonRotating = value;\r\n return value;\r\n },\r\n get_nominalRadius: function() {\r\n return this._nominalRadius;\r\n },\r\n set_nominalRadius: function(value) {\r\n this._nominalRadius = value;\r\n return value;\r\n },\r\n get_mainTexture: function() {\r\n return this._mainTexture;\r\n },\r\n set_mainTexture: function(value) {\r\n if (value != null) {\r\n this._mainTexture = value;\r\n this.gl.bindTexture(3553, this._mainTexture.texture2d);\r\n }\r\n return value;\r\n },\r\n onTarget: function(place) {\r\n return ((Math.abs(this.viewCamera.lat - this.targetCamera.lat) < 1E-12 && Math.abs(this.viewCamera.lng - this.targetCamera.lng) < 1E-12 && Math.abs(this.viewCamera.zoom - this.targetCamera.zoom) < 1E-12) && this.viewMover == null);\r\n },\r\n setTexture: function(texture) {\r\n },\r\n get_backgroundImageset: function() {\r\n return this._backgroundImageset;\r\n },\r\n set_backgroundImageset: function(value) {\r\n var viewModeChanged = this._backgroundImageset != null && value != null && (this._backgroundImageset.get_dataSetType() !== value.get_dataSetType());\r\n this._backgroundImageset = value;\r\n if (viewModeChanged) {\r\n WWTControl.singleton._freezeView();\r\n WWTControl.singleton.clampZooms(this);\r\n }\r\n return value;\r\n },\r\n get_foregroundImageset: function() {\r\n return this._foregroundImageset;\r\n },\r\n set_foregroundImageset: function(value) {\r\n this._foregroundImageset = value;\r\n return value;\r\n },\r\n get_catalogHipsImagesets: function() {\r\n return this._activeCatalogHipsImagesets;\r\n },\r\n getCatalogHipsDataInView: function(imageset, limit, onComplete) {\r\n var $this = this;\r\n\r\n var layer = new CatalogSpreadSheetLayer();\r\n var onHeaderInfoLoad = function() {\r\n layer.useHeadersFromVoTable(imageset.get_hipsProperties().get_catalogColumnInfo());\r\n $this._tryGetAllDataInView(imageset, limit, layer, onComplete, 0);\r\n };\r\n if (imageset.get_hipsProperties() == null) {\r\n imageset.set_hipsProperties(new HipsProperties(imageset));\r\n imageset.get_hipsProperties().setDownloadCompleteListener(onHeaderInfoLoad);\r\n }\r\n else if (imageset.get_hipsProperties() != null && imageset.get_hipsProperties().get_downloadComplete()) {\r\n onHeaderInfoLoad();\r\n }\r\n else {\r\n imageset.get_hipsProperties().setDownloadCompleteListener(onHeaderInfoLoad);\r\n }\r\n },\r\n _tryGetAllDataInView: function(imageset, limit, catalogSpreadSheetLayer, onComplete, i) {\r\n var $this = this;\r\n\r\n var maxX = RenderContext.getTilesXForLevel(imageset, imageset.get_baseLevel());\r\n var maxY = RenderContext.getTilesYForLevel(imageset, imageset.get_baseLevel());\r\n var anyTileStillDownloading = false;\r\n for (var x = 0; x < maxX; x++) {\r\n for (var y = 0; y < maxY; y++) {\r\n var tile = TileCache.getTile(imageset.get_baseLevel(), x, y, imageset, null);\r\n if (tile != null) {\r\n var tileAndChildrenReady = (tile).getDataInView(this, limit, catalogSpreadSheetLayer);\r\n anyTileStillDownloading = anyTileStillDownloading || !tileAndChildrenReady;\r\n }\r\n else {\r\n anyTileStillDownloading = true;\r\n }\r\n }\r\n }\r\n if (anyTileStillDownloading) {\r\n var count = catalogSpreadSheetLayer.get__table().rows.length;\r\n if ((count > 10000 || i > 100 * 60 * 5) && limit) {\r\n console.log('Too Many results - Aborting');\r\n console.log(count);\r\n var returnMessage = new InViewReturnMessage();\r\n returnMessage.aborted = true;\r\n returnMessage.table = catalogSpreadSheetLayer.getTableDataInView();\r\n onComplete(returnMessage);\r\n catalogSpreadSheetLayer.cleanUp();\r\n }\r\n else {\r\n setTimeout(function() {\r\n $this._tryGetAllDataInView(imageset, limit, catalogSpreadSheetLayer, onComplete, i);\r\n }, 10);\r\n if (!(i % 200)) {\r\n console.log('Waiting for more tiles to load');\r\n console.log(count);\r\n }\r\n i++;\r\n }\r\n }\r\n else {\r\n var count = catalogSpreadSheetLayer.get__table().rows.length;\r\n console.log('Done!');\r\n console.log(count);\r\n var returnMessage = new InViewReturnMessage();\r\n returnMessage.aborted = false;\r\n returnMessage.table = catalogSpreadSheetLayer.getTableDataInView();\r\n onComplete(returnMessage);\r\n catalogSpreadSheetLayer.cleanUp();\r\n }\r\n },\r\n addCatalogHips: function(imageset, onLoad) {\r\n if (!(this._activeCatalogHipsImagesets.indexOf(imageset) >= 0)) {\r\n this._activeCatalogHipsImagesets.push(imageset);\r\n }\r\n if (imageset.get_hipsProperties() == null) {\r\n imageset.set_hipsProperties(new HipsProperties(imageset));\r\n imageset.get_hipsProperties().setDownloadCompleteListener(onLoad);\r\n }\r\n else if (imageset.get_hipsProperties() != null && imageset.get_hipsProperties().get_downloadComplete()) {\r\n LayerManager.addSpreadsheetLayer(imageset.get_hipsProperties().get_catalogSpreadSheetLayer(), 'Sky');\r\n if (onLoad != null) {\r\n onLoad();\r\n }\r\n }\r\n },\r\n removeCatalogHips: function(imageset) {\r\n ss.remove(this._activeCatalogHipsImagesets, imageset);\r\n if (imageset.get_hipsProperties() != null) {\r\n LayerManager.deleteLayerByID(imageset.get_hipsProperties().get_catalogSpreadSheetLayer().id, true, true);\r\n }\r\n },\r\n getCatalogHipsByName: function(name) {\r\n var $enum1 = ss.enumerate(this._activeCatalogHipsImagesets);\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_name() === name) {\r\n return imageset;\r\n }\r\n }\r\n return null;\r\n },\r\n getAltitudeForLatLongForPlanet: function(planetID, viewLat, viewLong) {\r\n var layer = WWTControl.singleton.getImagesetByName(Planets.getNameFrom3dId(planetID));\r\n if (layer == null) {\r\n return 0;\r\n }\r\n var maxX = RenderContext.getTilesXForLevel(layer, layer.get_baseLevel());\r\n var maxY = RenderContext.getTilesYForLevel(layer, layer.get_baseLevel());\r\n for (var x = 0; x < maxX; x++) {\r\n for (var y = 0; y < maxY; y++) {\r\n var tile = TileCache.getTile(layer.get_baseLevel(), x, y, layer, null);\r\n if (tile != null) {\r\n if (tile.isPointInTile(viewLat, viewLong)) {\r\n return tile.getSurfacePointAltitude(viewLat, viewLong, true);\r\n }\r\n }\r\n }\r\n }\r\n return 0;\r\n },\r\n getEarthAltitude: function(ViewLat, ViewLong, meters) {\r\n if (WWTControl.singleton.get_solarSystemMode()) {\r\n var pnt = Coordinates.geoTo3dDouble(ViewLat, ViewLong + 90);\r\n var EarthMat = Planets.earthMatrixInv;\r\n pnt = Vector3d._transformCoordinate(pnt, EarthMat);\r\n pnt.normalize();\r\n var point = Coordinates.cartesianToLatLng(pnt);\r\n return this.getAltitudeForLatLongForPlanet(this.viewCamera.target, point.y, point.x);\r\n }\r\n else if (!this.get_backgroundImageset().get_dataSetType()) {\r\n return (meters) ? this.getMetersAltitudeForLatLong(ViewLat, ViewLong) : this.getScaledAltitudeForLatLong(ViewLat, ViewLong);\r\n }\r\n else {\r\n return 0;\r\n }\r\n },\r\n drawImageSet: function(imageset, opacity) {\r\n var maxX = RenderContext.getTilesXForLevel(imageset, imageset.get_baseLevel());\r\n var maxY = RenderContext.getTilesYForLevel(imageset, imageset.get_baseLevel());\r\n for (var x = 0; x < maxX; x++) {\r\n for (var y = 0; y < maxY; y++) {\r\n var tile = TileCache.getTile(imageset.get_baseLevel(), x, y, imageset, null);\r\n if (tile != null) {\r\n tile.draw3D(this, opacity);\r\n }\r\n }\r\n }\r\n },\r\n _getTileAtLatLong: function(viewLat, viewLong) {\r\n var layer = this.get_backgroundImageset();\r\n if (layer == null) {\r\n return null;\r\n }\r\n var maxX = RenderContext.getTilesXForLevel(layer, layer.get_baseLevel());\r\n var maxY = RenderContext.getTilesYForLevel(layer, layer.get_baseLevel());\r\n for (var x = 0; x < maxX; x++) {\r\n for (var y = 0; y < maxY; y++) {\r\n var tile = TileCache.getTile(layer.get_baseLevel(), x, y, layer, null);\r\n if (tile != null) {\r\n if (tile.isPointInTile(viewLat, viewLong)) {\r\n return tile;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n },\r\n getScaledAltitudeForLatLong: function(viewLat, viewLong) {\r\n var tile = this._getTileAtLatLong(viewLat, viewLong);\r\n if (tile != null) {\r\n return tile.getSurfacePointAltitude(viewLat, viewLong, false);\r\n }\r\n return 0;\r\n },\r\n getMetersAltitudeForLatLong: function(viewLat, viewLong) {\r\n var tile = this._getTileAtLatLong(viewLat, viewLong);\r\n if (tile != null) {\r\n return tile.getSurfacePointAltitude(viewLat, viewLong, true);\r\n }\r\n return 0;\r\n },\r\n _setupMatricesLand3d: function() {\r\n this.lighting = false;\r\n this.space = false;\r\n RenderTriangle.cullInside = false;\r\n var WorldMatrix = Matrix3d._rotationY(((this.viewCamera.lng - 90) / 180 * Math.PI));\r\n WorldMatrix._multiply(Matrix3d._rotationX(((-this.viewCamera.lat) / 180 * Math.PI)));\r\n this.set_world(WorldMatrix);\r\n this.set_worldBase(WorldMatrix.clone());\r\n this._viewPoint = Coordinates.geoTo3d(this.viewCamera.lat, this.viewCamera.lng);\r\n var distance = 0;\r\n if (this._backgroundImageset.get_isMandelbrot()) {\r\n distance = (4 * (this.viewCamera.zoom / 180)) + 1E-41;\r\n }\r\n else {\r\n distance = (4 * (this.viewCamera.zoom / 180)) + 1E-06;\r\n }\r\n this._fovAngle = (this.viewCamera.zoom / 343.774) / Math.PI * 180;\r\n this._fovScale = (this._fovAngle / this.height) * 3600;\r\n if (this.gl != null) {\r\n this.targetAltitude = this.getScaledAltitudeForLatLong(this.viewCamera.lat, this.viewCamera.lng);\r\n var heightNow = 1 + this.targetAltitude;\r\n this.targetAltitude *= this.get_nominalRadius();\r\n if (this._targetHeight < heightNow) {\r\n this._targetHeight = (((this._targetHeight * 2) + heightNow) / 3);\r\n }\r\n else {\r\n this._targetHeight = (((this._targetHeight * 9) + heightNow) / 10);\r\n }\r\n }\r\n else {\r\n this.targetAltitude = 0;\r\n this._targetHeight = 1;\r\n }\r\n var rotLocal = this.viewCamera.rotation;\r\n this.cameraPosition = Vector3d.create((Math.sin(rotLocal) * Math.sin(this.viewCamera.angle) * distance), (Math.cos(rotLocal) * Math.sin(this.viewCamera.angle) * distance), (-this._targetHeight - (Math.cos(this.viewCamera.angle) * distance)));\r\n var cameraTarget = Vector3d.create(0, 0, -this._targetHeight);\r\n var camHeight = this.cameraPosition.length();\r\n var lookUp = Vector3d.create(Math.sin(rotLocal) * Math.cos(this.viewCamera.angle), Math.cos(rotLocal) * Math.cos(this.viewCamera.angle), Math.sin(this.viewCamera.angle));\r\n this.set_view(Matrix3d.lookAtLH(this.cameraPosition, cameraTarget, lookUp));\r\n this.set_viewBase(this.get_view());\r\n var back = Math.sqrt((distance + 1) * (distance + 1) - 1);\r\n back = Math.max(0.5, back);\r\n var m_nearPlane = distance * 0.05;\r\n m_nearPlane = distance * 0.05;\r\n this.set_projection(Matrix3d.perspectiveFovLH((Math.PI / 4), this.width / this.height, m_nearPlane, back));\r\n this._setMatrixes();\r\n this.makeFrustum();\r\n },\r\n setupMatricesSpace3d: function(canvasWidth, canvasHeight) {\r\n this.lighting = false;\r\n if (!this._firstTimeInit) {\r\n this._galacticMatrix = Matrix3d.get_identity();\r\n this._galacticMatrix._multiply(Matrix3d._rotationY(-(270 - (17.7603329867975 * 15)) / 180 * Math.PI));\r\n this._galacticMatrix._multiply(Matrix3d._rotationX(-(-28.9361739586894) / 180 * Math.PI));\r\n this._galacticMatrix._multiply(Matrix3d._rotationZ(((31.422052860102) - 90) / 180 * Math.PI));\r\n this._firstTimeInit = true;\r\n }\r\n this.space = true;\r\n RenderTriangle.cullInside = true;\r\n var WorldMatrix = Matrix3d.get_identity();\r\n if (Settings.get_active().get_galacticMode()) {\r\n WorldMatrix._multiply(this._galacticMatrix);\r\n WorldMatrix._multiply(Matrix3d._rotationY(this.az / 180 * Math.PI));\r\n WorldMatrix._multiply(Matrix3d._rotationX(-this.alt / 180 * Math.PI));\r\n var gPoint = Coordinates.galactictoJ2000(this.az, this.alt);\r\n this._viewPoint = Coordinates.raDecTo3dAu(gPoint[0] / 15, gPoint[1], 1);\r\n this.targetCamera.lng = this.rAtoViewLng(gPoint[0] / 15);\r\n this.targetCamera.lat = gPoint[1];\r\n this.viewCamera.lat = this.targetCamera.lat;\r\n this.viewCamera.lng = this.targetCamera.lng;\r\n }\r\n else {\r\n WorldMatrix._multiply(Matrix3d._rotationY(-(this.viewCamera.lng - 90) / 180 * Math.PI));\r\n WorldMatrix._multiply(Matrix3d._rotationX(-this.viewCamera.lat / 180 * Math.PI));\r\n this._viewPoint = Coordinates.raDecTo3dAu(this.get_RA(), this.get_dec(), 1);\r\n }\r\n var camLocal = this.viewCamera.rotation;\r\n this._fovAngle = (this.viewCamera.zoom / 343.774) / Math.PI * 180;\r\n this._fovScale = (this._fovAngle / canvasHeight) * 3600;\r\n if (Settings.get_active().get_localHorizonMode() && this._backgroundImageset.get_dataSetType() === 2) {\r\n var zenithAltAz = new Coordinates(0, 0);\r\n zenithAltAz.set_az(0);\r\n zenithAltAz.set_alt(0);\r\n var zenith = Coordinates.horizonToEquitorial(zenithAltAz, SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n var raPart = -((zenith.get_RA() - 6) / 24 * (Math.PI * 2));\r\n var decPart = -(zenith.get_dec() / 360 * (Math.PI * 2));\r\n var raText = Coordinates.formatDMS(zenith.get_RA());\r\n WorldMatrix = Matrix3d._rotationY(-raPart - Math.PI);\r\n WorldMatrix._multiply(Matrix3d._rotationX(decPart));\r\n if (SpaceTimeController.get_location().get_lat() < 0) {\r\n WorldMatrix._multiply(Matrix3d._rotationY((this.az / 180 * Math.PI)));\r\n WorldMatrix._multiply(Matrix3d._rotationX((this.alt / 180 * Math.PI)));\r\n camLocal += Math.PI;\r\n }\r\n else {\r\n WorldMatrix._multiply(Matrix3d._rotationY(((-this.az) / 180 * Math.PI)));\r\n WorldMatrix._multiply(Matrix3d._rotationX(((-this.alt) / 180 * Math.PI)));\r\n }\r\n var currentRaDec = Coordinates.horizonToEquitorial(Coordinates.fromLatLng(this.alt, this.az), SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n this.viewCamera.lat = this.targetCamera.lat = currentRaDec.get_dec();\r\n this.viewCamera.lng = this.targetCamera.lng = this.rAtoViewLng(currentRaDec.get_RA());\r\n }\r\n this.set_world(WorldMatrix);\r\n this.set_worldBase(WorldMatrix.clone());\r\n var localZoomFactor = this.viewCamera.zoom;\r\n var FovAngle = (localZoomFactor / 343.774) / Math.PI * 180;\r\n this.cameraPosition = Vector3d.create(0, 0, 0);\r\n this.set_view(Matrix3d.lookAtLH(this.cameraPosition, Vector3d.create(0, 0, -1), Vector3d.create(Math.sin(camLocal), Math.cos(camLocal), 0)));\r\n this.set_viewBase(this.get_view().clone());\r\n var m_nearPlane = 0.1;\r\n this.nearPlane = 0.1;\r\n this.set_projection(Matrix3d.perspectiveFovLH(localZoomFactor / 343.774, canvasWidth / canvasHeight, 0.1, -2));\r\n this._setMatrixes();\r\n this.makeFrustum();\r\n },\r\n get_solarSystemTrack: function() {\r\n return this.viewCamera.target;\r\n },\r\n set_solarSystemTrack: function(value) {\r\n this.viewCamera.target = value;\r\n return value;\r\n },\r\n get_solarSystemCameraDistance: function() {\r\n return (4 * (this.viewCamera.zoom / 9)) + 1E-06;\r\n },\r\n get_sandboxMode: function() {\r\n if (this._backgroundImageset == null) {\r\n return false;\r\n }\r\n return this._backgroundImageset.get_dataSetType() === 5;\r\n },\r\n get_trackingFrame: function() {\r\n return this.viewCamera.targetReferenceFrame;\r\n },\r\n set_trackingFrame: function(value) {\r\n this.viewCamera.targetReferenceFrame = value;\r\n return value;\r\n },\r\n get_fovLocal: function() {\r\n return this._fovLocal;\r\n },\r\n set_fovLocal: function(value) {\r\n this._fovLocal = value;\r\n return value;\r\n },\r\n setupMatricesOverlays: function() {\r\n this.set_world(Matrix3d.get_identity());\r\n var lookAtAdjust = Matrix3d.get_identity();\r\n var lookFrom = Vector3d.create(0, 0, 0);\r\n var lookAt = Vector3d.create(0, 0, 1);\r\n var lookUp = Vector3d.create(0, 1, 0);\r\n var view;\r\n view = Matrix3d.lookAtLH(lookFrom, lookAt, lookUp);\r\n view._multiply(Matrix3d._scaling(1, -1, 1));\r\n this.set_view(view);\r\n var back = 10000;\r\n this.nearPlane = 0.1;\r\n this.set_projection(Matrix3d.perspectiveFovLH(this._fovLocal, this.width / this.height, this.nearPlane, back));\r\n },\r\n setupMatricesSolarSystem: function(forStars) {\r\n this.lighting = Settings.get_active().get_solarSystemLighting();\r\n this.space = false;\r\n if (this.get_solarSystemTrack() !== 20 && this.get_solarSystemTrack() !== 65536) {\r\n this.viewCamera.viewTarget = Planets.getPlanetTargetPoint(this.get_solarSystemTrack(), this.viewCamera.lat, this.viewCamera.lng, 0);\r\n }\r\n RenderTriangle.cullInside = false;\r\n var cameraDistance = this.get_solarSystemCameraDistance();\r\n var trackingMatrix = Matrix3d.get_identity();\r\n cameraDistance -= 1E-06;\r\n var activeTrackingFrame = false;\r\n if (this.get_solarSystemTrack() === 20 && !ss.emptyString(this.get_trackingFrame())) {\r\n activeTrackingFrame = true;\r\n var target = LayerManager._getFrameTarget(this, this.get_trackingFrame());\r\n this.viewCamera.viewTarget = target.target;\r\n trackingMatrix = target.matrix;\r\n }\r\n else if (!ss.emptyString(this.get_trackingFrame())) {\r\n this.set_trackingFrame('');\r\n }\r\n var center = this.viewCamera.viewTarget;\r\n var localZoom = this.viewCamera.zoom * 20;\r\n var lookAt = new Vector3d();\r\n var viewAdjust = Matrix3d.get_identity();\r\n viewAdjust._multiply(Matrix3d._rotationX(((-this.viewCamera.lat) / 180 * Math.PI)));\r\n viewAdjust._multiply(Matrix3d._rotationY(((-this.viewCamera.lng) / 180 * Math.PI)));\r\n var lookAtAdjust = Matrix3d.get_identity();\r\n var dome = false;\r\n var lookUp;\r\n if (this._useSolarSystemTilt && !this.get_sandboxMode()) {\r\n var angle = this.viewCamera.angle;\r\n if (cameraDistance > 0.0008) {\r\n angle = 0;\r\n }\r\n else if (cameraDistance > 1E-05) {\r\n var val = Math.min(1.903089987, Util.log10(cameraDistance) + 5) / 1.903089987;\r\n angle = angle * Math.max(0, 1 - val);\r\n }\r\n this.cameraPosition = Vector3d.create((Math.sin(-this.viewCamera.rotation) * Math.sin(angle) * cameraDistance), (Math.cos(-this.viewCamera.rotation) * Math.sin(angle) * cameraDistance), (Math.cos(angle) * cameraDistance));\r\n lookUp = Vector3d.create(Math.sin(-this.viewCamera.rotation), Math.cos(-this.viewCamera.rotation), 1E-05);\r\n }\r\n else {\r\n this.cameraPosition = Vector3d.create(0, 0, cameraDistance);\r\n lookUp = Vector3d.create(Math.sin(-this.viewCamera.rotation), Math.cos(-this.viewCamera.rotation), 0.0001);\r\n }\r\n this.cameraPosition = viewAdjust.transform(this.cameraPosition);\r\n this._cameraOffset = this.cameraPosition.copy();\r\n var tmp = trackingMatrix.clone();\r\n tmp.invert();\r\n this._cameraOffset = Vector3d._transformCoordinate(this._cameraOffset, tmp);\r\n lookUp = viewAdjust.transform(lookUp);\r\n this.set_world(Matrix3d.get_identity());\r\n this.set_worldBase(Matrix3d.get_identity());\r\n this.set_worldBaseNonRotating(Matrix3d.get_identity());\r\n this.set_view(Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(trackingMatrix, Matrix3d.lookAtLH(this.cameraPosition, lookAt, lookUp)), lookAtAdjust));\r\n this.set_viewBase(this.get_view().clone());\r\n var temp = Vector3d.subtractVectors(lookAt, this.cameraPosition);\r\n temp.normalize();\r\n temp = Vector3d._transformCoordinate(temp, trackingMatrix);\r\n temp.normalize();\r\n this._viewPoint = temp;\r\n var radius = Planets.getAdjustedPlanetRadius(this.get_solarSystemTrack());\r\n if (cameraDistance < radius * 2 && !forStars) {\r\n this.nearPlane = cameraDistance * 0.03;\r\n this.nearPlane = Math.max(this.nearPlane, 1E-11);\r\n RenderContext.back = 1900;\r\n }\r\n else {\r\n if (forStars) {\r\n RenderContext.back = 900056;\r\n RenderContext.back = (cameraDistance > 900056) ? cameraDistance * 3 : 900056;\r\n this.nearPlane = 3E-05;\r\n }\r\n else {\r\n RenderContext.back = (cameraDistance > 1900) ? cameraDistance + 200 : 1900;\r\n if (Settings.get_active().get_solarSystemScale() < 13) {\r\n this.nearPlane = Math.min(cameraDistance * 0.03, 0.01);\r\n }\r\n else {\r\n this.nearPlane = 0.001;\r\n }\r\n }\r\n }\r\n this.set_projection(Matrix3d.perspectiveFovLH(this._fovLocal, this.width / this.height, this.nearPlane, RenderContext.back));\r\n this.perspectiveFov = this._fovLocal;\r\n this._fovAngle = (this.viewCamera.zoom / 343.774) / Math.PI * 180;\r\n this._fovScale = (this._fovAngle / this.height) * 3600;\r\n this._setMatrixes();\r\n this.makeFrustum();\r\n },\r\n _setMatrixes: function() {\r\n },\r\n get_frustum: function() {\r\n return this._frustum;\r\n },\r\n get_ambientLightColor: function() {\r\n return this._ambientLightColor;\r\n },\r\n set_ambientLightColor: function(value) {\r\n this._ambientLightColor = value;\r\n this._lightingStateDirty = true;\r\n return value;\r\n },\r\n get_hemisphereLightColor: function() {\r\n return this._hemiLightColor;\r\n },\r\n set_hemisphereLightColor: function(value) {\r\n this._hemiLightColor = value;\r\n this._lightingStateDirty = true;\r\n return value;\r\n },\r\n get_hemisphereLightUp: function() {\r\n return this._hemiLightUp;\r\n },\r\n set_hemisphereLightUp: function(value) {\r\n this._hemiLightUp = value;\r\n this._lightingStateDirty = true;\r\n return value;\r\n },\r\n get_sunlightColor: function() {\r\n return this._sunlightColor;\r\n },\r\n set_sunlightColor: function(value) {\r\n this._sunlightColor = value;\r\n this._lightingStateDirty = true;\r\n return value;\r\n },\r\n get_sunPosition: function() {\r\n return this._sunPosition;\r\n },\r\n set_sunPosition: function(value) {\r\n this._sunPosition = value;\r\n this._lightingStateDirty = true;\r\n return value;\r\n },\r\n get_reflectedLightColor: function() {\r\n return this._reflectedLightColor;\r\n },\r\n set_reflectedLightColor: function(value) {\r\n if (this._reflectedLightColor !== value) {\r\n this._reflectedLightColor = value;\r\n this._lightingStateDirty = true;\r\n }\r\n return value;\r\n },\r\n get_reflectedLightPosition: function() {\r\n return this._reflectedLightPosition;\r\n },\r\n set_reflectedLightPosition: function(value) {\r\n this._reflectedLightPosition = value;\r\n this._lightingStateDirty = true;\r\n return value;\r\n },\r\n get_occludingPlanetRadius: function() {\r\n return this._occludingPlanetRadius;\r\n },\r\n set_occludingPlanetRadius: function(value) {\r\n this._occludingPlanetRadius = value;\r\n return value;\r\n },\r\n get_occludingPlanetPosition: function() {\r\n return this._occludingPlanetPosition;\r\n },\r\n set_occludingPlanetPosition: function(value) {\r\n this._occludingPlanetPosition = value;\r\n return value;\r\n },\r\n get_twoSidedLighting: function() {\r\n return this._twoSidedLighting;\r\n },\r\n set_twoSidedLighting: function(value) {\r\n if (value !== this._twoSidedLighting) {\r\n this._twoSidedLighting = value;\r\n this._lightingStateDirty = true;\r\n }\r\n return value;\r\n },\r\n makeFrustum: function() {\r\n this.WV = Matrix3d.multiplyMatrix(this.get_world(), this.get_view());\r\n var viewProjection = Matrix3d.multiplyMatrix(this.WV, this.get_projection());\r\n this.WVP = viewProjection.clone();\r\n var inverseWorld = this.get_world().clone();\r\n inverseWorld.invert();\r\n this._frustum[0].a = viewProjection.get_m14() + viewProjection.get_m11();\r\n this._frustum[0].b = viewProjection.get_m24() + viewProjection.get_m21();\r\n this._frustum[0].c = viewProjection.get_m34() + viewProjection.get_m31();\r\n this._frustum[0].d = viewProjection.get_m44() + viewProjection.get_m41();\r\n this._frustum[1].a = viewProjection.get_m14() - viewProjection.get_m11();\r\n this._frustum[1].b = viewProjection.get_m24() - viewProjection.get_m21();\r\n this._frustum[1].c = viewProjection.get_m34() - viewProjection.get_m31();\r\n this._frustum[1].d = viewProjection.get_m44() - viewProjection.get_m41();\r\n this._frustum[2].a = viewProjection.get_m14() - viewProjection.get_m12();\r\n this._frustum[2].b = viewProjection.get_m24() - viewProjection.get_m22();\r\n this._frustum[2].c = viewProjection.get_m34() - viewProjection.get_m32();\r\n this._frustum[2].d = viewProjection.get_m44() - viewProjection.get_m42();\r\n this._frustum[3].a = viewProjection.get_m14() + viewProjection.get_m12();\r\n this._frustum[3].b = viewProjection.get_m24() + viewProjection.get_m22();\r\n this._frustum[3].c = viewProjection.get_m34() + viewProjection.get_m32();\r\n this._frustum[3].d = viewProjection.get_m44() + viewProjection.get_m42();\r\n this._frustum[4].a = viewProjection.get_m13();\r\n this._frustum[4].b = viewProjection.get_m23();\r\n this._frustum[4].c = viewProjection.get_m33();\r\n this._frustum[4].d = viewProjection.get_m43();\r\n this._frustum[5].a = viewProjection.get_m14() - viewProjection.get_m13();\r\n this._frustum[5].b = viewProjection.get_m24() - viewProjection.get_m23();\r\n this._frustum[5].c = viewProjection.get_m34() - viewProjection.get_m33();\r\n this._frustum[5].d = viewProjection.get_m44() - viewProjection.get_m43();\r\n for (var i = 0; i < 6; i++) {\r\n this._frustum[i].normalize();\r\n }\r\n this._frustumDirty = false;\r\n this.WVP.scale(Vector3d.create(this.width / 2, -this.height / 2, 1));\r\n this.WVP.translate(Vector3d.create(this.width / 2, this.height / 2, 0));\r\n this._setMatrixes();\r\n },\r\n _initGL: function() {\r\n if (this.gl == null) {\r\n return;\r\n }\r\n var uints_for_indices = this.gl.getExtension('OES_element_index_uint');\r\n Tile.uvMultiple = 1;\r\n Tile.demEnabled = true;\r\n TileShader.init(this);\r\n },\r\n freezeView: function() {\r\n this.targetAlt = this.alt;\r\n this.targetAz = this.az;\r\n this.targetCamera = this.viewCamera.copy();\r\n },\r\n _setVertexBuffer: function(vertexBuffer) {\r\n },\r\n _setIndexBuffer: function(indexBuffer) {\r\n },\r\n setMaterial: function(material, diffuseTex, specularTex, normalMap, opacity) {\r\n this.set_mainTexture(diffuseTex);\r\n },\r\n preDraw: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.RenderTriangle\r\n\r\n function RenderTriangle() {\r\n this.a = new PositionTexture();\r\n this.b = new PositionTexture();\r\n this.c = new PositionTexture();\r\n this.normal = new Vector3d();\r\n this.opacity = 1;\r\n this.expansionInPixels = 0.6;\r\n this.tileLevel = 0;\r\n this._ta = new Vector3d();\r\n this._tb = new Vector3d();\r\n this._tc = new Vector3d();\r\n this._expandedS0 = new Vector2d();\r\n this._expandedS1 = new Vector2d();\r\n this._expandedS2 = new Vector2d();\r\n this.lighting = 1;\r\n }\r\n RenderTriangle.create = function(a, b, c, img, level) {\r\n var temp = new RenderTriangle();\r\n temp.a = a.copy();\r\n temp.b = b.copy();\r\n temp.c = c.copy();\r\n temp._texture = img;\r\n temp.tileLevel = level;\r\n temp.makeNormal();\r\n return temp;\r\n };\r\n RenderTriangle.createWithMiter = function(a, b, c, img, level, expansion) {\r\n var temp = new RenderTriangle();\r\n temp.expansionInPixels = expansion;\r\n temp.a = a.copy();\r\n temp.b = b.copy();\r\n temp.c = c.copy();\r\n temp._texture = img;\r\n temp.tileLevel = level;\r\n temp.makeNormal();\r\n return temp;\r\n };\r\n RenderTriangle._getMiterPoint = function(p1, p2, p3, edgeOffset) {\r\n var edge1 = Vector2d.subtract(p2, p1);\r\n var edge2 = Vector2d.subtract(p3, p1);\r\n edge1.normalize();\r\n edge2.normalize();\r\n var dir = Vector2d.create(edge1.x + edge2.x, edge1.y + edge2.y);\r\n dir.normalize();\r\n var delta = Vector2d.create(edge1.x - edge2.x, edge1.y - edge2.y);\r\n var sineHalfAngle = delta.get_length() / 2;\r\n var net = Math.min(2, edgeOffset / sineHalfAngle);\r\n dir.extend(net);\r\n return Vector2d.create(p1.x - dir.x, p1.y - dir.y);\r\n };\r\n RenderTriangle._miterPoint = function(p1x, p1y, p2x, p2y, p3x, p3y, ExpansionInPixels) {\r\n var e1x = p2x - p1x;\r\n var e1y = p2y - p1y;\r\n var e2x = p3x - p1x;\r\n var e2y = p3y - p1y;\r\n var length = Math.sqrt(e1x * e1x + e1y * e1y);\r\n if (!!length) {\r\n e1x /= length;\r\n e1y /= length;\r\n }\r\n length = Math.sqrt(e2x * e2x + e2y * e2y);\r\n if (!!length) {\r\n e2x /= length;\r\n e2y /= length;\r\n }\r\n var dx = e1x + e2x;\r\n var dy = e1y + e2y;\r\n length = Math.sqrt(dx * dx + dy * dy);\r\n if (!!length) {\r\n dx /= length;\r\n dy /= length;\r\n }\r\n var deltax = e1x - e2x;\r\n var deltay = e1y - e2y;\r\n length = Math.sqrt(deltax * deltax + deltay * deltay);\r\n var sineHalfAngle = length / 2;\r\n var net = Math.min(2, ExpansionInPixels / sineHalfAngle);\r\n dx *= net;\r\n dy *= net;\r\n return Vector2d.create(p1x - dx, p1y - dy);\r\n };\r\n RenderTriangle._miterPointOut = function(pntOut, p1x, p1y, p2x, p2y, p3x, p3y, ExpansionInPixels) {\r\n var e1x = p2x - p1x;\r\n var e1y = p2y - p1y;\r\n var e2x = p3x - p1x;\r\n var e2y = p3y - p1y;\r\n var length = Math.sqrt(e1x * e1x + e1y * e1y);\r\n if (!!length) {\r\n e1x /= length;\r\n e1y /= length;\r\n }\r\n length = Math.sqrt(e2x * e2x + e2y * e2y);\r\n if (!!length) {\r\n e2x /= length;\r\n e2y /= length;\r\n }\r\n var dx = e1x + e2x;\r\n var dy = e1y + e2y;\r\n length = Math.sqrt(dx * dx + dy * dy);\r\n if (!!length) {\r\n dx /= length;\r\n dy /= length;\r\n }\r\n var deltax = e1x - e2x;\r\n var deltay = e1y - e2y;\r\n length = Math.sqrt(deltax * deltax + deltay * deltay);\r\n var sineHalfAngle = length / 2;\r\n var net = Math.min(2, ExpansionInPixels / sineHalfAngle);\r\n dx *= net;\r\n dy *= net;\r\n pntOut.x = p1x - dx;\r\n pntOut.y = p1y - dy;\r\n };\r\n var RenderTriangle$ = {\r\n makeNormal: function() {\r\n var a = this.a.position.copy();\r\n var b = this.b.position.copy();\r\n var c = this.c.position.copy();\r\n a.normalize();\r\n b.normalize();\r\n c.normalize();\r\n var x = a.x + b.x + c.x;\r\n var y = a.y + b.y + c.y;\r\n var z = a.z + b.z + c.z;\r\n this.normal = Vector3d.create(x / 3, y / 3, z / 3);\r\n this.normal.normalize();\r\n },\r\n _checkBackface: function() {\r\n var ab = Vector3d.subtractVectors(this._ta, this._tb);\r\n var ac = Vector3d.subtractVectors(this._ta, this._tc);\r\n var cp = Vector3d.cross(ab, ac);\r\n cp.normalize();\r\n return cp.z >= 0;\r\n },\r\n draw: function(ctx, wvp) {\r\n if (ctx == null) {\r\n return;\r\n }\r\n wvp._transformTo(this.a.position, this._ta);\r\n wvp._transformTo(this.b.position, this._tb);\r\n wvp._transformTo(this.c.position, this._tc);\r\n if (this._checkBackface() === RenderTriangle.cullInside) {\r\n RenderTriangle.trianglesCulled++;\r\n return;\r\n }\r\n this._drawTriangle(ctx, this._texture, this._ta.x, this._ta.y, this._tb.x, this._tb.y, this._tc.x, this._tc.y, this.a.tu, this.a.tv, this.b.tu, this.b.tv, this.c.tu, this.c.tv);\r\n },\r\n _drawTriangle: function(ctx, im, x0, y0, x1, y1, x2, y2, sx0, sy0, sx1, sy1, sx2, sy2) {\r\n if (!this.intersects(0, RenderTriangle.width, 0, RenderTriangle.height, x0, y0, x1, y1, x2, y2)) {\r\n return false;\r\n }\r\n RenderTriangle._miterPointOut(this._expandedS0, x0, y0, x1, y1, x2, y2, this.expansionInPixels);\r\n RenderTriangle._miterPointOut(this._expandedS1, x1, y1, x0, y0, x2, y2, this.expansionInPixels);\r\n RenderTriangle._miterPointOut(this._expandedS2, x2, y2, x1, y1, x0, y0, this.expansionInPixels);\r\n x0 = this._expandedS0.x;\r\n y0 = this._expandedS0.y;\r\n x1 = this._expandedS1.x;\r\n y1 = this._expandedS1.y;\r\n x2 = this._expandedS2.x;\r\n y2 = this._expandedS2.y;\r\n ctx.save();\r\n if (RenderTriangle.renderingOn) {\r\n ctx.beginPath();\r\n ctx.moveTo(x0, y0);\r\n ctx.lineTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.closePath();\r\n ctx.clip();\r\n }\r\n var denom = sx0 * (sy2 - sy1) - sx1 * sy2 + sx2 * sy1 + (sx1 - sx2) * sy0;\r\n var m11 = -(sy0 * (x2 - x1) - sy1 * x2 + sy2 * x1 + (sy1 - sy2) * x0) / denom;\r\n var m12 = (sy1 * y2 + sy0 * (y1 - y2) - sy2 * y1 + (sy2 - sy1) * y0) / denom;\r\n var m21 = (sx0 * (x2 - x1) - sx1 * x2 + sx2 * x1 + (sx1 - sx2) * x0) / denom;\r\n var m22 = -(sx1 * y2 + sx0 * (y1 - y2) - sx2 * y1 + (sx2 - sx1) * y0) / denom;\r\n var dx = (sx0 * (sy2 * x1 - sy1 * x2) + sy0 * (sx1 * x2 - sx2 * x1) + (sx2 * sy1 - sx1 * sy2) * x0) / denom;\r\n var dy = (sx0 * (sy2 * y1 - sy1 * y2) + sy0 * (sx1 * y2 - sx2 * y1) + (sx2 * sy1 - sx1 * sy2) * y0) / denom;\r\n ctx.transform(m11, m12, m21, m22, dx, dy);\r\n if (RenderTriangle.renderingOn) {\r\n ctx.globalAlpha = this.opacity;\r\n if (this.lighting < 1) {\r\n ctx.globalAlpha = 1;\r\n ctx.fillStyle = 'Black';\r\n ctx.fillRect(0, 0, RenderTriangle.width, RenderTriangle.height);\r\n ctx.globalAlpha = this.lighting * this.opacity;\r\n }\r\n ctx.drawImage(im, 0, 0);\r\n }\r\n ctx.restore();\r\n return true;\r\n },\r\n intersects: function(l, r, t, b, x0, y0, x1, y1, x2, y2) {\r\n if (x0 > l && x0 < r && y0 > t && y0 < b) {\r\n return true;\r\n }\r\n if (x1 > l && x1 < r && y1 > t && y1 < b) {\r\n return true;\r\n }\r\n if (x2 > l && x2 < r && y2 > t && y2 < b) {\r\n return true;\r\n }\r\n var h4 = RenderTriangle.height * 4;\r\n if (this.tileLevel < 4 && ((Math.abs(x0 - x1) > h4) || (Math.abs(y0 - y1) > h4) || (Math.abs(x2 - x1) > h4) || (Math.abs(y2 - y1) > h4) || (Math.abs(x0 - x2) > h4) || (Math.abs(y0 - y2) > h4))) {\r\n return false;\r\n }\r\n return this.lineRectangleIntersect(l, r, t, b, x0, y0, x1, y1) || this.lineRectangleIntersect(l, r, t, b, x1, y1, x2, y2) || this.lineRectangleIntersect(l, r, t, b, x2, y2, x0, y0);\r\n },\r\n lineRectangleIntersect: function(l, r, t, b, x0, y0, x1, y1) {\r\n var top_intersection;\r\n var bottom_intersection;\r\n var toptrianglepoint;\r\n var bottomtrianglepoint;\r\n var m;\r\n var c;\r\n m = (y1 - y0) / (x1 - x0);\r\n c = y0 - (m * x0);\r\n if (m > 0) {\r\n top_intersection = (m * l + c);\r\n bottom_intersection = (m * r + c);\r\n }\r\n else {\r\n top_intersection = (m * r + c);\r\n bottom_intersection = (m * l + c);\r\n }\r\n if (y0 < y1) {\r\n toptrianglepoint = y0;\r\n bottomtrianglepoint = y1;\r\n }\r\n else {\r\n toptrianglepoint = y1;\r\n bottomtrianglepoint = y0;\r\n }\r\n var topoverlap;\r\n var botoverlap;\r\n topoverlap = (top_intersection > toptrianglepoint) ? top_intersection : toptrianglepoint;\r\n botoverlap = (bottom_intersection < bottomtrianglepoint) ? bottom_intersection : bottomtrianglepoint;\r\n return (topoverlap < botoverlap) && (!((botoverlap < t) || (topoverlap > b)));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ScriptInterface\r\n\r\n function ScriptInterface() {\r\n this._missedReady = false;\r\n this.hideTourFeedback = false;\r\n this._smoothAnimation = false;\r\n this._showCaptions = true;\r\n }\r\n ScriptInterface._containsFitsLikeExtentsion = function(url) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n return (ss.endsWith(lowerCaseUrl, 'fits') || ss.endsWith(lowerCaseUrl, 'ftz') || ss.endsWith(lowerCaseUrl, 'fit') || ss.endsWith(lowerCaseUrl, 'fts'));\r\n };\r\n ScriptInterface._addImageSet = function(name, gotoTarget, loaded, imageset) {\r\n if (ss.whitespace(name)) {\r\n name = LayerManager.getNextImageSetName();\r\n }\r\n var imagesetLayer = LayerManager.addImageSetLayerCallback(imageset, name, loaded);\r\n if (gotoTarget) {\r\n var zoom = imageset._guessZoomSetting(WWTControl.singleton.renderContext.viewCamera.zoom);\r\n WWTControl.singleton.gotoRADecZoom(imageset.get_viewCenterX() / 15, imageset.get_viewCenterY(), zoom, false, null);\r\n }\r\n return imagesetLayer;\r\n };\r\n ScriptInterface._addFitsLayer = function(url, name, gotoTarget, loaded) {\r\n if (ss.whitespace(name)) {\r\n name = LayerManager.getNextFitsName();\r\n }\r\n var imagesetLayer = new ImageSetLayer();\r\n var imageset = new Imageset();\r\n var wcsLoaded = function(wcsImage) {\r\n if ((wcsImage).errored) {\r\n return;\r\n }\r\n var width = ss.truncate(wcsImage.get_sizeX());\r\n var height = ss.truncate(wcsImage.get_sizeY());\r\n imageset.setInitialParameters(wcsImage.get_description(), wcsImage.get_filename(), 2, 3, 5, Util.getHashCode(wcsImage.get_filename()), 0, 0, wcsImage.get_scaleY(), '.fits', wcsImage.get_scaleX() > 0, '', wcsImage.get_centerX(), wcsImage.get_centerY(), wcsImage.get_rotation(), false, '', false, false, 1, wcsImage.get_referenceX(), wcsImage.get_referenceY(), wcsImage.get_copyright(), wcsImage.get_creditsUrl(), '', '', 0, '');\r\n imageset.set_wcsImage(wcsImage);\r\n imagesetLayer.set_imageSet(imageset);\r\n LayerManager.addFitsImageSetLayer(imagesetLayer, name);\r\n if (gotoTarget) {\r\n var zoom = imageset._guessZoomSetting(WWTControl.singleton.renderContext.viewCamera.zoom);\r\n WWTControl.singleton.gotoRADecZoom(wcsImage.get_viewCenterX() / 15, wcsImage.get_viewCenterY(), zoom, false, null);\r\n }\r\n if (loaded != null) {\r\n loaded(imagesetLayer);\r\n }\r\n };\r\n if (ss.whitespace(name)) {\r\n name = LayerManager.getNextFitsName();\r\n }\r\n if (RenderContext.useGlVersion2) {\r\n new FitsImage(imageset, url, null, wcsLoaded);\r\n }\r\n else {\r\n new FitsImageJs(imageset, url, null, wcsLoaded);\r\n }\r\n return imagesetLayer;\r\n };\r\n var ScriptInterface$ = {\r\n add_ready: function(value) {\r\n this.__ready = ss.bindAdd(this.__ready, value);\r\n },\r\n remove_ready: function(value) {\r\n this.__ready = ss.bindSub(this.__ready, value);\r\n },\r\n _fireReady: function() {\r\n if (this.__ready != null) {\r\n this.__ready(this, new ss.EventArgs());\r\n }\r\n else {\r\n this._missedReady = true;\r\n }\r\n },\r\n add_collectionLoaded: function(value) {\r\n this.__collectionLoaded = ss.bindAdd(this.__collectionLoaded, value);\r\n },\r\n remove_collectionLoaded: function(value) {\r\n this.__collectionLoaded = ss.bindSub(this.__collectionLoaded, value);\r\n },\r\n _fireCollectionLoaded: function(url) {\r\n if (this.__collectionLoaded != null) {\r\n this.__collectionLoaded(this, new CollectionLoadedEventArgs(url));\r\n }\r\n },\r\n add_colorPickerDisplay: function(value) {\r\n this.__colorPickerDisplay = ss.bindAdd(this.__colorPickerDisplay, value);\r\n },\r\n remove_colorPickerDisplay: function(value) {\r\n this.__colorPickerDisplay = ss.bindSub(this.__colorPickerDisplay, value);\r\n },\r\n add_voTableDisplay: function(value) {\r\n this.__voTableDisplay = ss.bindAdd(this.__voTableDisplay, value);\r\n },\r\n remove_voTableDisplay: function(value) {\r\n this.__voTableDisplay = ss.bindSub(this.__voTableDisplay, value);\r\n },\r\n add_refreshLayerManager: function(value) {\r\n this.__refreshLayerManager = ss.bindAdd(this.__refreshLayerManager, value);\r\n },\r\n remove_refreshLayerManager: function(value) {\r\n this.__refreshLayerManager = ss.bindSub(this.__refreshLayerManager, value);\r\n },\r\n add_arrived: function(value) {\r\n this.__arrived = ss.bindAdd(this.__arrived, value);\r\n },\r\n remove_arrived: function(value) {\r\n this.__arrived = ss.bindSub(this.__arrived, value);\r\n },\r\n add_clicked: function(value) {\r\n this.__clicked = ss.bindAdd(this.__clicked, value);\r\n },\r\n remove_clicked: function(value) {\r\n this.__clicked = ss.bindSub(this.__clicked, value);\r\n },\r\n add_annotationClicked: function(value) {\r\n this.__annotationClicked = ss.bindAdd(this.__annotationClicked, value);\r\n },\r\n remove_annotationClicked: function(value) {\r\n this.__annotationClicked = ss.bindSub(this.__annotationClicked, value);\r\n },\r\n add_imageryLoaded: function(value) {\r\n this.__imageryLoaded = ss.bindAdd(this.__imageryLoaded, value);\r\n },\r\n remove_imageryLoaded: function(value) {\r\n this.__imageryLoaded = ss.bindSub(this.__imageryLoaded, value);\r\n },\r\n add_tourReady: function(value) {\r\n this.__tourReady = ss.bindAdd(this.__tourReady, value);\r\n },\r\n remove_tourReady: function(value) {\r\n this.__tourReady = ss.bindSub(this.__tourReady, value);\r\n },\r\n add_tourError: function(value) {\r\n this.__tourError = ss.bindAdd(this.__tourError, value);\r\n },\r\n remove_tourError: function(value) {\r\n this.__tourError = ss.bindSub(this.__tourError, value);\r\n },\r\n add_tourPaused: function(value) {\r\n this.__tourPaused = ss.bindAdd(this.__tourPaused, value);\r\n },\r\n remove_tourPaused: function(value) {\r\n this.__tourPaused = ss.bindSub(this.__tourPaused, value);\r\n },\r\n add_tourResumed: function(value) {\r\n this.__tourResumed = ss.bindAdd(this.__tourResumed, value);\r\n },\r\n remove_tourResumed: function(value) {\r\n this.__tourResumed = ss.bindSub(this.__tourResumed, value);\r\n },\r\n add_tourEnded: function(value) {\r\n this.__tourEnded = ss.bindAdd(this.__tourEnded, value);\r\n },\r\n remove_tourEnded: function(value) {\r\n this.__tourEnded = ss.bindSub(this.__tourEnded, value);\r\n },\r\n add_slideChanged: function(value) {\r\n this.__slideChanged = ss.bindAdd(this.__slideChanged, value);\r\n },\r\n remove_slideChanged: function(value) {\r\n this.__slideChanged = ss.bindSub(this.__slideChanged, value);\r\n },\r\n add_timeScrubberHook: function(value) {\r\n this.__timeScrubberHook = ss.bindAdd(this.__timeScrubberHook, value);\r\n },\r\n remove_timeScrubberHook: function(value) {\r\n this.__timeScrubberHook = ss.bindSub(this.__timeScrubberHook, value);\r\n },\r\n setTimeScrubberPosition: function(posLeft) {\r\n LayerManager.setTimeSliderValue(posLeft);\r\n },\r\n setTimeSlider: function(name, value) {\r\n this.__timeScrubberHook(name, value);\r\n },\r\n showColorPicker: function(pickerInstance, e) {\r\n if (this.__colorPickerDisplay != null) {\r\n this.__colorPickerDisplay(pickerInstance, e);\r\n }\r\n },\r\n displayVoTableLayer: function(layer) {\r\n if (this.__voTableDisplay != null) {\r\n this.__voTableDisplay(layer, new ss.EventArgs());\r\n }\r\n },\r\n refreshLayerManagerNow: function() {\r\n if (this.__refreshLayerManager != null) {\r\n this.__refreshLayerManager(null, new ss.EventArgs());\r\n }\r\n },\r\n _fireTourReady: function() {\r\n if (this.__tourReady != null) {\r\n this.__tourReady(this, new ss.EventArgs());\r\n }\r\n },\r\n _fireTourError: function(ex) {\r\n if (this.__tourError != null) {\r\n this.__tourError(ex, new ss.EventArgs());\r\n }\r\n },\r\n _fireTourPaused: function() {\r\n if (this.__tourPaused != null) {\r\n this.__tourPaused(this, new ss.EventArgs());\r\n }\r\n },\r\n _fireTourResume: function() {\r\n if (this.__tourResumed != null) {\r\n this.__tourResumed(this, new ss.EventArgs());\r\n }\r\n },\r\n _fireTourEnded: function() {\r\n if (this.__tourEnded != null) {\r\n this.__tourEnded(this, new ss.EventArgs());\r\n }\r\n },\r\n _fireImageryLoaded: function() {\r\n if (this.__imageryLoaded != null) {\r\n this.__imageryLoaded(this, new ss.EventArgs());\r\n }\r\n },\r\n _fireClick: function(ra, dec) {\r\n if (this.__clicked != null) {\r\n this.__clicked(this, new ArrivedEventArgs(ra, dec, WWTControl.singleton.renderContext.viewCamera.zoom));\r\n }\r\n },\r\n _fireArrived: function(ra, dec, zoom) {\r\n if (this.__arrived != null) {\r\n this.__arrived(this, new ArrivedEventArgs(ra, dec, zoom));\r\n }\r\n },\r\n _fireAnnotationclicked: function(RA, Dec, id) {\r\n try {\r\n if (this.__annotationClicked != null) {\r\n this.__annotationClicked(this, new AnnotationClickEventArgs(RA, Dec, id));\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n },\r\n _fireSlideChanged: function(caption) {\r\n try {\r\n if (this.__slideChanged != null) {\r\n this.__slideChanged(this, new SlideChangedEventArgs(caption));\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n },\r\n endInit: function() {\r\n if (this._missedReady) {\r\n this._fireReady();\r\n }\r\n },\r\n gotoRaDecZoom: function(ra, dec, zoom, instant, roll) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.gotoRADecZoom(ra / 15, dec, zoom * 6, instant, roll);\r\n }\r\n },\r\n setBackgroundImageByName: function(name) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.setBackgroundImageByName(name);\r\n }\r\n },\r\n addVoTableLayer: function(table) {\r\n return LayerManager.addVoTableLayer(table, 'Vo Table');\r\n },\r\n getLayers: function() {\r\n return LayerManager.get_layerList();\r\n },\r\n setForegroundImageByName: function(name) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.setForegroundImageByName(name);\r\n WWTControl.singleton.renderContext.viewCamera.opacity = 100;\r\n }\r\n },\r\n setForegroundOpacity: function(opacity) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.renderContext.viewCamera.opacity = opacity;\r\n }\r\n },\r\n addCatalogHipsByName: function(name) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.addCatalogHipsByName(name);\r\n }\r\n },\r\n addCatalogHipsByNameWithCallback: function(name, onLoad) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.addCatalogHipsByNameWithCallback(name, onLoad);\r\n }\r\n },\r\n removeCatalogHipsByName: function(name) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.removeCatalogHipsByName(name);\r\n }\r\n },\r\n getCatalogHipsDataInView: function(name, limit, onComplete) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.getCatalogHipsDataInView(name, limit, onComplete);\r\n }\r\n },\r\n setCutsForFits: function(imagesetName, min, max) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.setCutsForFits(imagesetName, min, max);\r\n }\r\n },\r\n setColorMapForFits: function(imagesetName, colorMapName) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.setColorMapForFits(imagesetName, colorMapName);\r\n }\r\n },\r\n setScaleTypeForFits: function(imagesetName, scaleType) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.setScaleTypeForFits(imagesetName, scaleType);\r\n }\r\n },\r\n hideUI: function(hide) {\r\n },\r\n loadTour: function(url) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.playTour(url);\r\n }\r\n },\r\n loadFits: function(url) {\r\n return this.loadFitsLayer(url, '', true, null);\r\n },\r\n loadFitsLayer: function(url, name, gotoTarget, loaded) {\r\n return this.addImageSetLayer(url, 'fits', name, gotoTarget, loaded);\r\n },\r\n addImageSetLayer: function(url, mode, name, gotoTarget, loaded) {\r\n if (mode != null && mode.toLowerCase() === 'fits') {\r\n return ScriptInterface._addFitsLayer(url, name, gotoTarget, loaded);\r\n }\r\n else if (mode != null && mode.toLowerCase() === 'preloaded') {\r\n var imageset = WWTControl.singleton.getImageSetByUrl(url);\r\n if (imageset != null) {\r\n return ScriptInterface._addImageSet(name, gotoTarget, loaded, imageset);\r\n }\r\n }\r\n else {\r\n var imageset = WWTControl.singleton.getImageSetByUrl(url);\r\n if (imageset != null) {\r\n return ScriptInterface._addImageSet(name, gotoTarget, loaded, imageset);\r\n }\r\n else if (ScriptInterface._containsFitsLikeExtentsion(url)) {\r\n return ScriptInterface._addFitsLayer(url, name, gotoTarget, loaded);\r\n }\r\n }\r\n return null;\r\n },\r\n setImageSetLayerOrder: function(id, order) {\r\n var layer = LayerManager.get_layerList()[id];\r\n if (ss.canCast(layer, ImageSetLayer) && order >= 0) {\r\n ss.remove(LayerManager.get_allMaps()[layer.get_referenceFrame()].layers, layer);\r\n LayerManager.get_allMaps()[layer.get_referenceFrame()].layers.splice(order, 0, layer);\r\n }\r\n },\r\n isUsingWebGl2: function() {\r\n return RenderContext.useGlVersion2;\r\n },\r\n get_hideTourFeedback: function() {\r\n return this.hideTourFeedback;\r\n },\r\n set_hideTourFeedback: function(value) {\r\n this.hideTourFeedback = value;\r\n return value;\r\n },\r\n playTour: function() {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.playCurrentTour();\r\n }\r\n },\r\n stopTour: function() {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.stopCurrentTour();\r\n }\r\n },\r\n loadImageCollection: function(url, loadChildFolders) {\r\n var $this = this;\r\n\r\n this._imageUrl = url;\r\n Wtml.getWtmlFile(url, function() {\r\n $this._fireCollectionLoaded(url);\r\n }, loadChildFolders);\r\n },\r\n _imageFileLoaded: function() {\r\n this._fireCollectionLoaded(this._imageUrl);\r\n },\r\n zoom: function(factor) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton.zoom(factor);\r\n }\r\n return;\r\n },\r\n getRA: function() {\r\n if (WWTControl.singleton != null) {\r\n return WWTControl.singleton.renderContext.get_RA();\r\n }\r\n return 0;\r\n },\r\n getDec: function() {\r\n if (WWTControl.singleton != null) {\r\n return WWTControl.singleton.renderContext.get_dec();\r\n }\r\n return 0;\r\n },\r\n createFolder: function() {\r\n var folder = new Folder();\r\n return folder;\r\n },\r\n createPolygon: function(fill) {\r\n var p = new Poly();\r\n p.set_fill(fill);\r\n return p;\r\n },\r\n createPolyLine: function(fill) {\r\n return new PolyLine();\r\n },\r\n createCircle: function(fill) {\r\n var c = new Circle();\r\n c.set_fill(fill);\r\n return c;\r\n },\r\n addAnnotation: function(annotation) {\r\n if (annotation != null && ss.canCast(annotation, Annotation)) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton._addAnnotation(annotation);\r\n }\r\n }\r\n },\r\n removeAnnotation: function(annotation) {\r\n if (annotation != null) {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton._removeAnnotation(annotation);\r\n }\r\n }\r\n },\r\n clearAnnotations: function() {\r\n if (WWTControl.singleton != null) {\r\n WWTControl.singleton._clearAnnotations();\r\n }\r\n },\r\n get_smoothAnimation: function() {\r\n return this._smoothAnimation;\r\n },\r\n set_smoothAnimation: function(value) {\r\n this._smoothAnimation = value;\r\n return value;\r\n },\r\n get_showCaptions: function() {\r\n return this._showCaptions;\r\n },\r\n set_showCaptions: function(value) {\r\n this._showCaptions = value;\r\n return value;\r\n },\r\n loadVOTable: function(url, useCurrentView) {\r\n },\r\n get_fov: function() {\r\n if (WWTControl.singleton != null) {\r\n return WWTControl.singleton.renderContext.viewCamera.zoom / 6;\r\n }\r\n return 60;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Settings\r\n\r\n function Settings() {\r\n this.autoRepeatTour = false;\r\n this._localHorizonMode = false;\r\n this._galacticMode = false;\r\n this._constellationBoundryColor = 'blue';\r\n this._constellationSelectionColor = 'yellow';\r\n this._constellationFigureColor = 'red';\r\n this._showConstellationFigures = true;\r\n this._showConstellationBoundries = true;\r\n this._showConstellationSelection = true;\r\n this._showCrosshairs = true;\r\n this._crosshairsColor = 'white';\r\n this._showEcliptic = false;\r\n this._locationLat = 47.717;\r\n this._locationLng = -122.0858;\r\n this._locationAltitude = 100;\r\n this._showFiledOfView = false;\r\n this._actualPlanetScale = true;\r\n this._fovCamera = 0;\r\n this._fovEyepiece = 0;\r\n this._fovTelescope = 0;\r\n this._showClouds = false;\r\n this._showGrid = false;\r\n this._showHorizon = true;\r\n this._showHorizonPanorama = false;\r\n this._showMoonsAsPointSource = true;\r\n this._showSolarSystem = true;\r\n this._solarSystemStars = true;\r\n this._solarSystemMilkyWay = true;\r\n this._solarSystemCosmos = true;\r\n this._solarSystemOrbits = true;\r\n this._solarSystemOverlays = true;\r\n this._solarSystemLighting = true;\r\n this._solarSystemMultiRes = true;\r\n this._solarSystemScale = 1;\r\n this._smoothPan = true;\r\n this._showElevationModel = true;\r\n this._showEquatorialGridText = false;\r\n this._showGalacticGrid = false;\r\n this._showGalacticGridText = false;\r\n this._showEclipticGrid = false;\r\n this._showEclipticGridText = false;\r\n this._showEclipticOverviewText = false;\r\n this._showAltAzGrid = false;\r\n this._showAltAzGridText = false;\r\n this._showPrecessionChart = false;\r\n this._showConstellationPictures = false;\r\n this._showConstellationLabels = false;\r\n this._solarSystemCMB = true;\r\n this._solarSystemMinorPlanets = false;\r\n this._solarSystemPlanets = true;\r\n this._showEarthSky = true;\r\n this._solarSystemMinorOrbits = false;\r\n this._constellationsEnabled = '';\r\n this._constellationFiguresFilter = new ConstellationFilter();\r\n this._constellationBoundariesFilter = new ConstellationFilter();\r\n this._constellationNamesFilter = new ConstellationFilter();\r\n this._constellationArtFilter = new ConstellationFilter();\r\n this._showSkyOverlays = true;\r\n this._showConstellations = true;\r\n this._showSkyNode = true;\r\n this._showSkyGrids = true;\r\n this._showSkyOverlaysIn3d = true;\r\n this._earthCutawayView = false;\r\n this._showISSModel = false;\r\n this._milkyWayModel = false;\r\n this._minorPlanetsFilter = 255;\r\n this._planetOrbitsFilter = 2147483647;\r\n this._constellations = true;\r\n }\r\n Settings.get_current = function() {\r\n if (Settings._active == null) {\r\n Settings._active = new Settings();\r\n }\r\n return Settings._active;\r\n };\r\n Settings.get_globalSettings = function() {\r\n if (Settings._active == null) {\r\n Settings._active = new Settings();\r\n }\r\n return Settings._active;\r\n };\r\n Settings.get_active = function() {\r\n if (Settings._active == null) {\r\n Settings._active = new Settings();\r\n }\r\n if (Settings.tourSettings != null) {\r\n return Settings.tourSettings;\r\n }\r\n return Settings._active;\r\n };\r\n var Settings$ = {\r\n get_constellationFigureColor: function() {\r\n return this._constellationFigureColor;\r\n },\r\n set_constellationFigureColor: function(value) {\r\n this._constellationFigureColor = value;\r\n return value;\r\n },\r\n get_constellationBoundryColor: function() {\r\n return this._constellationBoundryColor;\r\n },\r\n set_constellationBoundryColor: function(value) {\r\n this._constellationBoundryColor = value;\r\n return value;\r\n },\r\n get_constellationSelectionColor: function() {\r\n return this._constellationSelectionColor;\r\n },\r\n set_constellationSelectionColor: function(value) {\r\n this._constellationSelectionColor = value;\r\n return value;\r\n },\r\n get_showCrosshairs: function() {\r\n return this._showCrosshairs;\r\n },\r\n set_showCrosshairs: function(value) {\r\n this._showCrosshairs = value;\r\n return value;\r\n },\r\n get_smoothPan: function() {\r\n return this._smoothPan;\r\n },\r\n set_smoothPan: function(value) {\r\n this._smoothPan = value;\r\n return value;\r\n },\r\n get_crosshairsColor: function() {\r\n return this._crosshairsColor;\r\n },\r\n set_crosshairsColor: function(value) {\r\n this._crosshairsColor = value;\r\n return value;\r\n },\r\n get_actualPlanetScale: function() {\r\n return this._actualPlanetScale;\r\n },\r\n set_actualPlanetScale: function(value) {\r\n this._actualPlanetScale = value;\r\n return value;\r\n },\r\n get_fovCamera: function() {\r\n return this._fovCamera;\r\n },\r\n get_fovEyepiece: function() {\r\n return this._fovEyepiece;\r\n },\r\n get_fovTelescope: function() {\r\n return this._fovTelescope;\r\n },\r\n get_locationAltitude: function() {\r\n return this._locationAltitude;\r\n },\r\n set_locationAltitude: function(value) {\r\n this._locationAltitude = value;\r\n return value;\r\n },\r\n get_locationLat: function() {\r\n return this._locationLat;\r\n },\r\n set_locationLat: function(value) {\r\n this._locationLat = value;\r\n return value;\r\n },\r\n get_locationLng: function() {\r\n return this._locationLng;\r\n },\r\n set_locationLng: function(value) {\r\n this._locationLng = value;\r\n return value;\r\n },\r\n get_showClouds: function() {\r\n return this._showClouds;\r\n },\r\n get_showConstellationBoundries: function() {\r\n return this._showConstellationBoundries;\r\n },\r\n set_showConstellationBoundries: function(value) {\r\n this._showConstellationBoundries = value;\r\n return value;\r\n },\r\n get_showConstellationFigures: function() {\r\n return this._showConstellationFigures;\r\n },\r\n set_showConstellationFigures: function(value) {\r\n this._showConstellationFigures = value;\r\n return value;\r\n },\r\n get_showConstellationSelection: function() {\r\n return this._showConstellationSelection;\r\n },\r\n set_showConstellationSelection: function(value) {\r\n this._showConstellationSelection = value;\r\n return value;\r\n },\r\n get_showEcliptic: function() {\r\n return this._showEcliptic;\r\n },\r\n set_showEcliptic: function(value) {\r\n this._showEcliptic = value;\r\n return value;\r\n },\r\n get_showElevationModel: function() {\r\n return this._showElevationModel;\r\n },\r\n set_showElevationModel: function(value) {\r\n this._showElevationModel = value;\r\n return value;\r\n },\r\n get_showFieldOfView: function() {\r\n return this._showFiledOfView;\r\n },\r\n get_showGrid: function() {\r\n return this._showGrid;\r\n },\r\n set_showGrid: function(value) {\r\n this._showGrid = value;\r\n return value;\r\n },\r\n get_showHorizon: function() {\r\n return this._showHorizon;\r\n },\r\n set_showHorizon: function(value) {\r\n this._showHorizon = value;\r\n return value;\r\n },\r\n get_showHorizonPanorama: function() {\r\n return this._showHorizonPanorama;\r\n },\r\n get_showMoonsAsPointSource: function() {\r\n return this._showMoonsAsPointSource;\r\n },\r\n get_showSolarSystem: function() {\r\n return this._showSolarSystem;\r\n },\r\n set_showSolarSystem: function(value) {\r\n this._showSolarSystem = value;\r\n return value;\r\n },\r\n get_localHorizonMode: function() {\r\n return this._localHorizonMode;\r\n },\r\n set_localHorizonMode: function(value) {\r\n this._localHorizonMode = value;\r\n return value;\r\n },\r\n get_galacticMode: function() {\r\n return this._galacticMode;\r\n },\r\n set_galacticMode: function(value) {\r\n this._galacticMode = value;\r\n return value;\r\n },\r\n get_solarSystemStars: function() {\r\n return this._solarSystemStars;\r\n },\r\n set_solarSystemStars: function(value) {\r\n this._solarSystemStars = value;\r\n return value;\r\n },\r\n get_solarSystemMilkyWay: function() {\r\n return this._solarSystemMilkyWay;\r\n },\r\n set_solarSystemMilkyWay: function(value) {\r\n this._solarSystemMilkyWay = value;\r\n return value;\r\n },\r\n get_solarSystemCosmos: function() {\r\n return this._solarSystemCosmos;\r\n },\r\n set_solarSystemCosmos: function(value) {\r\n this._solarSystemCosmos = value;\r\n return value;\r\n },\r\n get_solarSystemOrbits: function() {\r\n return this._solarSystemOrbits;\r\n },\r\n set_solarSystemOrbits: function(value) {\r\n this._solarSystemOrbits = value;\r\n return value;\r\n },\r\n get_solarSystemOverlays: function() {\r\n return this._solarSystemOverlays;\r\n },\r\n set_solarSystemOverlays: function(value) {\r\n this._solarSystemOverlays = value;\r\n return value;\r\n },\r\n get_solarSystemLighting: function() {\r\n return this._solarSystemLighting;\r\n },\r\n set_solarSystemLighting: function(value) {\r\n this._solarSystemLighting = value;\r\n return value;\r\n },\r\n get_solarSystemMultiRes: function() {\r\n return true;\r\n },\r\n set_solarSystemMultiRes: function(value) {\r\n this._solarSystemMultiRes = value;\r\n return value;\r\n },\r\n get_solarSystemScale: function() {\r\n return this._solarSystemScale;\r\n },\r\n set_solarSystemScale: function(value) {\r\n this._solarSystemScale = value;\r\n return value;\r\n },\r\n get_showEquatorialGridText: function() {\r\n return this._showEquatorialGridText;\r\n },\r\n set_showEquatorialGridText: function(value) {\r\n this._showEquatorialGridText = value;\r\n return value;\r\n },\r\n get_showGalacticGrid: function() {\r\n return this._showGalacticGrid;\r\n },\r\n set_showGalacticGrid: function(value) {\r\n this._showGalacticGrid = value;\r\n return value;\r\n },\r\n get_showGalacticGridText: function() {\r\n return this._showGalacticGridText;\r\n },\r\n set_showGalacticGridText: function(value) {\r\n this._showGalacticGridText = value;\r\n return value;\r\n },\r\n get_showEclipticGrid: function() {\r\n return this._showEclipticGrid;\r\n },\r\n set_showEclipticGrid: function(value) {\r\n this._showEclipticGrid = value;\r\n return value;\r\n },\r\n get_showEclipticGridText: function() {\r\n return this._showEclipticGridText;\r\n },\r\n set_showEclipticGridText: function(value) {\r\n this._showEclipticGridText = value;\r\n return value;\r\n },\r\n get_showEclipticOverviewText: function() {\r\n return this._showEclipticOverviewText;\r\n },\r\n set_showEclipticOverviewText: function(value) {\r\n this._showEclipticOverviewText = value;\r\n return value;\r\n },\r\n get_showAltAzGrid: function() {\r\n return this._showAltAzGrid;\r\n },\r\n set_showAltAzGrid: function(value) {\r\n this._showAltAzGrid = value;\r\n return value;\r\n },\r\n get_showAltAzGridText: function() {\r\n return this._showAltAzGridText;\r\n },\r\n set_showAltAzGridText: function(value) {\r\n this._showAltAzGridText = value;\r\n return value;\r\n },\r\n get_showPrecessionChart: function() {\r\n return this._showPrecessionChart;\r\n },\r\n set_showPrecessionChart: function(value) {\r\n this._showPrecessionChart = value;\r\n return value;\r\n },\r\n get_showConstellationPictures: function() {\r\n return this._showConstellationPictures;\r\n },\r\n set_showConstellationPictures: function(value) {\r\n this._showConstellationPictures = value;\r\n return value;\r\n },\r\n get_showConstellationLabels: function() {\r\n return this._showConstellationLabels;\r\n },\r\n set_showConstellationLabels: function(value) {\r\n this._showConstellationLabels = value;\r\n return value;\r\n },\r\n get_solarSystemCMB: function() {\r\n return this._solarSystemCMB;\r\n },\r\n set_solarSystemCMB: function(value) {\r\n this._solarSystemCMB = value;\r\n return value;\r\n },\r\n get_solarSystemMinorPlanets: function() {\r\n return this._solarSystemMinorPlanets;\r\n },\r\n set_solarSystemMinorPlanets: function(value) {\r\n this._solarSystemMinorPlanets = value;\r\n return value;\r\n },\r\n get_solarSystemPlanets: function() {\r\n return this._solarSystemPlanets;\r\n },\r\n set_solarSystemPlanets: function(value) {\r\n this._solarSystemPlanets = value;\r\n return value;\r\n },\r\n get_showEarthSky: function() {\r\n return this._showEarthSky;\r\n },\r\n set_showEarthSky: function(value) {\r\n this._showEarthSky = value;\r\n return value;\r\n },\r\n get_solarSystemMinorOrbits: function() {\r\n return this._solarSystemMinorOrbits;\r\n },\r\n set_solarSystemMinorOrbits: function(value) {\r\n this._solarSystemMinorOrbits = value;\r\n return value;\r\n },\r\n get_constellationsEnabled: function() {\r\n return this._constellationsEnabled;\r\n },\r\n set_constellationsEnabled: function(value) {\r\n this._constellationsEnabled = value;\r\n return value;\r\n },\r\n get_constellationFiguresFilter: function() {\r\n return this._constellationFiguresFilter;\r\n },\r\n set_constellationFiguresFilter: function(value) {\r\n this._constellationFiguresFilter = value;\r\n return value;\r\n },\r\n get_constellationBoundariesFilter: function() {\r\n return this._constellationBoundariesFilter;\r\n },\r\n set_constellationBoundariesFilter: function(value) {\r\n this._constellationBoundariesFilter = value;\r\n return value;\r\n },\r\n get_constellationNamesFilter: function() {\r\n return this._constellationNamesFilter;\r\n },\r\n set_constellationNamesFilter: function(value) {\r\n this._constellationNamesFilter = value;\r\n return value;\r\n },\r\n get_constellationArtFilter: function() {\r\n return this._constellationArtFilter;\r\n },\r\n set_constellationArtFilter: function(value) {\r\n this._constellationArtFilter = value;\r\n return value;\r\n },\r\n get_showSkyOverlays: function() {\r\n return this._showSkyOverlays;\r\n },\r\n set_showSkyOverlays: function(value) {\r\n this._showSkyOverlays = value;\r\n return value;\r\n },\r\n get_showConstellations: function() {\r\n return this._showConstellations;\r\n },\r\n set_showConstellations: function(value) {\r\n this._showConstellations = value;\r\n return value;\r\n },\r\n get_showSkyNode: function() {\r\n return this._showSkyNode;\r\n },\r\n set_showSkyNode: function(value) {\r\n this._showSkyNode = value;\r\n return value;\r\n },\r\n get_showSkyGrids: function() {\r\n return this._showSkyGrids;\r\n },\r\n set_showSkyGrids: function(value) {\r\n this._showSkyGrids = value;\r\n return value;\r\n },\r\n get_showSkyOverlaysIn3d: function() {\r\n return this._showSkyOverlaysIn3d;\r\n },\r\n set_showSkyOverlaysIn3d: function(value) {\r\n this._showSkyOverlaysIn3d = value;\r\n return value;\r\n },\r\n get_earthCutawayView: function() {\r\n return this._earthCutawayView;\r\n },\r\n set_earthCutawayView: function(value) {\r\n this._earthCutawayView = value;\r\n return value;\r\n },\r\n get_showISSModel: function() {\r\n return this._showISSModel;\r\n },\r\n set_showISSModel: function(value) {\r\n this._showISSModel = value;\r\n return value;\r\n },\r\n get_milkyWayModel: function() {\r\n return this._milkyWayModel;\r\n },\r\n set_milkyWayModel: function(value) {\r\n this._milkyWayModel = value;\r\n return value;\r\n },\r\n get_minorPlanetsFilter: function() {\r\n return this._minorPlanetsFilter;\r\n },\r\n set_minorPlanetsFilter: function(value) {\r\n this._minorPlanetsFilter = value;\r\n return value;\r\n },\r\n get_planetOrbitsFilter: function() {\r\n return this._planetOrbitsFilter;\r\n },\r\n set_planetOrbitsFilter: function(value) {\r\n this._planetOrbitsFilter = value;\r\n return value;\r\n },\r\n get_constellations: function() {\r\n return this._constellations;\r\n },\r\n set_constellations: function(value) {\r\n this._constellations = value;\r\n return value;\r\n },\r\n getSetting: function(type) {\r\n if (type === 17) {\r\n return new SettingParameter(true, 0, !!0, null);\r\n }\r\n return new SettingParameter(false, 1, false, null);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Text3dBatch\r\n\r\n function Text3dBatch(height) {\r\n this.height = 128;\r\n this.items = [];\r\n this._glyphVersion = -1;\r\n this.viewTransform = Matrix3d.get_identity();\r\n this._textObject = new TextObject();\r\n this._vertCount = 0;\r\n this.height = (height * 3);\r\n }\r\n var Text3dBatch$ = {\r\n add: function(newItem) {\r\n this.items.push(newItem);\r\n },\r\n draw: function(renderContext, opacity, color) {\r\n if (renderContext.gl == null) {\r\n var viewPoint = Vector3d._transformCoordinate(renderContext.get_viewPoint(), this.viewTransform);\r\n var drawHeight = (this.height / renderContext.get_fovAngle()) * renderContext.height / 180;\r\n var $enum1 = ss.enumerate(this.items);\r\n while ($enum1.moveNext()) {\r\n var t3d = $enum1.current;\r\n var screenSpacePnt = renderContext.WVP.transform(t3d.center);\r\n if (screenSpacePnt.z < 0) {\r\n continue;\r\n }\r\n if (Vector3d.dot(viewPoint, t3d.center) < 0.55) {\r\n continue;\r\n }\r\n var screenSpaceTop = renderContext.WVP.transform(t3d.top);\r\n var rotation = Math.atan2(screenSpacePnt.x - screenSpaceTop.x, screenSpacePnt.y - screenSpaceTop.y);\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(screenSpacePnt.x, screenSpacePnt.y);\r\n ctx.rotate(-rotation);\r\n ctx.globalAlpha = opacity;\r\n ctx.fillStyle = color.toString();\r\n ctx.font = 'normal' + ' ' + ((false) ? 'bold' : 'normal') + ' ' + Math.round(drawHeight * 1.2).toString() + 'px ' + 'Arial';\r\n ctx.textBaseline = 'top';\r\n var tm = ctx.measureText(t3d.text);\r\n ctx.fillText(t3d.text, -tm.width / 2, -drawHeight / 2);\r\n ctx.restore();\r\n }\r\n }\r\n else {\r\n if (this._glyphCache == null || this._glyphCache.get_version() > this._glyphVersion) {\r\n this.prepareBatch();\r\n }\r\n if (!this._glyphCache.ready) {\r\n return;\r\n }\r\n TextShader.use(renderContext, this._vertexBuffer.vertexBuffer, this._glyphCache.get_texture().texture2d);\r\n renderContext.gl.drawArrays(4, 0, this._vertexBuffer.count);\r\n }\r\n },\r\n prepareBatch: function() {\r\n if (this._glyphCache == null) {\r\n this._glyphCache = GlyphCache.getCache(this.height);\r\n }\r\n if (!this._glyphCache.ready) {\r\n return;\r\n }\r\n this._textObject.text = '';\r\n this._textObject.fontSize = this.height * 0.5;\r\n var verts = [];\r\n var $enum1 = ss.enumerate(this.items);\r\n while ($enum1.moveNext()) {\r\n var t3d = $enum1.current;\r\n var text = t3d.text;\r\n var left = 0;\r\n var top = 0;\r\n var fntAdjust = this._textObject.fontSize / 128;\r\n var factor = 0.6666;\r\n var width = 0;\r\n var height = 0;\r\n for (var i = 0; i < text.length; i++) {\r\n var item = this._glyphCache.getGlyphItem(text.substr(i, 1));\r\n if (item != null) {\r\n width += item.extents.x;\r\n height = Math.max(item.extents.y, height);\r\n }\r\n }\r\n var size = Vector2d.create(width, height);\r\n t3d.width = size.x * t3d.scale * factor * fntAdjust;\r\n t3d.height = size.y * t3d.scale * factor * fntAdjust;\r\n var charsLeft = text.length;\r\n for (var i = 0; i < charsLeft; i++) {\r\n var item = this._glyphCache.getGlyphItem(text.substr(i, 1));\r\n if (item != null) {\r\n var position = Rectangle.create(left * t3d.scale * factor, 0 * t3d.scale * factor, item.extents.x * fntAdjust * t3d.scale * factor, item.extents.y * fntAdjust * t3d.scale * factor);\r\n left += (item.extents.x * fntAdjust);\r\n t3d.addGlyphPoints(verts, item.size, position, item.uvRect);\r\n }\r\n }\r\n }\r\n this._vertCount = verts.length;\r\n this._vertexBuffer = new PositionTextureVertexBuffer(this._vertCount);\r\n var vertBuf = this._vertexBuffer.lock();\r\n for (var i = 0; i < this._vertCount; i++) {\r\n vertBuf[i] = verts[i];\r\n }\r\n this._vertexBuffer.unlock();\r\n this._glyphVersion = this._glyphCache.get_version();\r\n },\r\n cleanUp: function() {\r\n if (this._vertexBuffer != null) {\r\n this._vertexBuffer = null;\r\n }\r\n this.items.length = 0;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.GlyphItem\r\n\r\n function GlyphItem(glyph) {\r\n this.referenceCount = 0;\r\n this.glyph = glyph;\r\n this.uvRect = new Rectangle();\r\n this.size = new Vector2d();\r\n this.referenceCount = 1;\r\n }\r\n GlyphItem.create = function(glyph, uv, size, extents) {\r\n var temp = new GlyphItem(glyph);\r\n temp.glyph = glyph;\r\n temp.uvRect = uv;\r\n temp.size = size;\r\n temp.extents = extents;\r\n temp.referenceCount = 1;\r\n return temp;\r\n };\r\n GlyphItem._fromXML = function(node) {\r\n var glyph = node.attributes.getNamedItem('Glyph').nodeValue;\r\n var item = new GlyphItem(glyph);\r\n item.uvRect = Rectangle.create(parseFloat(node.attributes.getNamedItem('UVLeft').nodeValue), parseFloat(node.attributes.getNamedItem('UVTop').nodeValue), parseFloat(node.attributes.getNamedItem('UVWidth').nodeValue), parseFloat(node.attributes.getNamedItem('UVHeight').nodeValue));\r\n item.size = Vector2d.create(parseFloat(node.attributes.getNamedItem('SizeWidth').nodeValue), parseFloat(node.attributes.getNamedItem('SizeHeight').nodeValue));\r\n item.extents = Vector2d.create(parseFloat(node.attributes.getNamedItem('ExtentsWidth').nodeValue), parseFloat(node.attributes.getNamedItem('ExtentsHeight').nodeValue));\r\n return item;\r\n };\r\n var GlyphItem$ = {\r\n addRef: function() {\r\n this.referenceCount++;\r\n },\r\n release: function() {\r\n this.referenceCount--;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.GlyphCache\r\n\r\n function GlyphCache(height) {\r\n this._cellHeight = 128;\r\n this._gridSize = 8;\r\n this.ready = false;\r\n this._glyphItems = {};\r\n this.textObject = new TextObject();\r\n this._dirty = true;\r\n this._textureDirty = true;\r\n this._version = 0;\r\n this._cellHeight = height;\r\n this._texture = Planets.loadPlanetTexture(URLHelpers.singleton.engineAssetUrl('glyphs1.png'));\r\n this._webFile = new WebFile(URLHelpers.singleton.engineAssetUrl('glyphs1.xml'));\r\n this._webFile.onStateChange = ss.bind('_glyphXmlReady', this);\r\n this._webFile.send();\r\n }\r\n GlyphCache.getCache = function(height) {\r\n if (!ss.keyExists(GlyphCache._caches, height)) {\r\n GlyphCache._caches[height] = new GlyphCache(height);\r\n }\r\n return GlyphCache._caches[height];\r\n };\r\n GlyphCache.cleanUpAll = function() {\r\n ss.clearKeys(GlyphCache._caches);\r\n };\r\n var GlyphCache$ = {\r\n get_height: function() {\r\n return this._cellHeight;\r\n },\r\n _glyphXmlReady: function() {\r\n if (this._webFile.get_state() === 2) {\r\n alert(this._webFile.get_message());\r\n }\r\n else if (this._webFile.get_state() === 1) {\r\n this._loadXmlGlyph(this._webFile.getXml());\r\n }\r\n },\r\n _loadXmlGlyph: function(xml) {\r\n var nodes = Util.selectSingleNode(xml, 'GlyphItems');\r\n var $enum1 = ss.enumerate(nodes.childNodes);\r\n while ($enum1.moveNext()) {\r\n var glyphItem = $enum1.current;\r\n if (glyphItem.nodeName === 'GlyphItem') {\r\n var item = GlyphItem._fromXML(glyphItem);\r\n this._glyphItems[item.glyph] = item;\r\n GlyphCache._allGlyphs = GlyphCache._allGlyphs + item.glyph;\r\n }\r\n }\r\n this.ready = true;\r\n },\r\n get_texture: function() {\r\n return this._texture;\r\n },\r\n _makeTexture: function() {\r\n this._calcOrMake(true);\r\n },\r\n getGlyphItem: function(glyph) {\r\n if (this._dirty) {\r\n this._calculateGlyphDetails();\r\n }\r\n return this._glyphItems[glyph];\r\n },\r\n _calculateGlyphDetails: function() {\r\n this._calcOrMake(false);\r\n },\r\n _calcOrMake: function(makeTexture) {\r\n },\r\n get_version: function() {\r\n return this._version;\r\n },\r\n set_version: function(value) {\r\n this._version = value;\r\n return value;\r\n },\r\n addGlyph: function(glyph) {\r\n if (!ss.keyExists(this._glyphItems, glyph)) {\r\n var item = new GlyphItem(glyph);\r\n this._glyphItems[glyph] = item;\r\n this._dirty = true;\r\n this._textureDirty = true;\r\n this._version++;\r\n GlyphCache._allGlyphs = GlyphCache._allGlyphs + glyph;\r\n }\r\n else {\r\n this._glyphItems[glyph].addRef();\r\n }\r\n },\r\n cleanUp: function() {\r\n this._dirty = true;\r\n this._texture = null;\r\n },\r\n dispose: function() {\r\n this.cleanUp();\r\n },\r\n get_dirty: function() {\r\n return this._dirty;\r\n },\r\n set_dirty: function(value) {\r\n this._dirty = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Text3d\r\n\r\n function Text3d(center, up, text, fontsize, scale) {\r\n this.rotation = 0;\r\n this.tilt = 0;\r\n this.bank = 0;\r\n this._matInit = false;\r\n this.color = Colors.get_white();\r\n this.sky = true;\r\n this.scale = 0;\r\n this.opacity = 1;\r\n this.text = '';\r\n this.width = 1;\r\n this.height = 1;\r\n this.alignment = 0;\r\n this.text = text;\r\n this.up = up;\r\n this.center = center;\r\n this.scale = scale;\r\n this.top = Vector3d.addVectors(center, Vector3d.scale(up, scale));\r\n if (fontsize < 0) {\r\n this.sky = false;\r\n }\r\n }\r\n var Text3d$ = {\r\n addGlyphPoints: function(pointList, size, position, uv) {\r\n var points = new Array(6);\r\n for (var i = 0; i < 6; i++) {\r\n points[i] = new PositionTexture();\r\n }\r\n var left = Vector3d.cross(this.center, this.up);\r\n var right = Vector3d.cross(this.up, this.center);\r\n left.normalize();\r\n right.normalize();\r\n this.up.normalize();\r\n var upTan = Vector3d.cross(this.center, right);\r\n upTan.normalize();\r\n if (!this.alignment) {\r\n left.multiply(this.width - position.get_left() * 2);\r\n right.multiply(this.width - ((this.width * 2) - position.get_right() * 2));\r\n }\r\n else if (this.alignment === 1) {\r\n left.multiply(-position.get_left() * 2);\r\n right.multiply(position.get_right() * 2);\r\n }\r\n var top = upTan.copy();\r\n var bottom = Vector3d.subtractVectors(Vector3d.get_empty(), upTan);\r\n top.multiply(this.height - position.get_top() * 2);\r\n bottom.multiply(this.height - ((this.height * 2) - position.get_bottom() * 2));\r\n var ul = this.center.copy();\r\n ul.add(top);\r\n if (this.sky) {\r\n ul.add(left);\r\n }\r\n else {\r\n ul.subtract(left);\r\n }\r\n var ur = this.center.copy();\r\n ur.add(top);\r\n if (this.sky) {\r\n ur.add(right);\r\n }\r\n else {\r\n ur.subtract(right);\r\n }\r\n var ll = this.center.copy();\r\n if (this.sky) {\r\n ll.add(left);\r\n }\r\n else {\r\n ll.subtract(left);\r\n }\r\n ll.add(bottom);\r\n var lr = this.center.copy();\r\n if (this.sky) {\r\n lr.add(right);\r\n }\r\n else {\r\n lr.subtract(right);\r\n }\r\n lr.add(bottom);\r\n points[0].position = ul.copy();\r\n points[0].tu = uv.get_left();\r\n points[0].tv = uv.get_top();\r\n points[2].tu = uv.get_left();\r\n points[2].tv = uv.get_bottom();\r\n points[2].position = ll.copy();\r\n points[1].tu = uv.get_right();\r\n points[1].tv = uv.get_top();\r\n points[1].position = ur.copy();\r\n points[3].tu = uv.get_right();\r\n points[3].tv = uv.get_bottom();\r\n points[3].position = lr.copy();\r\n points[5].tu = uv.get_right();\r\n points[5].tv = uv.get_top();\r\n points[5].position = ur.copy();\r\n points[4].tu = uv.get_left();\r\n points[4].tv = uv.get_bottom();\r\n points[4].position = ll.copy();\r\n if (!!this.rotation || !!this.tilt || !!this.bank) {\r\n if (!this._matInit) {\r\n var lookAt = Matrix3d.lookAtLH(this.center, new Vector3d(), this.up);\r\n var lookAtInv = lookAt.clone();\r\n lookAtInv.invert();\r\n this._rtbMat = Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(lookAt, Matrix3d._rotationZ(-this.rotation / 180 * Math.PI)), Matrix3d._rotationX(-this.tilt / 180 * Math.PI)), Matrix3d._rotationY(-this.bank / 180 * Math.PI)), lookAtInv);\r\n this._matInit = true;\r\n }\r\n for (var i = 0; i < 6; i++) {\r\n points[i].position = Vector3d._transformCoordinate(points[i].position, this._rtbMat);\r\n }\r\n }\r\n var $enum1 = ss.enumerate(points);\r\n while ($enum1.moveNext()) {\r\n var pnt = $enum1.current;\r\n pointList.push(pnt);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SpaceTimeController\r\n\r\n function SpaceTimeController() {\r\n }\r\n SpaceTimeController.updateClock = function() {\r\n if (SpaceTimeController._syncToClock) {\r\n var justNow = ss.now();\r\n if (SpaceTimeController._timeRate !== 1) {\r\n var ts = justNow.getTime() - SpaceTimeController.last.getTime();\r\n var ticks = (ts * SpaceTimeController._timeRate);\r\n SpaceTimeController._offset += ticks;\r\n }\r\n SpaceTimeController.last = justNow;\r\n try {\r\n SpaceTimeController._now = new Date(justNow.getTime() + SpaceTimeController._offset);\r\n }\r\n catch ($e1) {\r\n SpaceTimeController._now = new Date(1, 12, 25, 23, 59, 59);\r\n SpaceTimeController._offset = SpaceTimeController._now - ss.now();\r\n }\r\n if (SpaceTimeController._now.getFullYear() > 4000) {\r\n SpaceTimeController._now = new Date(4000, 12, 31, 23, 59, 59);\r\n SpaceTimeController._offset = SpaceTimeController._now - ss.now();\r\n }\r\n if (SpaceTimeController._now.getFullYear() < 1) {\r\n SpaceTimeController._now = new Date(0, 12, 25, 23, 59, 59);\r\n SpaceTimeController._offset = SpaceTimeController._now - ss.now();\r\n }\r\n }\r\n };\r\n SpaceTimeController.getTimeForFutureTime = function(delta) {\r\n try {\r\n if (SpaceTimeController._syncToClock) {\r\n var future = new Date((SpaceTimeController.get_now().getTime() + (delta * 1000) * SpaceTimeController._timeRate));\r\n return future;\r\n }\r\n else {\r\n return SpaceTimeController.get_now();\r\n }\r\n }\r\n catch ($e1) {\r\n return SpaceTimeController.get_now();\r\n }\r\n };\r\n SpaceTimeController.getJNowForFutureTime = function(delta) {\r\n try {\r\n if (SpaceTimeController._syncToClock) {\r\n var future = new Date(SpaceTimeController.get_now().getTime() + ss.truncate((delta * 1000 * SpaceTimeController._timeRate)));\r\n return SpaceTimeController.utcToJulian(future);\r\n }\r\n else {\r\n return SpaceTimeController.utcToJulian(SpaceTimeController.get_now());\r\n }\r\n }\r\n catch ($e1) {\r\n return SpaceTimeController.utcToJulian(SpaceTimeController.get_now());\r\n }\r\n };\r\n SpaceTimeController.get_now = function() {\r\n return SpaceTimeController._now;\r\n };\r\n SpaceTimeController.set_now = function(value) {\r\n SpaceTimeController._now = value;\r\n SpaceTimeController._offset = SpaceTimeController._now - ss.now();\r\n SpaceTimeController.last = ss.now();\r\n return value;\r\n };\r\n SpaceTimeController.syncTime = function() {\r\n SpaceTimeController._offset = 0;\r\n SpaceTimeController._now = ss.now();\r\n SpaceTimeController._syncToClock = true;\r\n };\r\n SpaceTimeController.get_jNow = function() {\r\n return SpaceTimeController.utcToJulian(SpaceTimeController.get_now());\r\n };\r\n SpaceTimeController.get_syncToClock = function() {\r\n return SpaceTimeController._syncToClock;\r\n };\r\n SpaceTimeController.set_syncToClock = function(value) {\r\n if (SpaceTimeController._syncToClock !== value) {\r\n SpaceTimeController._syncToClock = value;\r\n if (value) {\r\n SpaceTimeController.last = ss.now();\r\n SpaceTimeController._offset = SpaceTimeController._now - ss.now();\r\n }\r\n else {\r\n SpaceTimeController._now = new Date(ss.now().getTime() + SpaceTimeController._offset);\r\n }\r\n }\r\n return value;\r\n };\r\n SpaceTimeController.get_timeRate = function() {\r\n return SpaceTimeController._timeRate;\r\n };\r\n SpaceTimeController.set_timeRate = function(value) {\r\n SpaceTimeController._timeRate = value;\r\n return value;\r\n };\r\n SpaceTimeController.get_altitude = function() {\r\n return SpaceTimeController._altitude;\r\n };\r\n SpaceTimeController.set_altitude = function(value) {\r\n SpaceTimeController._altitude = value;\r\n return value;\r\n };\r\n SpaceTimeController.get_location = function() {\r\n SpaceTimeController._location = Coordinates.fromLatLng(Settings.get_active().get_locationLat(), Settings.get_active().get_locationLng());\r\n SpaceTimeController._altitude = Settings.get_active().get_locationAltitude();\r\n return SpaceTimeController._location;\r\n };\r\n SpaceTimeController.set_location = function(value) {\r\n if (Settings.get_globalSettings().get_locationLat() !== value.get_lat()) {\r\n Settings.get_globalSettings().set_locationLat(value.get_lat());\r\n }\r\n if (Settings.get_globalSettings().get_locationLng() !== value.get_lng()) {\r\n Settings.get_globalSettings().set_locationLng(value.get_lng());\r\n }\r\n SpaceTimeController._location = value;\r\n return value;\r\n };\r\n SpaceTimeController.julianToUtc = function(jDate) {\r\n var date = new DT();\r\n date.setJD(jDate, true);\r\n var ms = (date.second() - ss.truncate(date.second())) * 1000;\r\n return new Date(date.year(), date.month() - 1, date.day(), date.hour(), date.minute(), ss.truncate(date.second()), ss.truncate(ms));\r\n };\r\n SpaceTimeController._twoLineDateToJulian = function(p) {\r\n var pre1950 = parseInt(p.substring(0, 1)) < 6;\r\n var year = parseInt(((pre1950) ? ' 20' : '19') + p.substring(0, 2));\r\n var days = parseFloat(p.substring(2, 3));\r\n var fraction = parseFloat(p.substr(5));\r\n var date = new Date(year, 0, 1, 0, 0);\r\n return SpaceTimeController.utcToJulian(date) + (days - 1 + fraction);\r\n };\r\n SpaceTimeController.julianToTwoLineDate = function(jDate) {\r\n return SpaceTimeController.dateToTwoLineDate(SpaceTimeController.julianToUtc(jDate));\r\n };\r\n SpaceTimeController.dateToTwoLineDate = function(date) {\r\n var sb = new ss.StringBuilder();\r\n sb.append(date.getFullYear() % 100);\r\n var fullYear = new Date(date.getFullYear(), 0, 1, 0, 0);\r\n var dayofyear = Math.floor((date - fullYear) / (60 * 60 * 24 * 1000)) + 2;\r\n var day = dayofyear + date.getHours() / 24 + date.getMinutes() / 60 / 24 + date.getSeconds() / 60 / 60 / 24 + date.getMilliseconds() / 1000 / 60 / 60 / 24;\r\n var sDay = SpaceTimeController.tleDayString(day);\r\n sb.append(sDay);\r\n return sb.toString();\r\n };\r\n SpaceTimeController.tleDayString = function(day) {\r\n var formated = day.toString();\r\n var point = formated.indexOf('.');\r\n if (point === -1) {\r\n point = formated.length;\r\n formated += '.0';\r\n }\r\n var len = formated.length - point - 1;\r\n var fill = '00000000';\r\n formated = fill.substr(0, 3 - point) + formated + fill.substr(0, 8 - len);\r\n return formated;\r\n };\r\n SpaceTimeController.utcToJulian = function(utc) {\r\n var year = utc.getUTCFullYear();\r\n var month = utc.getUTCMonth() + 1;\r\n var day = utc.getUTCDate();\r\n var hour = utc.getUTCHours();\r\n var minute = utc.getUTCMinutes();\r\n var second = utc.getUTCSeconds() + utc.getUTCMilliseconds() / 1000;\r\n var dblDay = day + (hour / 24) + (minute / 1440) + (second / 86400);\r\n return AstroCalc.getJulianDay(year, month, dblDay);\r\n };\r\n SpaceTimeController.dateToJD = function(Year, Month, Day, bGregorianCalendar) {\r\n var Y = Year;\r\n var M = Month;\r\n if (M < 3) {\r\n Y = Y - 1;\r\n M = M + 12;\r\n }\r\n var A = 0;\r\n var B = 0;\r\n if (bGregorianCalendar) {\r\n A = ss.truncate((Y / 100));\r\n B = 2 - A + ss.truncate((A / 4));\r\n }\r\n return ss.truncate((365.25 * (Y + 4716))) + ss.truncate((30.6001 * (M + 1))) + Day + B - 1524.5;\r\n };\r\n var SpaceTimeController$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Star\r\n\r\n function Star(input) {\r\n this.magnitude = 0;\r\n this.RA = 0;\r\n this.dec = 0;\r\n this.BMV = 0;\r\n this.id = 0;\r\n this.absoluteMagnitude = 0;\r\n this.par = 0;\r\n this.distance = 0;\r\n var sa = input.split('\\t');\r\n this.id = parseInt(ss.replaceString(sa[0], 'HIP', ''));\r\n this.dec = parseFloat(sa[3]);\r\n this.RA = parseFloat(sa[2]) / 15;\r\n if (sa.length > 4) {\r\n try {\r\n if (sa[4].toUpperCase() !== 'NULL' && !!sa[4]) {\r\n this.magnitude = parseFloat(sa[4]);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n if (sa.length > 5) {\r\n try {\r\n this.BMV = parseFloat(sa[5]);\r\n this._makeColor(this.BMV);\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n if (sa.length > 6) {\r\n this.par = parseFloat(sa[6]);\r\n this._makeDistanceAndMagnitude();\r\n }\r\n }\r\n var Star$ = {\r\n get_name: function() {\r\n return 'HIP' + this.id.toString();\r\n },\r\n get_coordinates: function() {\r\n return Coordinates.fromRaDec(this.RA, this.dec);\r\n },\r\n get_asPlace: function() {\r\n var place = Place.create(this.get_name(), this.dec, this.RA, 1, Constellations.containment.findConstellationForPoint(this.RA, this.dec), 4, -1);\r\n place.set_magnitude(this.magnitude);\r\n place.set_distance(this.distance);\r\n return place;\r\n },\r\n stars: function(input, newish) {\r\n var sa = input.split('\\t');\r\n this.id = parseInt(sa[0]);\r\n this.RA = parseFloat(sa[1]) / 15;\r\n this.dec = parseFloat(sa[2]);\r\n if (sa.length > 3) {\r\n try {\r\n this.magnitude = parseFloat(sa[3]);\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n if (sa.length > 4) {\r\n try {\r\n this.col = Color.load(sa[4]);\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n },\r\n _makeDistanceAndMagnitude: function() {\r\n this.distance = 1 / (this.par / 1000);\r\n this.absoluteMagnitude = this.magnitude - 5 * (Util.logN(this.distance, 10) - 1);\r\n this.distance *= 206264.806;\r\n },\r\n _makeColor: function(bmv) {\r\n var c = 4294967295;\r\n if (bmv <= -0.32) {\r\n c = 4288854271;\r\n }\r\n else if (bmv <= -0.31) {\r\n c = 4288919807;\r\n }\r\n else if (bmv <= -0.3) {\r\n c = 4288985855;\r\n }\r\n else if (bmv <= -0.3) {\r\n c = 4289051391;\r\n }\r\n else if (bmv <= -0.28) {\r\n c = 4289182975;\r\n }\r\n else if (bmv <= -0.26) {\r\n c = 4289314303;\r\n }\r\n else if (bmv <= -0.24) {\r\n c = 4289445887;\r\n }\r\n else if (bmv <= -0.2) {\r\n c = 4289708799;\r\n }\r\n else if (bmv <= -0.16) {\r\n c = 4290037503;\r\n }\r\n else if (bmv <= -0.14) {\r\n c = 4290169087;\r\n }\r\n else if (bmv <= -0.12) {\r\n c = 4290366207;\r\n }\r\n else if (bmv <= -0.09) {\r\n c = 4290563583;\r\n }\r\n else if (bmv <= -0.06) {\r\n c = 4290892031;\r\n }\r\n else if (bmv <= 0) {\r\n c = 4291483391;\r\n }\r\n else if (bmv <= 0.06) {\r\n c = 4292009215;\r\n }\r\n else if (bmv <= 0.14) {\r\n c = 4292732159;\r\n }\r\n else if (bmv <= 0.19) {\r\n c = 4293126399;\r\n }\r\n else if (bmv <= 0.31) {\r\n c = 4294111999;\r\n }\r\n else if (bmv <= 0.36) {\r\n c = 4294571775;\r\n }\r\n else if (bmv <= 0.43) {\r\n c = 4294965756;\r\n }\r\n else if (bmv <= 0.54) {\r\n c = 4294964979;\r\n }\r\n else if (bmv <= 0.59) {\r\n c = 4294964203;\r\n }\r\n else if (bmv <= 0.63) {\r\n c = 4294963687;\r\n }\r\n else if (bmv <= 0.66) {\r\n c = 4294963169;\r\n }\r\n else if (bmv <= 0.74) {\r\n c = 4294962909;\r\n }\r\n else if (bmv <= 0.82) {\r\n c = 4294961877;\r\n }\r\n else if (bmv <= 0.92) {\r\n c = 4294960324;\r\n }\r\n else if (bmv <= 1.15) {\r\n c = 4294959032;\r\n }\r\n else if (bmv <= 1.3) {\r\n c = 4294958516;\r\n }\r\n else if (bmv <= 1.41) {\r\n c = 4294955933;\r\n }\r\n else if (bmv <= 1.48) {\r\n c = 4294954385;\r\n }\r\n else if (bmv <= 1.52) {\r\n c = 4294953351;\r\n }\r\n else if (bmv <= 1.55) {\r\n c = 4294952319;\r\n }\r\n else if (bmv <= 1.56) {\r\n c = 4294951287;\r\n }\r\n else if (bmv <= 1.61) {\r\n c = 4294950257;\r\n }\r\n else if (bmv <= 1.72) {\r\n c = 4294948966;\r\n }\r\n else if (bmv <= 1.84) {\r\n c = 4294947419;\r\n }\r\n else if (bmv <= 2) {\r\n c = 4294946129;\r\n }\r\n this.col = Color.fromInt(c);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Galaxy\r\n\r\n function Galaxy(br) {\r\n this.RA = 0;\r\n this.dec = 0;\r\n this.distance = 0;\r\n this.type = 0;\r\n this.eTypeBucket = 0;\r\n this.size = 5;\r\n this.sdssID = 0;\r\n this.sdssID = br.readInt64();\r\n this.RA = br.readSingle();\r\n this.dec = br.readSingle();\r\n this.distance = br.readSingle();\r\n this.eTypeBucket = br.readByte();\r\n this.size = br.readSingle();\r\n }\r\n Galaxy.getEType = function(value) {\r\n var a = 0;\r\n var b = Galaxy._eTypeBuckets.length - 1;\r\n while (b - a > 1) {\r\n var m = (a + b) / 2;\r\n if (value > Galaxy._eTypeBuckets[m]) {\r\n a = m;\r\n }\r\n else {\r\n b = m;\r\n }\r\n }\r\n return a;\r\n };\r\n var Galaxy$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.LatLngEdges\r\n\r\n function LatLngEdges() {\r\n this.latMin = 0;\r\n this.latMax = 0;\r\n this.lngMin = 0;\r\n this.lngMax = 0;\r\n }\r\n var LatLngEdges$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Tile\r\n\r\n function Tile() {\r\n this._renderTriangleLists = new Array(4);\r\n this._indexBuffers = new Array(4);\r\n this.level = 0;\r\n this.tileX = 0;\r\n this.tileY = 0;\r\n this.texture = null;\r\n this.texture2d = null;\r\n this.isCatalogTile = false;\r\n this.readyToRender = false;\r\n this.inViewFrustum = true;\r\n this.globalCenter = Vector3d.zero;\r\n this.children = [ null, null, null, null ];\r\n this.parent = null;\r\n this.localCenter = new Vector3d();\r\n this.renderedAtOrBelowGeneration = 0;\r\n this._demScaleFactor = 6371000;\r\n this.demIndex = 0;\r\n this.demAverage = 0;\r\n this.demReady = false;\r\n this.texReady = false;\r\n this.demTile = false;\r\n this.demDownloading = false;\r\n this.renderedGeneration = 0;\r\n this.accomidation = 0;\r\n this.accessCount = 0;\r\n this.downloading = false;\r\n this.geometryCreated = false;\r\n this._isHdTile = false;\r\n this.demSize = 33 * 33;\r\n this._topLeftScreen = new Vector3d();\r\n this._bottomRightScreen = new Vector3d();\r\n this._topRightScreen = new Vector3d();\r\n this._bottomLeftScreen = new Vector3d();\r\n this.sphereRadius = 0;\r\n this.sphereCenter = new Vector3d();\r\n this.radius = 1;\r\n this.triangleCount = 0;\r\n this.requestHits = 0;\r\n this.requestPending = false;\r\n this.errored = false;\r\n this._key = null;\r\n this._tileId = null;\r\n this._vertexCount = 0;\r\n this.renderChildPart = null;\r\n this.renderChildPart = new Array(4);\r\n for (var i = 0; i < 4; i++) {\r\n this.renderChildPart[i] = BlendState.create(false, 500);\r\n }\r\n }\r\n Tile.getFrustumList = function() {\r\n try {\r\n return Tile.frustumList;\r\n }\r\n catch ($e1) {\r\n return null;\r\n }\r\n };\r\n Tile.get_subDivisions = function() {\r\n return 32;\r\n };\r\n var Tile$ = {\r\n getIndexBuffer: function(index, accomidation) {\r\n return this._indexBuffers[index];\r\n },\r\n isPointInTile: function(lat, lng) {\r\n return false;\r\n },\r\n getSurfacePointAltitude: function(lat, lng, meters) {\r\n return 0;\r\n },\r\n makeTexture: function() {\r\n if (Tile.prepDevice != null) {\r\n try {\r\n this.texture2d = Tile.prepDevice.createTexture();\r\n Tile.prepDevice.bindTexture(3553, this.texture2d);\r\n Tile.prepDevice.texParameteri(3553, 10242, 33071);\r\n Tile.prepDevice.texParameteri(3553, 10243, 33071);\r\n if (this.dataset.get_extension().toLowerCase().indexOf('fits') > -1 && RenderContext.useGlVersion2) {\r\n Tile.prepDevice.texImage2D(3553, 0, 33326, ss.truncate(this.fitsImage.get_sizeX()), ss.truncate(this.fitsImage.get_sizeY()), 0, 6403, 5126, this.fitsImage.dataUnit);\r\n Tile.prepDevice.texParameteri(3553, 10241, 9728);\r\n Tile.prepDevice.texParameteri(3553, 10240, 9728);\r\n }\r\n else {\r\n var image = this.texture;\r\n if ((!Texture.isPowerOfTwo(this.texture.height) | !Texture.isPowerOfTwo(this.texture.width)) === 1) {\r\n var temp = document.createElement('canvas');\r\n temp.height = Texture.fitPowerOfTwo(image.height);\r\n temp.width = Texture.fitPowerOfTwo(image.width);\r\n var ctx = temp.getContext('2d');\r\n ctx.drawImage(image, 0, 0, temp.width, temp.height);\r\n image = temp;\r\n }\r\n Tile.prepDevice.texImage2D(3553, 0, 6408, 6408, 5121, image);\r\n Tile.prepDevice.texParameteri(3553, 10241, 9985);\r\n Tile.prepDevice.generateMipmap(3553);\r\n }\r\n Tile.prepDevice.bindTexture(3553, null);\r\n }\r\n catch ($e1) {\r\n this.errored = true;\r\n }\r\n }\r\n },\r\n addVertex: function(buffer, index, p) {\r\n buffer[index++] = p.position.x;\r\n buffer[index++] = p.position.y;\r\n buffer[index++] = p.position.z;\r\n buffer[index++] = p.tu;\r\n buffer[index++] = p.tv;\r\n return index;\r\n },\r\n geoTo3dWithAlt: function(lat, lng, useLocalCenter, rev) {\r\n lat = Math.max(Math.min(90, lat), -90);\r\n lng = Math.max(Math.min(180, lng), -180);\r\n if (!Tile.demEnabled || this.demData == null) {\r\n return this.geoTo3d(lat, lng, useLocalCenter);\r\n }\r\n if (rev) {\r\n lng -= 180;\r\n }\r\n var altitude = this.demData[this.demIndex];\r\n var retVal = this.geoTo3dWithAltitude(lat, lng, altitude, useLocalCenter);\r\n return retVal;\r\n },\r\n geoTo3dWithAltitude: function(lat, lng, altitude, useLocalCenter) {\r\n var radius = 1 + (altitude / this.get__demScaleFactor());\r\n var retVal = Vector3d.create((Math.cos(lng * Tile.RC) * Math.cos(lat * Tile.RC) * radius), (Math.sin(lat * Tile.RC) * radius), (Math.sin(lng * Tile.RC) * Math.cos(lat * Tile.RC) * radius));\r\n if (useLocalCenter) {\r\n retVal.subtract(this.localCenter);\r\n }\r\n return retVal;\r\n },\r\n get__demScaleFactor: function() {\r\n return this._demScaleFactor;\r\n },\r\n set__demScaleFactor: function(value) {\r\n this._demScaleFactor = value;\r\n return value;\r\n },\r\n requestImage: function() {\r\n var $this = this;\r\n\r\n if (this.dataset.get_extension().toLowerCase().indexOf('fits') > -1) {\r\n if (!this.downloading && !this.readyToRender) {\r\n this.downloading = true;\r\n if (RenderContext.useGlVersion2) {\r\n this.fitsImage = new FitsImageTile(this.dataset, this.get_URL(), function(wcsImage) {\r\n $this.downloading = false;\r\n $this.errored = $this.fitsImage.errored;\r\n TileCache.removeFromQueue($this.get_key(), true);\r\n if (!$this.fitsImage.errored) {\r\n if (!$this.level) {\r\n $this.dataset.get_fitsProperties()._fireMainImageLoaded($this.fitsImage);\r\n $this.fitsImage.applyDisplaySettings();\r\n }\r\n $this.texReady = true;\r\n $this.readyToRender = $this.texReady && ($this.demReady || !$this.demTile);\r\n $this.requestPending = false;\r\n $this.makeTexture();\r\n }\r\n });\r\n }\r\n else {\r\n this.fitsImage = FitsImageJs.createTiledFits(this.dataset, this.get_URL(), function(wcsImage) {\r\n if (!$this.level) {\r\n $this.dataset.get_fitsProperties()._fireMainImageLoaded($this.fitsImage);\r\n }\r\n $this.texReady = true;\r\n $this.downloading = false;\r\n $this.errored = $this.fitsImage.errored;\r\n $this.readyToRender = $this.texReady && ($this.demReady || !$this.demTile);\r\n $this.requestPending = false;\r\n TileCache.removeFromQueue($this.get_key(), true);\r\n $this.texture2d = wcsImage.getBitmap().getTexture();\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n if (this.get_dataset().get_wcsImage() != null) {\r\n this.texReady = true;\r\n this.downloading = false;\r\n this.errored = false;\r\n this.readyToRender = true;\r\n this.requestPending = false;\r\n TileCache.removeFromQueue(this.get_key(), true);\r\n return;\r\n }\r\n if (!this.downloading && !this.readyToRender) {\r\n this.downloading = true;\r\n this.texture = document.createElement('img');\r\n var xdomimg = this.texture;\r\n this.texture.addEventListener('load', function(e) {\r\n $this.texReady = true;\r\n $this.downloading = false;\r\n $this.errored = false;\r\n $this.readyToRender = $this.texReady && ($this.demReady || !$this.demTile);\r\n $this.requestPending = false;\r\n TileCache.removeFromQueue($this.get_key(), true);\r\n $this.makeTexture();\r\n }, false);\r\n this.texture.addEventListener('error', function(e) {\r\n if (!$this.texture.hasAttribute('proxyattempt')) {\r\n $this.texture.setAttribute('proxyattempt', true);\r\n var new_url = URLHelpers.singleton.activateProxy($this.texture.src);\r\n if (new_url != null) {\r\n $this.texture.src = new_url;\r\n return;\r\n }\r\n }\r\n $this.downloading = false;\r\n $this.readyToRender = false;\r\n $this.errored = true;\r\n $this.requestPending = false;\r\n TileCache.removeFromQueue($this.get_key(), true);\r\n }, false);\r\n xdomimg.crossOrigin = 'anonymous';\r\n this.texture.src = this.get_URL();\r\n }\r\n }\r\n },\r\n createDemFromParent: function() {\r\n return false;\r\n },\r\n _loadDemData: function() {\r\n if (this.demFile == null) {\r\n return this.createDemFromParent();\r\n }\r\n this.demData = this.demFile;\r\n if (this.demFile.length !== 1089 && this.demFile.length !== 513) {\r\n return this.createDemFromParent();\r\n }\r\n var total = 0;\r\n var $enum1 = ss.enumerate(this.demData);\r\n while ($enum1.moveNext()) {\r\n var fv = $enum1.current;\r\n total += fv;\r\n }\r\n this.demAverage /= this.demData.length;\r\n return true;\r\n },\r\n requestDem: function() {\r\n var $this = this;\r\n\r\n if (!this.readyToRender && !this.demDownloading) {\r\n this.demTile = true;\r\n this.demDownloading = true;\r\n Tile.callCount++;\r\n var xhr = new XMLHttpRequest();\r\n xhr.addEventListener('load', function(e) {\r\n $this.demReady = true;\r\n $this.demDownloading = false;\r\n $this.readyToRender = $this.texReady && ($this.demReady || !$this.demTile);\r\n $this.requestPending = false;\r\n try {\r\n $this.demFile = new Float32Array(xhr.response);\r\n }\r\n catch ($e1) {\r\n }\r\n TileCache.removeFromQueue($this.get_key(), true);\r\n }, false);\r\n xhr.addEventListener('error', function(e) {\r\n $this.demDownloading = false;\r\n $this.demReady = false;\r\n $this.readyToRender = false;\r\n $this.errored = true;\r\n $this.requestPending = false;\r\n TileCache.removeFromQueue($this.get_key(), true);\r\n }, false);\r\n xhr.open('GET', this.get_demURL(), true);\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send();\r\n }\r\n },\r\n draw3D: function(renderContext, opacity) {\r\n this.renderedGeneration = Tile.currentRenderGeneration;\r\n Tile.tilesTouched++;\r\n this.accessCount = TileCache.accessID++;\r\n if (this.errored) {\r\n return false;\r\n }\r\n var xMax = 2;\r\n this.inViewFrustum = true;\r\n if (!this.readyToRender) {\r\n TileCache.addTileToQueue(this);\r\n return false;\r\n }\r\n var transitioning = false;\r\n var childIndex = 0;\r\n var yOffset = 0;\r\n if (this.dataset.get_mercator() || this.dataset.get_bottomsUp()) {\r\n yOffset = 1;\r\n }\r\n var xOffset = 0;\r\n var anythingToRender = false;\r\n var childRendered = false;\r\n for (var y1 = 0; y1 < 2; y1++) {\r\n for (var x1 = 0; x1 < xMax; x1++) {\r\n if (this.level < this.dataset.get_levels()) {\r\n if (this.children[childIndex] == null) {\r\n this.children[childIndex] = TileCache.getTile(this.level + 1, this.tileX * 2 + ((x1 + xOffset) % 2), this.tileY * 2 + ((y1 + yOffset) % 2), this.dataset, this);\r\n }\r\n if (this.children[childIndex].isTileInFrustum(renderContext.get_frustum())) {\r\n this.inViewFrustum = true;\r\n if (this.children[childIndex].isTileBigEnough(renderContext)) {\r\n this.renderChildPart[childIndex].set_targetState(!this.children[childIndex].draw3D(renderContext, opacity));\r\n if (this.renderChildPart[childIndex].get_targetState()) {\r\n childRendered = true;\r\n }\r\n }\r\n else {\r\n this.renderChildPart[childIndex].set_targetState(true);\r\n }\r\n }\r\n else {\r\n this.renderChildPart[childIndex].set_targetState(this.renderChildPart[childIndex].set_state(false));\r\n }\r\n if (this.renderChildPart[childIndex].get_targetState() !== this.renderChildPart[childIndex].get_state()) {\r\n transitioning = true;\r\n }\r\n }\r\n else {\r\n this.renderChildPart[childIndex].set_state(true);\r\n }\r\n if (!!this.renderChildPart[childIndex].get_state()) {\r\n anythingToRender = true;\r\n }\r\n childIndex++;\r\n }\r\n }\r\n if (childRendered || anythingToRender) {\r\n this.renderedAtOrBelowGeneration = Tile.currentRenderGeneration;\r\n if (this.parent != null) {\r\n this.parent.renderedAtOrBelowGeneration = this.renderedAtOrBelowGeneration;\r\n }\r\n }\r\n if (!anythingToRender) {\r\n return true;\r\n }\r\n if (!this.createGeometry(renderContext)) {\r\n return false;\r\n }\r\n Tile.tilesInView++;\r\n this.accomidation = this._computeAccomidation();\r\n for (var i = 0; i < 4; i++) {\r\n if (this.renderChildPart[i].get_targetState()) {\r\n this.renderPart(renderContext, i, (opacity / 100), false);\r\n }\r\n }\r\n return true;\r\n },\r\n _computeAccomidation: function() {\r\n var accVal = 0;\r\n if (!Tile.useAccomidation) {\r\n return 0;\r\n }\r\n var top = TileCache.getCachedTile(this.level, this.tileX, this.tileY + 1, this.dataset, this);\r\n if (top == null || top.renderedAtOrBelowGeneration < Tile.currentRenderGeneration - 2) {\r\n accVal += 1;\r\n }\r\n var right = TileCache.getCachedTile(this.level, this.tileX + 1, this.tileY, this.dataset, this);\r\n if (right == null || right.renderedAtOrBelowGeneration < Tile.currentRenderGeneration - 2) {\r\n accVal += 2;\r\n }\r\n var bottom = TileCache.getCachedTile(this.level, this.tileX, this.tileY - 1, this.dataset, this);\r\n if (bottom == null || bottom.renderedAtOrBelowGeneration < Tile.currentRenderGeneration - 2) {\r\n accVal += 4;\r\n }\r\n var left = TileCache.getCachedTile(this.level, this.tileX - 1, this.tileY, this.dataset, this);\r\n if (left == null || left.renderedAtOrBelowGeneration < Tile.currentRenderGeneration - 2) {\r\n accVal += 8;\r\n }\r\n return accVal;\r\n },\r\n renderPart: function(renderContext, part, opacity, combine) {\r\n if (Tile.prepDevice == null) {\r\n var lighting = renderContext.lighting && renderContext.get_sunPosition() != null;\r\n var $enum1 = ss.enumerate(this._renderTriangleLists[part]);\r\n while ($enum1.moveNext()) {\r\n var tri = $enum1.current;\r\n tri.opacity = opacity;\r\n if (lighting) {\r\n var norm = tri.normal.copy();\r\n renderContext.get_world().multiplyVector(norm);\r\n norm.normalize();\r\n var light = Vector3d.dot(norm, renderContext.get_sunPosition());\r\n if (light < 0) {\r\n light = 0;\r\n }\r\n else {\r\n light = Math.min(1, (light * 1));\r\n }\r\n tri.lighting = light;\r\n }\r\n else {\r\n tri.lighting = 1;\r\n }\r\n tri.draw(renderContext.device, renderContext.WVP);\r\n }\r\n }\r\n else {\r\n if (RenderContext.useGlVersion2 && this.fitsImage != null) {\r\n ColorMapContainer.bindColorMapTexture(Tile.prepDevice, this.dataset.get_fitsProperties().colorMapName);\r\n FitsShader.min = this.dataset.get_fitsProperties().lowerCut;\r\n FitsShader.max = this.dataset.get_fitsProperties().upperCut;\r\n FitsShader.containsBlanks = this.dataset.get_fitsProperties().containsBlanks;\r\n FitsShader.blankValue = this.dataset.get_fitsProperties().blankValue;\r\n FitsShader.bZero = this.dataset.get_fitsProperties().bZero;\r\n FitsShader.bScale = this.dataset.get_fitsProperties().bScale;\r\n FitsShader.scaleType = this.dataset.get_fitsProperties().scaleType;\r\n FitsShader.transparentBlack = this.dataset.get_fitsProperties().transparentBlack;\r\n FitsShader.use(renderContext, this._vertexBuffer, this.getIndexBuffer(part, this.accomidation), this.texture2d, opacity, false, this.globalCenter);\r\n }\r\n else {\r\n TileShader.use(renderContext, this._vertexBuffer, this.getIndexBuffer(part, this.accomidation), this.texture2d, opacity, false, this.globalCenter);\r\n }\r\n renderContext.gl.drawElements(4, this.triangleCount * 3, 5123, 0);\r\n }\r\n },\r\n cleanUp: function(removeFromParent) {\r\n this.readyToRender = false;\r\n this.demData = null;\r\n this.demFile = null;\r\n this.demDownloading = false;\r\n this.texReady = false;\r\n this.demReady = false;\r\n this.errored = false;\r\n if (this.texture != null) {\r\n this.texture = null;\r\n }\r\n this._renderTriangleLists = new Array(4);\r\n this.geometryCreated = false;\r\n if (removeFromParent && this.parent != null) {\r\n this.parent.removeChild(this);\r\n this.parent = null;\r\n }\r\n if (Tile.prepDevice != null) {\r\n var $enum1 = ss.enumerate(this._indexBuffers);\r\n while ($enum1.moveNext()) {\r\n var buf = $enum1.current;\r\n Tile.prepDevice.deleteBuffer(buf);\r\n }\r\n this._indexBuffers = new Array(4);\r\n if (this._vertexBuffer != null) {\r\n Tile.prepDevice.deleteBuffer(this._vertexBuffer);\r\n this._vertexBuffer = null;\r\n }\r\n if (this.texture2d != null) {\r\n Tile.prepDevice.deleteTexture(this.texture2d);\r\n this.texture2d = null;\r\n }\r\n }\r\n },\r\n removeChild: function(child) {\r\n for (var i = 0; i < 4; i++) {\r\n if (this.children[i] === child) {\r\n this.children[i] = null;\r\n return;\r\n }\r\n }\r\n },\r\n createGeometry: function(renderContext) {\r\n if (Tile.demEnabled && this.demReady && this.demData == null) {\r\n if (!this._loadDemData()) {\r\n return false;\r\n }\r\n }\r\n if (Tile.demEnabled && this.demData == null) {\r\n return false;\r\n }\r\n this.readyToRender = true;\r\n return true;\r\n },\r\n calcSphere: function() {\r\n var corners = new Array(4);\r\n corners[0] = this.topLeft;\r\n corners[1] = this.bottomRight;\r\n corners[2] = this.topRight;\r\n corners[3] = this.bottomLeft;\r\n var result = ConvexHull.findEnclosingSphere(corners);\r\n this.sphereCenter = result.center;\r\n this.sphereRadius = result.radius;\r\n },\r\n isTileBigEnough: function(renderContext) {\r\n if (this.level > 1) {\r\n var wvp = renderContext.WVP;\r\n wvp._transformTo(this.topLeft, this._topLeftScreen);\r\n wvp._transformTo(this.bottomRight, this._bottomRightScreen);\r\n wvp._transformTo(this.topRight, this._topRightScreen);\r\n wvp._transformTo(this.bottomLeft, this._bottomLeftScreen);\r\n var top = this._topLeftScreen;\r\n top.subtract(this._topRightScreen);\r\n var topLength = top.length();\r\n var bottom = this._bottomLeftScreen;\r\n bottom.subtract(this._bottomRightScreen);\r\n var bottomLength = bottom.length();\r\n var left = this._bottomLeftScreen;\r\n left.subtract(this._topLeftScreen);\r\n var leftLength = left.length();\r\n var right = this._bottomRightScreen;\r\n right.subtract(this._topRightScreen);\r\n var rightLength = right.length();\r\n var lengthMax = Math.max(Math.max(rightLength, leftLength), Math.max(bottomLength, topLength));\r\n if (lengthMax < 300) {\r\n return false;\r\n }\r\n else {\r\n Tile.deepestLevel = (this.level > Tile.deepestLevel) ? this.level : Tile.deepestLevel;\r\n }\r\n }\r\n return true;\r\n },\r\n isTileInFrustum: function(frustum) {\r\n if (this.level < 2 && (!this.dataset.get_projection() || this.dataset.get_projection() === 3)) {\r\n }\r\n this.inViewFrustum = false;\r\n var centerV4 = new Vector4d(this.sphereCenter.x, this.sphereCenter.y, this.sphereCenter.z, 1);\r\n for (var i = 0; i < 6; i++) {\r\n if (frustum[i].dot(centerV4) < -this.sphereRadius) {\r\n return false;\r\n }\r\n }\r\n this.inViewFrustum = true;\r\n return true;\r\n },\r\n get_sphereRadius: function() {\r\n return this.sphereRadius;\r\n },\r\n get_sphereCenter: function() {\r\n return this.sphereCenter;\r\n },\r\n geoTo3d: function(lat, lng, useLocalCenter) {\r\n if (this.dataset.get_dataSetType() === 3) {\r\n var retVal = Vector3d.create(-(Math.cos(lng * Tile.RC) * Math.cos(lat * Tile.RC) * this.radius), (Math.sin(lat * Tile.RC) * this.radius), (Math.sin(lng * Tile.RC) * Math.cos(lat * Tile.RC) * this.radius));\r\n return retVal;\r\n }\r\n else {\r\n lng -= 180;\r\n var retVal = Vector3d.create((Math.cos(lng * Tile.RC) * Math.cos(lat * Tile.RC) * this.radius), (Math.sin(lat * Tile.RC) * this.radius), (Math.sin(lng * Tile.RC) * Math.cos(lat * Tile.RC) * this.radius));\r\n return retVal;\r\n }\r\n },\r\n onCreateVertexBuffer: function(sender, e) {\r\n },\r\n get_dataset: function() {\r\n return this.dataset;\r\n },\r\n set_dataset: function(value) {\r\n this.dataset = value;\r\n return value;\r\n },\r\n get_key: function() {\r\n if (this._key == null) {\r\n this._key = Imageset.getTileKey(this.dataset, this.level, this.tileX, this.tileY, this.parent);\r\n }\r\n return this._key;\r\n },\r\n get_URL: function() {\r\n var rewritten_url = URLHelpers.singleton.rewrite(this.dataset.get_url(), 0);\r\n var returnUrl = rewritten_url;\r\n if (rewritten_url.indexOf('{1}') > -1) {\r\n if (!this.dataset.get_projection() && !ss.emptyString(this.dataset.get_quadTreeTileMap())) {\r\n returnUrl = ss.format(rewritten_url, this.getServerID(), this.getTileID());\r\n if (returnUrl.indexOf('virtualearth.net') > -1) {\r\n returnUrl += '&n=z';\r\n }\r\n return returnUrl;\r\n }\r\n else {\r\n return ss.format(rewritten_url, this.dataset.get_imageSetID(), this.level, this.tileX, this.tileY);\r\n }\r\n }\r\n returnUrl = ss.replaceString(returnUrl, '{X}', this.tileX.toString());\r\n returnUrl = ss.replaceString(returnUrl, '{Y}', this.tileY.toString());\r\n returnUrl = ss.replaceString(returnUrl, '{L}', this.level.toString());\r\n var hash = 0;\r\n if (returnUrl.indexOf('{S:0}') > -1) {\r\n hash = 0;\r\n returnUrl = ss.replaceString(returnUrl, '{S:0}', '{S}');\r\n }\r\n if (returnUrl.indexOf('{S:1}') > -1) {\r\n hash = 1;\r\n returnUrl = ss.replaceString(returnUrl, '{S:1}', '{S}');\r\n }\r\n if (returnUrl.indexOf('{S:2}') > -1) {\r\n hash = 2;\r\n returnUrl = ss.replaceString(returnUrl, '{S:2}', '{S}');\r\n }\r\n if (returnUrl.indexOf('{S:3}') > -1) {\r\n hash = 3;\r\n returnUrl = ss.replaceString(returnUrl, '{S:3}', '{S}');\r\n }\r\n if (returnUrl.indexOf('a{S}') > -1) {\r\n returnUrl = ss.replaceString(returnUrl, 'a{S}', 'r{S}');\r\n }\r\n if (returnUrl.indexOf('h{S}') > -1) {\r\n returnUrl = ss.replaceString(returnUrl, 'h{S}', 'r{S}');\r\n }\r\n if (returnUrl.indexOf('//r{S}.ortho.tiles.virtualearth.net') > -1) {\r\n returnUrl = ss.replaceString(returnUrl, '//r{S}.ortho.tiles.virtualearth.net', '//ecn.t{S}.tiles.virtualearth.net');\r\n }\r\n var id = this.getTileID();\r\n var server = '';\r\n if (!id.length) {\r\n server = hash.toString();\r\n }\r\n else {\r\n server = id.substr(id.length - 1, 1);\r\n }\r\n returnUrl = ss.replaceString(returnUrl, '{Q}', id);\r\n returnUrl = ss.replaceString(returnUrl, '{S}', server);\r\n if (returnUrl.indexOf('virtualearth.net') > -1) {\r\n returnUrl += '&n=z';\r\n }\r\n return returnUrl;\r\n },\r\n get_demURL: function() {\r\n var rewritten_url = URLHelpers.singleton.rewrite(this.dataset.get_demUrl(), 0);\r\n if (!this.dataset.get_projection()) {\r\n var baseUrl = URLHelpers.singleton.coreStaticUrl('wwtweb/demtile.aspx?q={0},{1},{2},M');\r\n if (!ss.emptyString(rewritten_url)) {\r\n baseUrl = rewritten_url;\r\n }\r\n }\r\n if (rewritten_url.indexOf('{1}') > -1) {\r\n return ss.format(rewritten_url + '&new', this.level, this.tileX, this.tileY);\r\n }\r\n var returnUrl = rewritten_url;\r\n returnUrl = ss.replaceString(returnUrl, '{X}', this.tileX.toString());\r\n returnUrl = ss.replaceString(returnUrl, '{Y}', this.tileY.toString());\r\n returnUrl = ss.replaceString(returnUrl, '{L}', this.level.toString());\r\n var hash = 0;\r\n if (returnUrl.indexOf('{S:0}') > -1) {\r\n hash = 0;\r\n returnUrl = ss.replaceString(returnUrl, '{S:0}', '{S}');\r\n }\r\n if (returnUrl.indexOf('{S:1}') > -1) {\r\n hash = 1;\r\n returnUrl = ss.replaceString(returnUrl, '{S:1}', '{S}');\r\n }\r\n if (returnUrl.indexOf('{S:2}') > -1) {\r\n hash = 2;\r\n returnUrl = ss.replaceString(returnUrl, '{S:2}', '{S}');\r\n }\r\n if (returnUrl.indexOf('{S:3}') > -1) {\r\n hash = 3;\r\n returnUrl = ss.replaceString(returnUrl, '{S:3}', '{S}');\r\n }\r\n var id = this.getTileID();\r\n var server = '';\r\n if (!id.length) {\r\n server = hash.toString();\r\n }\r\n else {\r\n server = id.substr(id.length - 1, 1);\r\n }\r\n returnUrl = ss.replaceString(returnUrl, '{Q}', id);\r\n returnUrl = ss.replaceString(returnUrl, '{S}', server);\r\n return returnUrl;\r\n },\r\n getServerID: function() {\r\n var server = (this.tileX & 1) + ((this.tileY & 1) << 1);\r\n return server;\r\n },\r\n getTileID: function() {\r\n if (this._tileId != null) {\r\n return this._tileId;\r\n }\r\n var netLevel = this.level;\r\n var netX = this.tileX;\r\n var netY = this.tileY;\r\n if (this.dataset.get_projection() === 1) {\r\n netLevel++;\r\n }\r\n var tileMap = this.dataset.get_quadTreeTileMap();\r\n if (!ss.emptyString(tileMap)) {\r\n var sb = new ss.StringBuilder();\r\n for (var i = netLevel; i > 0; --i) {\r\n var mask = 1 << (i - 1);\r\n var val = 0;\r\n if (!!(netX & mask)) {\r\n val = 1;\r\n }\r\n if (!!(netY & mask)) {\r\n val += 2;\r\n }\r\n sb.append(tileMap.substr(val, 1));\r\n }\r\n this._tileId = sb.toString();\r\n return this._tileId;\r\n }\r\n else {\r\n this._tileId = '0';\r\n return this._tileId;\r\n }\r\n },\r\n get_vertexCount: function() {\r\n return this._vertexCount;\r\n },\r\n set_vertexCount: function(value) {\r\n this._vertexCount = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TileCache\r\n\r\n function TileCache() {\r\n }\r\n TileCache.getTile = function(level, x, y, dataset, parent) {\r\n var retTile = null;\r\n var tileKey = Imageset.getTileKey(dataset, level, x, y, parent);\r\n if (!ss.keyExists(TileCache._tiles, tileKey)) {\r\n retTile = Imageset.getNewTile(dataset, level, x, y, parent);\r\n if (retTile != null) {\r\n TileCache._tiles[tileKey] = retTile;\r\n }\r\n }\r\n else {\r\n retTile = TileCache._tiles[tileKey];\r\n }\r\n var p = 0;\r\n return retTile;\r\n };\r\n TileCache.getCachedTile = function(level, x, y, dataset, parent) {\r\n if (level < dataset.get_baseLevel()) {\r\n return null;\r\n }\r\n var retTile = null;\r\n var tileKey = Imageset.getTileKey(dataset, level, x, y, parent);\r\n try {\r\n if (!ss.keyExists(TileCache._tiles, tileKey)) {\r\n return null;\r\n }\r\n else {\r\n retTile = TileCache._tiles[tileKey];\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n return retTile;\r\n };\r\n TileCache.getReadyToRenderTileCount = function() {\r\n var notReadyCullList = [];\r\n var readyCullList = [];\r\n try {\r\n try {\r\n var $enum1 = ss.enumerate(ss.keys(TileCache._tiles));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var tile = TileCache._tiles[key];\r\n if (tile.renderedGeneration < (Tile.currentRenderGeneration - 10) && !(tile.requestPending || tile.downloading)) {\r\n if (tile.readyToRender) {\r\n readyCullList.push(tile);\r\n }\r\n else {\r\n notReadyCullList.push(tile);\r\n }\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n return readyCullList.length;\r\n }\r\n catch ($e3) {\r\n return -1;\r\n }\r\n };\r\n TileCache.processQueue = function(renderContext) {\r\n while (ss.keyCount(TileCache._queue) > 0 && TileCache.openThreads > 0) {\r\n var minDistance = 100000;\r\n var overlayTile = false;\r\n var maxKey = null;\r\n var level = 1000;\r\n var $enum1 = ss.enumerate(ss.keys(TileCache._queue));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var t = TileCache._queue[key];\r\n if (!t.requestPending && t.inViewFrustum) {\r\n var vectTemp = Vector3d.makeCopy(t.get_sphereCenter());\r\n vectTemp._transformByMatrics(renderContext.get_world());\r\n if (renderContext.space) {\r\n vectTemp.subtract(Vector3d.create(0, 0, -1));\r\n }\r\n else {\r\n vectTemp.subtract(renderContext.cameraPosition);\r\n }\r\n var distTemp = Math.max(0, vectTemp.length() - t.get_sphereRadius());\r\n var thisIsOverlay = (t.get_dataset().get_projection() === 2) || (t.get_dataset().get_projection() === 5);\r\n if (distTemp < minDistance && (!overlayTile || thisIsOverlay)) {\r\n minDistance = distTemp;\r\n maxKey = t.get_key();\r\n level = t.level;\r\n overlayTile = thisIsOverlay;\r\n }\r\n }\r\n }\r\n if (maxKey != null) {\r\n var workTile = TileCache._queue[maxKey];\r\n workTile.requestPending = true;\r\n TileCache.openThreads--;\r\n if (TileCache.openThreads < 0) {\r\n TileCache.openThreads = 0;\r\n }\r\n workTile.requestImage();\r\n if (workTile.get_dataset().get_elevationModel()) {\r\n workTile.requestDem();\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n };\r\n TileCache.addTileToQueue = function(tile) {\r\n var hitValue;\r\n hitValue = 256;\r\n if (!tile.downloading && !tile.readyToRender) {\r\n if (ss.keyExists(TileCache._queue, tile.get_key())) {\r\n TileCache._queue[tile.get_key()].requestHits += hitValue;\r\n }\r\n else {\r\n tile.requestHits = hitValue;\r\n TileCache._queue[tile.get_key()] = tile;\r\n }\r\n }\r\n return true;\r\n };\r\n TileCache.removeFromQueue = function(key, complete) {\r\n if (complete) {\r\n var workTile = TileCache._queue[key];\r\n if (workTile != null) {\r\n workTile.requestPending = false;\r\n delete TileCache._queue[workTile.get_key()];\r\n }\r\n TileCache.openThreads++;\r\n }\r\n delete TileCache._queue[key];\r\n };\r\n TileCache.clearCache = function() {\r\n ss.clearKeys(TileCache._tiles);\r\n };\r\n TileCache.purgeQueue = function() {\r\n ss.clearKeys(TileCache._queue);\r\n };\r\n TileCache.purgeLRU = function() {\r\n if (ss.keyCount(TileCache._tiles) < TileCache.maxReadyToRenderSize) {\r\n return;\r\n }\r\n var notReadyCullList = [];\r\n var readyCullList = [];\r\n try {\r\n try {\r\n var $enum1 = ss.enumerate(ss.keys(TileCache._tiles));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var tile = TileCache._tiles[key];\r\n if (tile.renderedGeneration < (Tile.currentRenderGeneration - 10) && !(tile.requestPending || tile.downloading)) {\r\n if (tile.readyToRender) {\r\n readyCullList.push(tile);\r\n }\r\n else {\r\n notReadyCullList.push(tile);\r\n }\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n TileCache.readyToRenderCount = readyCullList.length;\r\n if (readyCullList.length > TileCache.maxReadyToRenderSize) {\r\n readyCullList.sort(function(t1, t2) {\r\n return (t2.accessCount < t1.accessCount) ? 1 : ((t2.accessCount === t1.accessCount) ? 0 : -1);\r\n });\r\n var totalToPurge = readyCullList.length - TileCache.maxReadyToRenderSize;\r\n var $enum3 = ss.enumerate(readyCullList);\r\n while ($enum3.moveNext()) {\r\n var tile = $enum3.current;\r\n if (totalToPurge < 1) {\r\n break;\r\n }\r\n tile.cleanUp(false);\r\n totalToPurge--;\r\n }\r\n }\r\n if (ss.keyCount(TileCache._tiles) < TileCache.maxTileCacheSize) {\r\n return;\r\n }\r\n if (notReadyCullList.length > TileCache.maxTileCacheSize) {\r\n notReadyCullList.sort(function(t1, t2) {\r\n return (t2.accessCount < t1.accessCount) ? 1 : ((t2.accessCount === t1.accessCount) ? 0 : -1);\r\n });\r\n var totalToPurge = notReadyCullList.length - TileCache.maxTileCacheSize;\r\n if (totalToPurge > 20) {\r\n totalToPurge = 20;\r\n }\r\n var $enum4 = ss.enumerate(notReadyCullList);\r\n while ($enum4.moveNext()) {\r\n var tile = $enum4.current;\r\n if (totalToPurge < 1) {\r\n break;\r\n }\r\n tile.cleanUp(true);\r\n delete TileCache._tiles[tile.get_key()];\r\n totalToPurge--;\r\n }\r\n }\r\n }\r\n catch ($e5) {\r\n }\r\n finally {\r\n }\r\n return;\r\n };\r\n TileCache.decimateQueue = function() {\r\n var list = [];\r\n var $enum1 = ss.enumerate(ss.keys(TileCache._queue));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var t = TileCache._queue[key];\r\n if (!t.requestPending) {\r\n t.requestHits = t.requestHits / 2;\r\n try {\r\n if (t.requestHits < 2) {\r\n list.push(t);\r\n }\r\n else if (!t.inViewFrustum) {\r\n list.push(t);\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n }\r\n var $enum3 = ss.enumerate(list);\r\n while ($enum3.moveNext()) {\r\n var t = $enum3.current;\r\n delete TileCache._queue[t.get_key()];\r\n }\r\n };\r\n var TileCache$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.DistanceCalc\r\n\r\n function DistanceCalc() {\r\n }\r\n DistanceCalc.lineToPoint = function(l0, l1, p) {\r\n var v = Vector3d.subtractVectors(l1, l0);\r\n var w = Vector3d.subtractVectors(p, l0);\r\n var dist = Vector3d.cross(w, v).length() / v.length();\r\n return dist;\r\n };\r\n DistanceCalc.getUVFromInnerPoint = function(ul, ur, ll, lr, pnt) {\r\n ul.normalize();\r\n ur.normalize();\r\n ll.normalize();\r\n lr.normalize();\r\n pnt.normalize();\r\n var dUpper = DistanceCalc.lineToPoint(ul, ur, pnt);\r\n var dLower = DistanceCalc.lineToPoint(ll, lr, pnt);\r\n var dVert = dUpper + dLower;\r\n var dRight = DistanceCalc.lineToPoint(ur, lr, pnt);\r\n var dLeft = DistanceCalc.lineToPoint(ul, ll, pnt);\r\n var dHoriz = dRight + dLeft;\r\n return Vector2d.create(dLeft / dHoriz, dUpper / dVert);\r\n };\r\n var DistanceCalc$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Tour\r\n\r\n function Tour() {\r\n this.userLevel = 0;\r\n this.classification = 0;\r\n this.averageRating = 0;\r\n this.lengthInSecs = 0;\r\n this._thumbnailUrlField = '';\r\n }\r\n Tour._fromXml = function(child) {\r\n var temp = new Tour();\r\n if (child.attributes.getNamedItem('ID') != null) {\r\n temp.id = child.attributes.getNamedItem('ID').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('TourUrl') != null) {\r\n temp._tourUrl = child.attributes.getNamedItem('TourUrl').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('Title') != null) {\r\n temp.title = child.attributes.getNamedItem('Title').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('Description') != null) {\r\n temp.description = child.attributes.getNamedItem('Description').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('Classification') != null) {\r\n temp.classification = Enums.parse('Classification', child.attributes.getNamedItem('Classification').nodeValue);\r\n }\r\n if (child.attributes.getNamedItem('AuthorEmail') != null) {\r\n temp.authorEmail = child.attributes.getNamedItem('AuthorEmail').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('Author') != null) {\r\n temp.author = child.attributes.getNamedItem('Author').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('AuthorURL') != null) {\r\n temp.authorURL = child.attributes.getNamedItem('AuthorURL').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('AuthorImageUrl') != null) {\r\n temp.authorImageUrl = child.attributes.getNamedItem('AuthorImageUrl').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('AverageRating') != null) {\r\n temp.averageRating = parseFloat(child.attributes.getNamedItem('AverageRating').nodeValue);\r\n }\r\n if (child.attributes.getNamedItem('LengthInSecs') != null) {\r\n temp.lengthInSecs = parseFloat(child.attributes.getNamedItem('LengthInSecs').nodeValue);\r\n }\r\n if (child.attributes.getNamedItem('OrganizationUrl') != null) {\r\n temp.organizationUrl = child.attributes.getNamedItem('OrganizationUrl').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('OrganizationName') != null) {\r\n temp.organizationName = child.attributes.getNamedItem('OrganizationName').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('RelatedTours') != null) {\r\n temp.relatedTours = child.attributes.getNamedItem('RelatedTours').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('Keywords') != null) {\r\n temp.keywords = child.attributes.getNamedItem('Keywords').nodeValue;\r\n }\r\n if (child.attributes.getNamedItem('ThumbnailUrl') != null) {\r\n temp.set_thumbnailUrl(child.attributes.getNamedItem('ThumbnailUrl').nodeValue);\r\n }\r\n return temp;\r\n };\r\n var Tour$ = {\r\n get_name: function() {\r\n return this.title;\r\n },\r\n get_thumbnail: function() {\r\n return this._thumbnail;\r\n },\r\n set_thumbnail: function(value) {\r\n this._thumbnail = value;\r\n return value;\r\n },\r\n get_thumbnailUrl: function() {\r\n if (!ss.emptyString(this._thumbnailUrlField)) {\r\n return this._thumbnailUrlField;\r\n }\r\n else {\r\n return ss.format(URLHelpers.singleton.coreStaticUrl('wwtweb/GetTourThumbnail.aspx?GUID={0}'), this.id);\r\n }\r\n },\r\n set_thumbnailUrl: function(value) {\r\n this._thumbnailUrlField = value;\r\n return value;\r\n },\r\n get_tourUrl: function() {\r\n if (ss.emptyString(this._tourUrl)) {\r\n return ss.format(URLHelpers.singleton.coreStaticUrl('wwtweb/GetTour.aspx?GUID={0}'), this.id);\r\n }\r\n else {\r\n return this._tourUrl;\r\n }\r\n },\r\n set_tourUrl: function(value) {\r\n this._tourUrl = value;\r\n return value;\r\n },\r\n get_bounds: function() {\r\n return this._bounds;\r\n },\r\n set_bounds: function(value) {\r\n this._bounds = value;\r\n return value;\r\n },\r\n get_isImage: function() {\r\n return false;\r\n },\r\n get_isTour: function() {\r\n return true;\r\n },\r\n get_isFolder: function() {\r\n return false;\r\n },\r\n get_isCloudCommunityItem: function() {\r\n return false;\r\n },\r\n get_readOnly: function() {\r\n return false;\r\n },\r\n get_children: function() {\r\n return [];\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FileEntry\r\n\r\n function FileEntry(filename, size) {\r\n this.size = 0;\r\n this.offset = 0;\r\n this.filename = filename;\r\n this.size = size;\r\n }\r\n var FileEntry$ = {\r\n toString: function() {\r\n return this.filename;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FileCabinet\r\n\r\n function FileCabinet() {\r\n this.tempDirectory = '';\r\n this._currentOffset = 0;\r\n this._packageID = '';\r\n this.url = '';\r\n this.clearFileList();\r\n }\r\n FileCabinet.fromUrl = function(url, callMe) {\r\n var temp = new FileCabinet();\r\n temp.url = url;\r\n temp._callMe = callMe;\r\n temp._webFile = new WebFile(url);\r\n temp._webFile.responseType = 'blob';\r\n temp._webFile.onStateChange = ss.bind('_loadCabinet', temp);\r\n temp._webFile.send();\r\n return temp;\r\n };\r\n var FileCabinet$ = {\r\n get_packageID: function() {\r\n return this._packageID;\r\n },\r\n set_packageID: function(value) {\r\n this._packageID = value;\r\n return value;\r\n },\r\n addFile: function(filename, data) {\r\n if (data == null) {\r\n return;\r\n }\r\n if (!ss.keyExists(this._fileDirectory, filename)) {\r\n var fe = new FileEntry(filename, data.size);\r\n fe.offset = this._currentOffset;\r\n fe.blob = data;\r\n this.fileList.push(fe);\r\n this._fileDirectory[filename] = fe;\r\n this._currentOffset += fe.size;\r\n }\r\n },\r\n clearFileList: function() {\r\n if (this.fileList == null) {\r\n this.fileList = [];\r\n }\r\n if (this._fileDirectory == null) {\r\n this._fileDirectory = {};\r\n }\r\n this.fileList.length = 0;\r\n ss.clearKeys(this._fileDirectory);\r\n this._currentOffset = 0;\r\n },\r\n packageFiles: function() {\r\n var xmlWriter = new XmlTextWriter();\r\n xmlWriter.formatting = 1;\r\n xmlWriter._writeProcessingInstruction('xml', \"version='1.0' encoding='UTF-8'\");\r\n xmlWriter._writeStartElement('FileCabinet');\r\n xmlWriter._writeAttributeString('HeaderSize', '0x0BADFOOD');\r\n xmlWriter._writeStartElement('Files');\r\n var $enum1 = ss.enumerate(this.fileList);\r\n while ($enum1.moveNext()) {\r\n var entry = $enum1.current;\r\n xmlWriter._writeStartElement('File');\r\n xmlWriter._writeAttributeString('Name', entry.filename);\r\n xmlWriter._writeAttributeString('Size', entry.size.toString());\r\n xmlWriter._writeAttributeString('Offset', entry.offset.toString());\r\n xmlWriter._writeEndElement();\r\n }\r\n xmlWriter._writeEndElement();\r\n xmlWriter._writeFullEndElement();\r\n xmlWriter._close();\r\n var data = xmlWriter.body;\r\n var blob = new Blob([ data ]);\r\n var sizeText = ss.format('0x{0:x8}', blob.size);\r\n data = ss.replaceString(data, '0x0BADFOOD', sizeText);\r\n blob = new Blob([ data ]);\r\n var blobs = [];\r\n blobs.push(blob);\r\n var $enum2 = ss.enumerate(this.fileList);\r\n while ($enum2.moveNext()) {\r\n var entry = $enum2.current;\r\n blobs.push(entry.blob);\r\n }\r\n var cabBlob = new Blob(blobs, {type : 'application/x-wtt'});;\r\n return cabBlob;\r\n },\r\n _loadCabinet: function() {\r\n var $this = this;\r\n\r\n if (this._webFile.get_state() === 2) {\r\n alert(this._webFile.get_message());\r\n }\r\n else if (this._webFile.get_state() === 1) {\r\n this._mainBlob = this._webFile.getBlob();\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n var offset = $this._getSize(chunck.result);\r\n var header = new FileReader();\r\n header.onloadend = function(ee) {\r\n var data = ss.safeCast(header.result, String);\r\n var xParser = new DOMParser();\r\n $this.extract(xParser.parseFromString(data, 'text/xml'), offset);\r\n $this._callMe();\r\n };\r\n header.readAsText($this._mainBlob.slice(0, offset));\r\n };\r\n chunck.readAsText(this._mainBlob.slice(0, 255));\r\n }\r\n },\r\n _getSize: function(data) {\r\n var start = data.indexOf('0x');\r\n if (start === -1) {\r\n return 0;\r\n }\r\n return parseInt(data.substring(start, start + 10), 16);\r\n },\r\n extract: function(doc, offset) {\r\n try {\r\n var cab = Util.selectSingleNode(doc, 'FileCabinet');\r\n var files = Util.selectSingleNode(cab, 'Files');\r\n this.fileList.length = 0;\r\n var $enum1 = ss.enumerate(files.childNodes);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (child.nodeName === 'File') {\r\n var fe = new FileEntry(child.attributes.getNamedItem('Name').nodeValue, parseInt(child.attributes.getNamedItem('Size').nodeValue));\r\n fe.offset = offset;\r\n offset += fe.size;\r\n this.fileList.push(fe);\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n },\r\n getFileBlob: function(filename) {\r\n var fe = this.getFileEntry(filename);\r\n if (fe != null) {\r\n var ext = filename.substr(filename.lastIndexOf('.')).toLowerCase();\r\n var type = null;\r\n switch (ext) {\r\n case '.png':\r\n type = 'image/png';\r\n break;\r\n case '.jpg':\r\n case '.jpeg':\r\n type = 'image/jpeg';\r\n break;\r\n case '.mp3':\r\n type = 'audio/mpeg3';\r\n break;\r\n case '.txt':\r\n type = 'text/plain';\r\n break;\r\n case '.fit':\r\n case '.fits':\r\n type = 'application/octet-stream';\r\n break;\r\n }\r\n return this._mainBlob.slice(fe.offset, fe.offset + fe.size, type);\r\n }\r\n return null;\r\n },\r\n getFileEntry: function(filename) {\r\n var $enum1 = ss.enumerate(this.fileList);\r\n while ($enum1.moveNext()) {\r\n var entry = $enum1.current;\r\n if (entry.filename === filename) {\r\n return entry;\r\n }\r\n }\r\n return null;\r\n },\r\n get_masterFile: function() {\r\n if (this.fileList.length > 0) {\r\n return this.fileList[0].filename;\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n clearTempFiles: function() {\r\n var $enum1 = ss.enumerate(this.fileList);\r\n while ($enum1.moveNext()) {\r\n var entry = $enum1.current;\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SettingParameter\r\n\r\n function SettingParameter(edgeTrigger, opacity, targetState, filter) {\r\n this.targetState = false;\r\n this.edgeTrigger = false;\r\n this.opacity = 0;\r\n this.edgeTrigger = edgeTrigger;\r\n this.opacity = opacity;\r\n this.targetState = targetState;\r\n this.filter = filter;\r\n }\r\n var SettingParameter$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Overlay\r\n\r\n function Overlay() {\r\n this.isDynamic = false;\r\n this.isDesignTimeOnly = false;\r\n this._name = '';\r\n this.id = (Overlay.nextId++).toString();\r\n this._owner = null;\r\n this._url = '';\r\n this._linkID = '';\r\n this._domeMatrix = Matrix3d.get_identity();\r\n this._domeMatX = 0;\r\n this._domeMatY = 0;\r\n this._domeAngle = 0;\r\n this.points = null;\r\n this._animate = false;\r\n this._tweenFactor = 0;\r\n this._endX = 0;\r\n this._endY = 0;\r\n this._endOpacity = 0;\r\n this._endColor = new Color();\r\n this._endWidth = 0;\r\n this._endHeight = 0;\r\n this._endRotationAngle = 0;\r\n this._anchor = 1;\r\n this._x = 0;\r\n this._y = 0;\r\n this._width = 0;\r\n this._height = 0;\r\n this._color = Colors.get_white();\r\n this._opacity = 0.5;\r\n this._rotationAngle = 0;\r\n this.currentRotation = 0;\r\n this.texture = null;\r\n this.texture2d = null;\r\n this._interpolationType = 5;\r\n }\r\n Overlay._fromXml = function(owner, overlay) {\r\n if (overlay.attributes == null) {\r\n return null;\r\n }\r\n if (overlay.attributes.getNamedItem('Type') == null) {\r\n return null;\r\n }\r\n var overlayClassName = overlay.attributes.getNamedItem('Type').nodeValue;\r\n var overLayType = ss.replaceString(overlayClassName, 'TerraViewer.', '');\r\n var newOverlay = null;\r\n switch (overLayType) {\r\n case 'AudioOverlay':\r\n newOverlay = new AudioOverlay();\r\n break;\r\n case 'BitmapOverlay':\r\n newOverlay = new BitmapOverlay();\r\n break;\r\n case 'FlipBookOverlay':\r\n newOverlay = new FlipbookOverlay();\r\n break;\r\n case 'ShapeOverlay':\r\n newOverlay = new ShapeOverlay();\r\n break;\r\n case 'TextOverlay':\r\n newOverlay = new TextOverlay();\r\n break;\r\n default:\r\n return null;\r\n }\r\n newOverlay._owner = owner;\r\n newOverlay._initOverlayFromXml(overlay);\r\n return newOverlay;\r\n };\r\n var Overlay$ = {\r\n get_name: function() {\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n this._name = value;\r\n return value;\r\n },\r\n get_owner: function() {\r\n return this._owner;\r\n },\r\n set_owner: function(value) {\r\n this._owner = value;\r\n return value;\r\n },\r\n get_zOrder: function() {\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._owner.get_overlays());\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (item === this) {\r\n break;\r\n }\r\n index++;\r\n }\r\n return index;\r\n },\r\n get_url: function() {\r\n return this._url;\r\n },\r\n set_url: function(value) {\r\n this._url = value;\r\n return value;\r\n },\r\n get_linkID: function() {\r\n return this._linkID;\r\n },\r\n set_linkID: function(value) {\r\n this._linkID = value;\r\n return value;\r\n },\r\n play: function() {\r\n },\r\n pause: function() {\r\n },\r\n stop: function() {\r\n },\r\n seek: function(time) {\r\n },\r\n makePosition: function(centerX, centerY, offsetX, offsetY, angle) {\r\n centerX -= 960;\r\n centerY -= 558;\r\n var point = Vector3d.create(centerX + offsetX, centerY + offsetY, 1347);\r\n if (!!this._domeMatX || !!this._domeMatY || this._domeAngle !== angle) {\r\n this._domeMatX = centerX;\r\n this._domeMatY = centerY;\r\n this._domeMatrix = Matrix3d.translation(Vector3d.create(-centerX, -centerY, 0));\r\n this._domeMatrix._multiply(Matrix3d._rotationZ((angle / 180 * Math.PI)));\r\n this._domeMatrix._multiply(Matrix3d.translation(Vector3d.create(centerX, centerY, 0)));\r\n }\r\n point = Vector3d._transformCoordinate(point, this._domeMatrix);\r\n return point;\r\n },\r\n draw3D: function(renderContext, designTime) {\r\n if (RenderContext.useGl) {\r\n if (this.texture == null || this.isDynamic) {\r\n this.initializeTexture();\r\n }\r\n if (!this.isDesignTimeOnly || designTime) {\r\n this.initializeGeometry();\r\n this.updateRotation();\r\n }\r\n }\r\n else {\r\n }\r\n },\r\n cleanUp: function() {\r\n if (this.texture != null) {\r\n this.texture = null;\r\n }\r\n this.texture2d = null;\r\n },\r\n initializeTexture: function() {\r\n },\r\n prepMultimedia: function() {\r\n },\r\n cleanUpGeometry: function() {\r\n this.currentRotation = 0;\r\n this.points = null;\r\n },\r\n initializeGeometry: function() {\r\n if (this.points == null) {\r\n this.currentRotation = 0;\r\n this.points = new Array(4);\r\n this.points[0] = new PositionColoredTextured();\r\n this.points[0].position = this.makePosition(this.get_x(), this.get_y(), -this.get_width() / 2, -this.get_height() / 2, this.get_rotationAngle());\r\n this.points[0].tu = 0;\r\n this.points[0].tv = 0;\r\n this.points[0].color = this.get_color();\r\n this.points[1] = new PositionColoredTextured();\r\n this.points[1].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 2, -this.get_height() / 2, this.get_rotationAngle());\r\n this.points[1].tu = 1;\r\n this.points[1].tv = 0;\r\n this.points[1].color = this.get_color();\r\n this.points[2] = new PositionColoredTextured();\r\n this.points[2].position = this.makePosition(this.get_x(), this.get_y(), -this.get_width() / 2, this.get_height() / 2, this.get_rotationAngle());\r\n this.points[2].tu = 0;\r\n this.points[2].tv = 1;\r\n this.points[2].color = this.get_color();\r\n this.points[3] = new PositionColoredTextured();\r\n this.points[3].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 2, this.get_height() / 2, this.get_rotationAngle());\r\n this.points[3].tu = 1;\r\n this.points[3].tv = 1;\r\n this.points[3].color = this.get_color();\r\n }\r\n },\r\n updateRotation: function() {\r\n },\r\n get_animate: function() {\r\n return this._animate;\r\n },\r\n set_animate: function(value) {\r\n if (this._animate !== value) {\r\n this._animate = value;\r\n if (this._animate) {\r\n this._endX = this._x;\r\n this._endY = this._y;\r\n this._endRotationAngle = this._rotationAngle;\r\n this._endColor = this._color;\r\n this._endWidth = this._width;\r\n this._endHeight = this._height;\r\n this.cleanUpGeometry();\r\n }\r\n else {\r\n this._endX = this._x = this.get_x();\r\n this._endY = this._y = this.get_y();\r\n this._endRotationAngle = this._rotationAngle = this.get_rotationAngle();\r\n this._endColor = this._color = this.get_color();\r\n this._endWidth = this._width = this.get_width();\r\n this._endHeight = this._height = this.get_height();\r\n this.cleanUpGeometry();\r\n this._tweenFactor = 0;\r\n }\r\n }\r\n return value;\r\n },\r\n get_tweenFactor: function() {\r\n return this._tweenFactor;\r\n },\r\n set_tweenFactor: function(value) {\r\n if (!this._animate) {\r\n this._tweenFactor = 0;\r\n }\r\n else {\r\n if (this._tweenFactor !== value) {\r\n this._tweenFactor = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n get_anchor: function() {\r\n return this._anchor;\r\n },\r\n set_anchor: function(value) {\r\n this._anchor = value;\r\n return value;\r\n },\r\n get_position: function() {\r\n return Vector2d.create(this.get_x(), this.get_y());\r\n },\r\n set_position: function(value) {\r\n this.set_x(value.x);\r\n this.set_y(value.y);\r\n return value;\r\n },\r\n get_x: function() {\r\n return (this._x * (1 - this._tweenFactor)) + (this._endX * this._tweenFactor);\r\n },\r\n set_x: function(value) {\r\n if (this._tweenFactor < 0.5) {\r\n if (this._x !== value) {\r\n this._x = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n else {\r\n if (this._endX !== value) {\r\n this._endX = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n get_y: function() {\r\n return (this._y * (1 - this._tweenFactor)) + (this._endY * this._tweenFactor);\r\n },\r\n set_y: function(value) {\r\n if (this._tweenFactor < 0.5) {\r\n if (this._y !== value) {\r\n this._y = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n else {\r\n if (this._endY !== value) {\r\n this._endY = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n get_width: function() {\r\n return (this._width * (1 - this._tweenFactor)) + (this._endWidth * this._tweenFactor);\r\n },\r\n set_width: function(value) {\r\n if (value < 5 && !!value) {\r\n value = 5;\r\n }\r\n if (this._tweenFactor < 0.5) {\r\n if (this._width !== value) {\r\n this._width = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n else {\r\n if (this._endWidth !== value) {\r\n this._endWidth = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n get_height: function() {\r\n return (this._height * (1 - this._tweenFactor)) + (this._endHeight * this._tweenFactor);\r\n },\r\n set_height: function(value) {\r\n if (value < 5 && !!value) {\r\n value = 5;\r\n }\r\n if (this._tweenFactor < 0.5) {\r\n if (this._height !== value) {\r\n this._height = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n else {\r\n if (this._endHeight !== value) {\r\n this._endHeight = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n get_color: function() {\r\n var red = ss.truncate(((this._color.r * (1 - this._tweenFactor)) + (this._endColor.r * this._tweenFactor)));\r\n var green = ss.truncate(((this._color.g * (1 - this._tweenFactor)) + (this._endColor.g * this._tweenFactor)));\r\n var blue = ss.truncate(((this._color.b * (1 - this._tweenFactor)) + (this._endColor.b * this._tweenFactor)));\r\n var alpha = ss.truncate(((this._color.a * (1 - this._tweenFactor)) + (this._endColor.a * this._tweenFactor)));\r\n return Color.fromArgb(Math.max(0, Math.min(255, alpha)), Math.max(0, Math.min(255, red)), Math.max(0, Math.min(255, green)), Math.max(0, Math.min(255, blue)));\r\n },\r\n set_color: function(value) {\r\n if (this._tweenFactor < 0.5) {\r\n if (this._color !== value) {\r\n this._color = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n else {\r\n if (this._endColor !== value) {\r\n this._endColor = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n get_opacity: function() {\r\n return this.get_color().a / 255;\r\n },\r\n set_opacity: function(value) {\r\n var col = this.get_color();\r\n this.set_color(Color.fromArgb(Math.min(255, ss.truncate((value * 255))), col.r, col.g, col.b));\r\n this._opacity = value;\r\n return value;\r\n },\r\n get_rotationAngle: function() {\r\n return (this._rotationAngle * (1 - this._tweenFactor)) + (this._endRotationAngle * this._tweenFactor);\r\n },\r\n set_rotationAngle: function(value) {\r\n if (this._tweenFactor < 0.5) {\r\n if (this._rotationAngle !== value) {\r\n this._rotationAngle = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n else {\r\n if (this._endRotationAngle !== value) {\r\n this._endRotationAngle = value;\r\n this.cleanUpGeometry();\r\n }\r\n }\r\n return value;\r\n },\r\n hitTest: function(pntTest) {\r\n var tempPoints = new Array(1);\r\n tempPoints[0] = Vector2d.create(pntTest.x, pntTest.y);\r\n var mat = Matrix2d.rotateAt(-this.get_rotationAngle() / 180 * Math.PI, Vector2d.create(this.get_x(), this.get_y()));\r\n mat._transformPoints(tempPoints);\r\n var rect = Rectangle.create((this.get_x() - (this.get_width() / 2)), (this.get_y() - (this.get_height() / 2)), this.get_width(), this.get_height());\r\n return rect.contains(tempPoints[0]);\r\n },\r\n get_bounds: function() {\r\n return this._bounds;\r\n },\r\n set_bounds: function(value) {\r\n this._bounds = value;\r\n return value;\r\n },\r\n get_interpolationType: function() {\r\n return this._interpolationType;\r\n },\r\n set_interpolationType: function(value) {\r\n this._interpolationType = value;\r\n return value;\r\n },\r\n saveToXml: function(xmlWriter, saveKeys) {\r\n xmlWriter._writeStartElement('Overlay');\r\n xmlWriter._writeAttributeString('Id', this.id);\r\n xmlWriter._writeAttributeString('Type', this.getTypeName());\r\n xmlWriter._writeAttributeString('Name', this.get_name());\r\n xmlWriter._writeAttributeString('X', this._x.toString());\r\n xmlWriter._writeAttributeString('Y', this._y.toString());\r\n xmlWriter._writeAttributeString('Width', this._width.toString());\r\n xmlWriter._writeAttributeString('Height', this._height.toString());\r\n xmlWriter._writeAttributeString('Rotation', this._rotationAngle.toString());\r\n xmlWriter._writeAttributeString('Color', this._color.save());\r\n xmlWriter._writeAttributeString('Url', this._url);\r\n xmlWriter._writeAttributeString('LinkID', this._linkID);\r\n xmlWriter._writeAttributeString('Animate', this._animate.toString());\r\n if (this._animate) {\r\n xmlWriter._writeAttributeString('EndX', this._endX.toString());\r\n xmlWriter._writeAttributeString('EndY', this._endY.toString());\r\n xmlWriter._writeAttributeString('EndWidth', this._endWidth.toString());\r\n xmlWriter._writeAttributeString('EndHeight', this._endHeight.toString());\r\n xmlWriter._writeAttributeString('EndRotation', this._endRotationAngle.toString());\r\n xmlWriter._writeAttributeString('EndColor', this._endColor.save());\r\n xmlWriter._writeAttributeString('InterpolationType', Enums.toXml('InterpolationType', this._interpolationType));\r\n }\r\n xmlWriter._writeAttributeString('Anchor', Enums.toXml('OverlayAnchor', this._anchor));\r\n this.writeOverlayProperties(xmlWriter);\r\n xmlWriter._writeEndElement();\r\n },\r\n getTypeName: function() {\r\n return 'TerraViewer.Overlay';\r\n },\r\n addFilesToCabinet: function(fc) {\r\n },\r\n writeOverlayProperties: function(xmlWriter) {\r\n },\r\n _initOverlayFromXml: function(node) {\r\n this.id = node.attributes.getNamedItem('Id').nodeValue;\r\n this.set_name(node.attributes.getNamedItem('Name').nodeValue);\r\n this._x = parseFloat(node.attributes.getNamedItem('X').nodeValue);\r\n this._y = parseFloat(node.attributes.getNamedItem('Y').nodeValue);\r\n this._width = parseFloat(node.attributes.getNamedItem('Width').nodeValue);\r\n this._height = parseFloat(node.attributes.getNamedItem('Height').nodeValue);\r\n this._rotationAngle = parseFloat(node.attributes.getNamedItem('Rotation').nodeValue);\r\n this._color = Color.load(node.attributes.getNamedItem('Color').nodeValue);\r\n if (node.attributes.getNamedItem('Url') != null) {\r\n this.set_url(node.attributes.getNamedItem('Url').nodeValue);\r\n }\r\n if (node.attributes.getNamedItem('LinkID') != null) {\r\n this.set_linkID(node.attributes.getNamedItem('LinkID').nodeValue);\r\n }\r\n if (node.attributes.getNamedItem('Animate') != null) {\r\n this._animate = ss.boolean(node.attributes.getNamedItem('Animate').nodeValue);\r\n if (this._animate) {\r\n this._endX = parseFloat(node.attributes.getNamedItem('EndX').nodeValue);\r\n this._endY = parseFloat(node.attributes.getNamedItem('EndY').nodeValue);\r\n this._endColor = Color.load(node.attributes.getNamedItem('EndColor').nodeValue);\r\n this._endWidth = parseFloat(node.attributes.getNamedItem('EndWidth').nodeValue);\r\n this._endHeight = parseFloat(node.attributes.getNamedItem('EndHeight').nodeValue);\r\n this._endRotationAngle = parseFloat(node.attributes.getNamedItem('EndRotation').nodeValue);\r\n if (node.attributes.getNamedItem('InterpolationType') != null) {\r\n this.set_interpolationType(Enums.parse('InterpolationType', node.attributes.getNamedItem('InterpolationType').nodeValue));\r\n }\r\n }\r\n }\r\n this.initializeFromXml(node);\r\n },\r\n initializeFromXml: function(node) {\r\n },\r\n toString: function() {\r\n return this.get_name();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Selection\r\n\r\n function Selection() {\r\n this._singleSelectHandles = null;\r\n this._multiSelectHandles = null;\r\n this._focusHandles = null;\r\n this.selectionSet = [];\r\n this._focus = null;\r\n this._ratio = 1;\r\n this._sprite = new Sprite2d();\r\n this._centerX = 0;\r\n this._centerY = 0;\r\n }\r\n var Selection$ = {\r\n clearSelection: function() {\r\n this.selectionSet.length = 0;\r\n },\r\n addSelection: function(overlay) {\r\n if (overlay != null) {\r\n if (!(this.selectionSet.indexOf(overlay) >= 0)) {\r\n this.selectionSet.push(overlay);\r\n }\r\n }\r\n },\r\n addSelectionRange: function(overlays) {\r\n var $enum1 = ss.enumerate(overlays);\r\n while ($enum1.moveNext()) {\r\n var ov = $enum1.current;\r\n this.selectionSet.push(ov);\r\n }\r\n },\r\n isOverlaySelected: function(overlay) {\r\n return (this.selectionSet.indexOf(overlay) >= 0);\r\n },\r\n setSelection: function(overlay) {\r\n this.selectionSet.length = 0;\r\n if (overlay != null) {\r\n this.selectionSet.push(overlay);\r\n }\r\n },\r\n get_multiSelect: function() {\r\n return this.selectionSet.length > 1;\r\n },\r\n setSelectionRange: function(overlays) {\r\n this.selectionSet.length = 0;\r\n var $enum1 = ss.enumerate(overlays);\r\n while ($enum1.moveNext()) {\r\n var ov = $enum1.current;\r\n this.selectionSet.push(ov);\r\n }\r\n },\r\n get_focus: function() {\r\n return this._focus;\r\n },\r\n set_focus: function(value) {\r\n this._focus = value;\r\n return value;\r\n },\r\n draw3D: function(renderContext, transparancy) {\r\n this._ratio = 1116 / renderContext.height;\r\n if (this._singleSelectHandles == null) {\r\n this._singleSelectHandles = Texture.fromUrl('images/Selhand.bmp');\r\n }\r\n if (this._multiSelectHandles == null) {\r\n this._multiSelectHandles = Texture.fromUrl('images/multiSelhand.bmp');\r\n }\r\n if (this._focusHandles == null) {\r\n this._focusHandles = Texture.fromUrl('images/FocusHandles.png');\r\n }\r\n if (this.selectionSet.length > 1) {\r\n var $enum1 = ss.enumerate(this.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (overlay === this._focus) {\r\n this._drawSelectionHandles(renderContext, overlay, this._focusHandles);\r\n }\r\n else {\r\n this._drawSelectionHandles(renderContext, overlay, this._multiSelectHandles);\r\n }\r\n }\r\n }\r\n else {\r\n var $enum2 = ss.enumerate(this.selectionSet);\r\n while ($enum2.moveNext()) {\r\n var overlay = $enum2.current;\r\n this._drawSelectionHandles(renderContext, overlay, this._singleSelectHandles);\r\n }\r\n }\r\n },\r\n _drawSelectionHandles: function(renderContext, overlay, handleTexture) {\r\n var handles = this.makeHandles(overlay);\r\n var angle = overlay.get_rotationAngle();\r\n var i = 0;\r\n var j = 0;\r\n var $enum1 = ss.enumerate(handles);\r\n while ($enum1.moveNext()) {\r\n var handle = $enum1.current;\r\n Selection._points[i + 0] = new PositionColoredTextured();\r\n Selection._points[i + 0].position = overlay.makePosition(this._centerX, this._centerY, handle.get_left() - this._centerX, handle.get_top() - this._centerY, angle);\r\n Selection._points[i + 0].tu = j * (1 / 9);\r\n Selection._points[i + 0].tv = 0;\r\n Selection._points[i + 0].color = Colors.get_white();\r\n Selection._points[i + 1] = new PositionColoredTextured();\r\n Selection._points[i + 1].position = overlay.makePosition(this._centerX, this._centerY, handle.get_right() - this._centerX, handle.get_top() - this._centerY, angle);\r\n Selection._points[i + 1].tu = (j + 1) * (1 / 9);\r\n Selection._points[i + 1].tv = 0;\r\n Selection._points[i + 1].color = Colors.get_white();\r\n Selection._points[i + 2] = new PositionColoredTextured();\r\n Selection._points[i + 2].position = overlay.makePosition(this._centerX, this._centerY, handle.get_left() - this._centerX, handle.get_bottom() - this._centerY, angle);\r\n Selection._points[i + 2].tu = j * (1 / 9);\r\n Selection._points[i + 2].tv = 1;\r\n Selection._points[i + 2].color = Colors.get_white();\r\n Selection._points[i + 3] = new PositionColoredTextured();\r\n Selection._points[i + 3].position = overlay.makePosition(this._centerX, this._centerY, handle.get_right() - this._centerX, handle.get_top() - this._centerY, angle);\r\n Selection._points[i + 3].tu = (j + 1) * (1 / 9);\r\n Selection._points[i + 3].tv = 0;\r\n Selection._points[i + 3].color = Colors.get_white();\r\n Selection._points[i + 4] = new PositionColoredTextured();\r\n Selection._points[i + 4].position = overlay.makePosition(this._centerX, this._centerY, handle.get_right() - this._centerX, handle.get_bottom() - this._centerY, angle);\r\n Selection._points[i + 4].tu = (j + 1) * (1 / 9);\r\n Selection._points[i + 4].tv = 1;\r\n Selection._points[i + 4].color = Colors.get_white();\r\n Selection._points[i + 5] = new PositionColoredTextured();\r\n Selection._points[i + 5].position = overlay.makePosition(this._centerX, this._centerY, handle.get_left() - this._centerX, handle.get_bottom() - this._centerY, angle);\r\n Selection._points[i + 5].tu = j * (1 / 9);\r\n Selection._points[i + 5].tv = 1;\r\n Selection._points[i + 5].color = Colors.get_white();\r\n i += 6;\r\n j++;\r\n }\r\n if (this.get_multiSelect()) {\r\n this._sprite.draw(renderContext, Selection._points, Selection._points.length - 6, handleTexture, false, 1);\r\n }\r\n else {\r\n this._sprite.draw(renderContext, Selection._points, Selection._points.length, handleTexture, false, 1);\r\n }\r\n },\r\n pointToSelectionSpace: function(pntIn) {\r\n var tempPoints = new Array(1);\r\n tempPoints[0] = Vector2d.create(pntIn.x, pntIn.y);\r\n var mat = Matrix2d.rotateAt(-this.selectionSet[0].get_rotationAngle() / 180 * Math.PI, Vector2d.create(this.selectionSet[0].get_x(), this.selectionSet[0].get_y()));\r\n mat._transformPoints(tempPoints);\r\n return tempPoints[0];\r\n },\r\n pointToScreenSpace: function(pntIn) {\r\n var tempPoints = new Array(1);\r\n tempPoints[0] = Vector2d.create(pntIn.x, pntIn.y);\r\n var mat = Matrix2d.rotateAt(this.selectionSet[0].get_rotationAngle() / 180 * Math.PI, Vector2d.create(this.selectionSet[0].get_x(), this.selectionSet[0].get_y()));\r\n mat._transformPoints(tempPoints);\r\n return tempPoints[0];\r\n },\r\n hitTest: function(position) {\r\n if (this.selectionSet.length === 1) {\r\n var $enum1 = ss.enumerate(this.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n var handles = this.makeHandles(overlay);\r\n var index = 0;\r\n var testPoint = this.pointToSelectionSpace(position);\r\n var $enum2 = ss.enumerate(handles);\r\n while ($enum2.moveNext()) {\r\n var rectf = $enum2.current;\r\n if (rectf.contains(testPoint)) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n }\r\n }\r\n return 11;\r\n },\r\n makeHandles: function(overlay) {\r\n var x = ss.truncate((overlay.get_x() - (overlay.get_width() / 2))) + 0.5;\r\n var y = (ss.truncate(overlay.get_y()) - (overlay.get_height() / 2)) + 0.5;\r\n this._centerX = overlay.get_x();\r\n this._centerY = overlay.get_y();\r\n var width = overlay.get_width();\r\n var height = overlay.get_height();\r\n var handleSize = 12 * this._ratio;\r\n var handles = new Array(9);\r\n handles[0] = Rectangle.create(x - handleSize, y - handleSize, handleSize, handleSize);\r\n handles[1] = Rectangle.create((x + (width / 2)) - (handleSize / 2), y - handleSize, handleSize, handleSize);\r\n handles[2] = Rectangle.create(x + width, y - handleSize, handleSize, handleSize);\r\n handles[3] = Rectangle.create(x + width, (y + (height / 2)) - (handleSize / 2), handleSize, handleSize);\r\n handles[4] = Rectangle.create(x + width, (y + height), handleSize, handleSize);\r\n handles[5] = Rectangle.create((x + (width / 2)) - (handleSize / 2), (y + height), handleSize, handleSize);\r\n handles[6] = Rectangle.create(x - handleSize, (y + height), handleSize, handleSize);\r\n handles[7] = Rectangle.create(x - handleSize, (y + (height / 2)) - (handleSize / 2), handleSize, handleSize);\r\n handles[8] = Rectangle.create((x + (width / 2)) - (handleSize / 2), y - 30 * this._ratio, handleSize, handleSize);\r\n return handles;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TextObject\r\n\r\n function TextObject() {\r\n this.bold = false;\r\n this.italic = false;\r\n this.underline = false;\r\n this.fontSize = 0;\r\n this.borderStyle = 0;\r\n }\r\n TextObject.create = function(text, bold, italic, underline, fontSize, fontName, forgroundColor, backgroundColor, borderStyle) {\r\n var temp = new TextObject();\r\n temp.text = text;\r\n temp.bold = bold;\r\n temp.italic = italic;\r\n temp.underline = underline;\r\n temp.fontSize = fontSize;\r\n temp.fontName = fontName;\r\n temp.foregroundColor = forgroundColor;\r\n temp.backgroundColor = backgroundColor;\r\n temp.borderStyle = borderStyle;\r\n return temp;\r\n };\r\n TextObject._fromXml = function(node) {\r\n var newTextObject = new TextObject();\r\n newTextObject.text = Util.getInnerText(node);\r\n newTextObject.borderStyle = 0;\r\n newTextObject.bold = ss.boolean(node.attributes.getNamedItem('Bold').nodeValue);\r\n newTextObject.italic = ss.boolean(node.attributes.getNamedItem('Italic').nodeValue);\r\n newTextObject.underline = ss.boolean(node.attributes.getNamedItem('Underline').nodeValue);\r\n newTextObject.fontSize = parseFloat(node.attributes.getNamedItem('FontSize').nodeValue);\r\n newTextObject.fontName = node.attributes.getNamedItem('FontName').nodeValue;\r\n newTextObject.foregroundColor = Color.load(node.attributes.getNamedItem('ForgroundColor').nodeValue);\r\n newTextObject.backgroundColor = Color.load(node.attributes.getNamedItem('BackgroundColor').nodeValue);\r\n if (node.attributes.getNamedItem('BorderStyle') != null) {\r\n newTextObject.borderStyle = Enums.parse('TextBorderStyle', node.attributes.getNamedItem('BorderStyle').nodeValue);\r\n }\r\n return newTextObject;\r\n };\r\n var TextObject$ = {\r\n toString: function() {\r\n return this.text;\r\n },\r\n _saveToXml: function(xmlWriter) {\r\n xmlWriter._writeStartElement('TextObject');\r\n xmlWriter._writeAttributeString('Bold', this.bold.toString());\r\n xmlWriter._writeAttributeString('Italic', this.italic.toString());\r\n xmlWriter._writeAttributeString('Underline', this.underline.toString());\r\n xmlWriter._writeAttributeString('FontSize', this.fontSize.toString());\r\n xmlWriter._writeAttributeString('FontName', this.fontName);\r\n xmlWriter._writeAttributeString('ForgroundColor', this.foregroundColor.save());\r\n xmlWriter._writeAttributeString('BackgroundColor', this.backgroundColor.save());\r\n xmlWriter._writeAttributeString('BorderStyle', Enums.toXml('TextBorderStyle', this.borderStyle));\r\n xmlWriter._writeString(this.text);\r\n xmlWriter._writeEndElement();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TourDocument\r\n\r\n function TourDocument() {\r\n this._tourDirty = 0;\r\n this._workingDirectory = '';\r\n this.url = '';\r\n this._tagId = '';\r\n this._representativeThumbnailTourstop = 0;\r\n this._id = '';\r\n this._title = '';\r\n this._runTime = 0;\r\n this._lastDirtyCheck = 0;\r\n this._description = '';\r\n this._attributesAndCredits = '';\r\n this._authorEmailOther = '';\r\n this._authorEmail = '';\r\n this._authorUrl = '';\r\n this._authorPhone = '';\r\n this._authorContactText = '';\r\n this._orgName = 'None';\r\n this._orgUrl = '';\r\n this._author = '';\r\n this._authorImageUrl = '';\r\n this._authorImage = null;\r\n this._organizationUrl = '';\r\n this._filename = '';\r\n this._level = 0;\r\n this._type = 268435456;\r\n this._taxonomy = '';\r\n this._keywords = '';\r\n this._objects = '';\r\n this._editMode = false;\r\n this.explicitTourLinks = [];\r\n this.implicitTourLinks = [];\r\n this._tourStops = [];\r\n this._currentTourstopIndex = -1;\r\n this._textureList = {};\r\n this._textureList2d = {};\r\n this._fileCache = {};\r\n this.dontCleanUpTempFiles = false;\r\n this._id = Guid.newGuid().toString();\r\n }\r\n TourDocument.get_baseWorkingDirectory = function() {\r\n return '';\r\n };\r\n TourDocument.fromUrl = function(url, callMe) {\r\n var temp = new TourDocument();\r\n temp.url = url;\r\n temp._callMe = callMe;\r\n temp._cabinet = FileCabinet.fromUrl(url, ss.bind('_loadXmlDocument', temp));\r\n return temp;\r\n };\r\n TourDocument.fromUrlRaw = function(url, callMe) {\r\n var temp = new TourDocument();\r\n temp.url = url;\r\n temp._callMe = callMe;\r\n temp._cabinet = FileCabinet.fromUrl(url, callMe);\r\n return temp;\r\n };\r\n var TourDocument$ = {\r\n get_tourDirty: function() {\r\n return this._tourDirty > 0;\r\n },\r\n set_tourDirty: function(value) {\r\n if (value) {\r\n this._tourDirty++;\r\n }\r\n else {\r\n this._tourDirty = 0;\r\n }\r\n return value;\r\n },\r\n get_workingDirectory: function() {\r\n if (ss.emptyString(this._workingDirectory)) {\r\n this._workingDirectory = TourDocument.get_baseWorkingDirectory() + this._id + '\\\\';\r\n }\r\n return this._workingDirectory;\r\n },\r\n set_workingDirectory: function(value) {\r\n this._workingDirectory = value;\r\n return value;\r\n },\r\n _loadXmlDocument: function() {\r\n var $this = this;\r\n\r\n try {\r\n var master = this._cabinet.get_masterFile();\r\n var doc = new FileReader();\r\n doc.onloadend = function(ee) {\r\n var data = ss.safeCast(doc.result, String);\r\n var xParser = new DOMParser();\r\n $this.fromXml(xParser.parseFromString(data, 'text/xml'));\r\n $this._callMe();\r\n };\r\n doc.readAsText(this._cabinet.getFileBlob(master));\r\n }\r\n catch (ex) {\r\n WWTControl.scriptInterface._fireTourError(ex);\r\n }\r\n },\r\n fromXml: function(doc) {\r\n var root = Util.selectSingleNode(doc, 'Tour');\r\n this._id = root.attributes.getNamedItem('ID').nodeValue;\r\n this.set_title(root.attributes.getNamedItem('Title').nodeValue);\r\n this.set_author(root.attributes.getNamedItem('Author').nodeValue);\r\n if (root.attributes.getNamedItem('Descirption') != null) {\r\n this.set_description(root.attributes.getNamedItem('Descirption').nodeValue);\r\n }\r\n if (root.attributes.getNamedItem('AuthorEmail') != null) {\r\n this._authorEmail = root.attributes.getNamedItem('AuthorEmail').nodeValue;\r\n }\r\n if (root.attributes.getNamedItem('Keywords') != null) {\r\n this.set_keywords(root.attributes.getNamedItem('Keywords').nodeValue);\r\n }\r\n if (root.attributes.getNamedItem('OrganizationName') != null) {\r\n this.set_orgName(root.attributes.getNamedItem('OrganizationName').nodeValue);\r\n }\r\n this._organizationUrl = root.attributes.getNamedItem('OrganizationUrl').nodeValue;\r\n this._level = Enums.parse('UserLevel', root.attributes.getNamedItem('UserLevel').nodeValue);\r\n this._type = Enums.parse('Classification', root.attributes.getNamedItem('Classification').nodeValue);\r\n this._taxonomy = root.attributes.getNamedItem('Taxonomy').nodeValue;\r\n var TourStops = Util.selectSingleNode(root, 'TourStops');\r\n var $enum1 = ss.enumerate(TourStops.childNodes);\r\n while ($enum1.moveNext()) {\r\n var tourStop = $enum1.current;\r\n if (tourStop.nodeName === 'TourStop') {\r\n this.addTourStop(TourStop._fromXml(this, tourStop));\r\n }\r\n }\r\n var Frames = Util.selectSingleNode(root, 'ReferenceFrames');\r\n if (Frames != null) {\r\n var $enum2 = ss.enumerate(Frames.childNodes);\r\n while ($enum2.moveNext()) {\r\n var frame = $enum2.current;\r\n if (frame.nodeName === 'ReferenceFrame') {\r\n var newFrame = new ReferenceFrame();\r\n newFrame.initializeFromXml(frame);\r\n if (!ss.keyExists(LayerManager.get_allMaps(), newFrame.name)) {\r\n var map = new LayerMap(newFrame.name, 18);\r\n map.frame = newFrame;\r\n map.loadedFromTour = true;\r\n LayerManager.get_allMaps()[newFrame.name] = map;\r\n }\r\n }\r\n }\r\n LayerManager.connectAllChildren();\r\n LayerManager.loadTree();\r\n }\r\n var Layers = Util.selectSingleNode(root, 'Layers');\r\n if (Layers != null) {\r\n var $enum3 = ss.enumerate(Layers.childNodes);\r\n while ($enum3.moveNext()) {\r\n var layer = $enum3.current;\r\n if (layer.nodeName === 'Layer') {\r\n var newLayer = Layer.fromXml(layer, true);\r\n if (newLayer != null) {\r\n if (ss.canCast(newLayer, ImageSetLayer)) {\r\n var imageSetLayer = newLayer;\r\n var imageset = imageSetLayer.get_imageSet();\r\n if (imageset.get_projection() === 7 && imageset.get_extension() === '.tsv') {\r\n WWTControl.singleton.addCatalogHips(imageset);\r\n continue;\r\n }\r\n }\r\n var fileName = ss.format('{0}.txt', newLayer.id.toString());\r\n if (ss.keyExists(LayerManager.get_layerList(), newLayer.id)) {\r\n LayerManager.deleteLayerByID(newLayer.id, true, false);\r\n }\r\n try {\r\n newLayer.loadedFromTour = true;\r\n newLayer.loadData(this, fileName);\r\n LayerManager.add(newLayer, false);\r\n }\r\n catch ($e4) {\r\n }\r\n }\r\n }\r\n }\r\n LayerManager.loadTree();\r\n }\r\n this._tourDirty = 0;\r\n },\r\n saveToDataUrl: function() {\r\n return URL.createObjectURL(this.saveToBlob());;\r\n },\r\n saveToBlob: function() {\r\n var excludeAudio = false;\r\n this.cleanUp();\r\n var tourXml = this.getTourXML();\r\n var fc = new FileCabinet();\r\n fc.set_packageID(this.get_id());\r\n fc.addFile('Tour.wwtxml', new Blob([ tourXml ]));\r\n if (this._authorImage != null) {\r\n }\r\n var $enum1 = ss.enumerate(this.get_tourStops());\r\n while ($enum1.moveNext()) {\r\n var stop = $enum1.current;\r\n stop._addFilesToCabinet(fc, excludeAudio);\r\n }\r\n var masterList = this._createLayerMasterList();\r\n var $enum2 = ss.enumerate(masterList);\r\n while ($enum2.moveNext()) {\r\n var id = $enum2.current;\r\n if (ss.keyExists(LayerManager.get_layerList(), id)) {\r\n LayerManager.get_layerList()[id].addFilesToCabinet(fc);\r\n }\r\n }\r\n this.set_tourDirty(false);\r\n return fc.packageFiles();\r\n },\r\n getTourXML: function() {\r\n var xmlWriter = new XmlTextWriter();\r\n xmlWriter.formatting = 1;\r\n xmlWriter._writeProcessingInstruction('xml', \"version='1.0' encoding='UTF-8'\");\r\n xmlWriter._writeStartElement('Tour');\r\n xmlWriter._writeAttributeString('ID', this._id);\r\n xmlWriter._writeAttributeString('Title', this._title);\r\n xmlWriter._writeAttributeString('Descirption', this.get_description());\r\n xmlWriter._writeAttributeString('Description', this.get_description());\r\n xmlWriter._writeAttributeString('RunTime', (this.get_runTime() / 1000).toString());\r\n xmlWriter._writeAttributeString('Author', this._author);\r\n xmlWriter._writeAttributeString('AuthorEmail', this._authorEmail);\r\n xmlWriter._writeAttributeString('OrganizationUrl', this._organizationUrl);\r\n xmlWriter._writeAttributeString('OrganizationName', this.get_orgName());\r\n xmlWriter._writeAttributeString('Keywords', this.get_keywords());\r\n xmlWriter._writeAttributeString('UserLevel', Enums.toXml('UserLevel', this._level));\r\n xmlWriter._writeAttributeString('Classification', Enums.toXml('Classification', this._type));\r\n xmlWriter._writeAttributeString('Taxonomy', this._taxonomy);\r\n var timeLineTour = this._isTimelineTour();\r\n xmlWriter._writeAttributeString('TimeLineTour', timeLineTour.toString());\r\n xmlWriter._writeStartElement('TourStops');\r\n var $enum1 = ss.enumerate(this.get_tourStops());\r\n while ($enum1.moveNext()) {\r\n var stop = $enum1.current;\r\n stop._saveToXml(xmlWriter, true);\r\n }\r\n xmlWriter._writeEndElement();\r\n var masterList = this._createLayerMasterList();\r\n var referencedFrames = this._getReferenceFrameList();\r\n xmlWriter._writeStartElement('ReferenceFrames');\r\n var $enum2 = ss.enumerate(referencedFrames);\r\n while ($enum2.moveNext()) {\r\n var item = $enum2.current;\r\n item.saveToXml(xmlWriter);\r\n }\r\n xmlWriter._writeEndElement();\r\n xmlWriter._writeStartElement('Layers');\r\n var $enum3 = ss.enumerate(masterList);\r\n while ($enum3.moveNext()) {\r\n var id = $enum3.current;\r\n if (ss.keyExists(LayerManager.get_layerList(), id)) {\r\n var layer = LayerManager.get_layerList()[id];\r\n var name = layer.get_name();\r\n var imageset = WWTControl.singleton.renderContext.getCatalogHipsByName(name);\r\n if (imageset != null) {\r\n var imageSetLayer = ImageSetLayer.create(imageset);\r\n imageSetLayer.id = id;\r\n imageSetLayer.set_name(name);\r\n imageSetLayer.set_referenceFrame('Sky');\r\n imageSetLayer.saveToXml(xmlWriter);\r\n }\r\n else {\r\n LayerManager.get_layerList()[id].saveToXml(xmlWriter);\r\n }\r\n }\r\n }\r\n xmlWriter._writeEndElement();\r\n xmlWriter._writeFullEndElement();\r\n xmlWriter._close();\r\n return xmlWriter.body;\r\n },\r\n _getReferenceFrameList: function() {\r\n var list = [];\r\n var $enum1 = ss.enumerate(ss.keys(LayerManager.get_allMaps()));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var lm = LayerManager.get_allMaps()[key];\r\n if ((lm.frame.reference === 18 || lm.frame.reference === 19) && !(list.indexOf(lm.frame) >= 0) && !lm.frame._systemGenerated) {\r\n list.push(lm.frame);\r\n }\r\n }\r\n return list;\r\n },\r\n _createLayerMasterList: function() {\r\n var masterList = [];\r\n var $enum1 = ss.enumerate(this.get_tourStops());\r\n while ($enum1.moveNext()) {\r\n var stop = $enum1.current;\r\n var $enum2 = ss.enumerate(ss.keys(stop.layers));\r\n while ($enum2.moveNext()) {\r\n var id = $enum2.current;\r\n if (!(masterList.indexOf(id) >= 0)) {\r\n if (ss.keyExists(LayerManager.get_layerList(), id)) {\r\n masterList.push(id);\r\n }\r\n }\r\n }\r\n }\r\n return masterList;\r\n },\r\n _isTimelineTour: function() {\r\n return false;\r\n },\r\n get_tagId: function() {\r\n return this._tagId;\r\n },\r\n set_tagId: function(value) {\r\n this._tagId = value;\r\n return value;\r\n },\r\n get_authorThumbnailFilename: function() {\r\n return 'Author.Png';\r\n },\r\n get_tourThumbnailFilename: function() {\r\n if (this._representativeThumbnailTourstop < this._tourStops.length) {\r\n return this._tourStops[this._representativeThumbnailTourstop].get_tourStopThumbnailFilename();\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n get_id: function() {\r\n return this._id;\r\n },\r\n set_id: function(value) {\r\n this._id = value;\r\n return value;\r\n },\r\n get_title: function() {\r\n return this._title;\r\n },\r\n set_title: function(value) {\r\n this._title = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_runTime: function() {\r\n if (!this._runTime || this._lastDirtyCheck !== this._tourDirty) {\r\n this._runTime = this._calculateRunTime();\r\n this._lastDirtyCheck = this._tourDirty;\r\n }\r\n return this._runTime;\r\n },\r\n get_description: function() {\r\n return this._description;\r\n },\r\n set_description: function(value) {\r\n this._description = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_attributesAndCredits: function() {\r\n return this._attributesAndCredits;\r\n },\r\n set_attributesAndCredits: function(value) {\r\n this._attributesAndCredits = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorEmailOther: function() {\r\n return this._authorEmailOther;\r\n },\r\n set_authorEmailOther: function(value) {\r\n this._authorEmailOther = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorEmail: function() {\r\n return this._authorEmail;\r\n },\r\n set_authorEmail: function(value) {\r\n this._authorEmail = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorUrl: function() {\r\n return this._authorUrl;\r\n },\r\n set_authorUrl: function(value) {\r\n this._authorUrl = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorPhone: function() {\r\n return this._authorPhone;\r\n },\r\n set_authorPhone: function(value) {\r\n this._authorPhone = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorContactText: function() {\r\n return this._authorContactText;\r\n },\r\n set_authorContactText: function(value) {\r\n this._authorContactText = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_orgName: function() {\r\n return this._orgName;\r\n },\r\n set_orgName: function(value) {\r\n this._orgName = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_orgUrl: function() {\r\n return this._orgUrl;\r\n },\r\n set_orgUrl: function(value) {\r\n this._orgUrl = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_author: function() {\r\n return this._author;\r\n },\r\n set_author: function(value) {\r\n this._author = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorImageUrl: function() {\r\n return this._authorImageUrl;\r\n },\r\n set_authorImageUrl: function(value) {\r\n this._authorImageUrl = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_authorImage: function() {\r\n return this._authorImage;\r\n },\r\n set_authorImage: function(value) {\r\n this._authorImage = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_organizationUrl: function() {\r\n return this._organizationUrl;\r\n },\r\n set_organizationUrl: function(value) {\r\n this._organizationUrl = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_fileName: function() {\r\n return this._filename;\r\n },\r\n set_fileName: function(value) {\r\n this._filename = value;\r\n return value;\r\n },\r\n get_level: function() {\r\n return this._level;\r\n },\r\n set_level: function(value) {\r\n this._level = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_type: function() {\r\n return this._type;\r\n },\r\n set_type: function(value) {\r\n this._type = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_taxonomy: function() {\r\n return this._taxonomy;\r\n },\r\n set_taxonomy: function(value) {\r\n this._taxonomy = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_keywords: function() {\r\n return this._keywords;\r\n },\r\n set_keywords: function(value) {\r\n this._keywords = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_objects: function() {\r\n return this._objects;\r\n },\r\n set_objects: function(value) {\r\n this._objects = value;\r\n this.set_tourDirty(true);\r\n return value;\r\n },\r\n get_editMode: function() {\r\n return this._editMode;\r\n },\r\n set_editMode: function(value) {\r\n this._editMode = value;\r\n return value;\r\n },\r\n get_tourStops: function() {\r\n return this._tourStops;\r\n },\r\n set_tourStops: function(value) {\r\n this._tourStops = value;\r\n return value;\r\n },\r\n get_currentTourstopIndex: function() {\r\n return this._currentTourstopIndex;\r\n },\r\n set_currentTourstopIndex: function(value) {\r\n this._currentTourstopIndex = value;\r\n return value;\r\n },\r\n addTourStop: function(ts) {\r\n ts.set_owner(this);\r\n this.get_tourStops().push(ts);\r\n this._currentTourstopIndex = this._tourStops.length - 1;\r\n this.set_tourDirty(true);\r\n },\r\n insertTourStop: function(ts) {\r\n ts.set_owner(this);\r\n if (this._currentTourstopIndex > -1) {\r\n this.get_tourStops().splice(this._currentTourstopIndex, 0, ts);\r\n }\r\n else {\r\n this.get_tourStops().push(ts);\r\n this._currentTourstopIndex = this._tourStops.length - 1;\r\n }\r\n this.set_tourDirty(true);\r\n },\r\n insertAfterTourStop: function(ts) {\r\n ts.set_owner(this);\r\n if (this._currentTourstopIndex > -1 || this._currentTourstopIndex < this.get_tourStops().length) {\r\n this.get_tourStops().splice(this._currentTourstopIndex + 1, 0, ts);\r\n }\r\n else {\r\n this.get_tourStops().push(ts);\r\n this._currentTourstopIndex = this._tourStops.length - 1;\r\n }\r\n this.set_tourDirty(true);\r\n },\r\n removeTourStop: function(ts) {\r\n ss.remove(this._tourStops, ts);\r\n if (this._currentTourstopIndex > this._tourStops.length - 1) {\r\n this._currentTourstopIndex--;\r\n }\r\n this.set_tourDirty(true);\r\n },\r\n _calculateRunTime: function() {\r\n var totalTime = 0;\r\n for (var i = 0; i < this._tourStops.length; i++) {\r\n totalTime += this._tourStops[i].get_duration();\r\n if (i > 0) {\r\n switch (this._tourStops[i].get__transition()) {\r\n case 0:\r\n if (this._tourStops[i].get_target().get_backgroundImageset() == null || (this._tourStops[i - 1].get_target().get_backgroundImageset().get_dataSetType() === this._tourStops[i].get_target().get_backgroundImageset().get_dataSetType() && ((this._tourStops[i - 1].get_target().get_backgroundImageset().get_dataSetType() !== 4) || (this._tourStops[i - 1].get_target().get_target() === this._tourStops[i].get_target().get_target())))) {\r\n var start = (this._tourStops[i - 1].get_endTarget() == null) ? this._tourStops[i - 1].get_target().get_camParams() : this._tourStops[i - 1].get_endTarget().get_camParams();\r\n var slew = ViewMoverSlew.create(start, this._tourStops[i].get_target().get_camParams());\r\n totalTime += slew.get_moveTime() * 1000;\r\n }\r\n break;\r\n case 2:\r\n break;\r\n case 1:\r\n break;\r\n case 5:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return ss.truncate(totalTime);\r\n },\r\n elapsedTimeTillTourstop: function(index) {\r\n if (!index && index >= this._tourStops.length) {\r\n return 0;\r\n }\r\n var totalTime = 0;\r\n for (var i = 0; i < index; i++) {\r\n totalTime += this._tourStops[i].get_duration();\r\n if (i > 0) {\r\n switch (this._tourStops[i].get__transition()) {\r\n case 0:\r\n var start = (this._tourStops[i - 1].get_endTarget() == null) ? this._tourStops[i - 1].get_target().get_camParams() : this._tourStops[i - 1].get_endTarget().get_camParams();\r\n if (this._tourStops[i - 1].get_target().get_backgroundImageset().get_dataSetType() === this._tourStops[i].get_target().get_backgroundImageset().get_dataSetType() && ((this._tourStops[i - 1].get_target().get_backgroundImageset().get_dataSetType() !== 4) || (this._tourStops[i - 1].get_target().get_target() === this._tourStops[i].get_target().get_target()))) {\r\n var slew = ViewMoverSlew.create(start, this._tourStops[i].get_target().get_camParams());\r\n totalTime += slew.get_moveTime() * 1000;\r\n }\r\n break;\r\n case 2:\r\n break;\r\n case 1:\r\n break;\r\n case 5:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return totalTime / 1000;\r\n },\r\n elapsedTimeSinceLastMaster: function(index) {\r\n var masterOut = null;\r\n if (!index && index >= this._tourStops.length) {\r\n return null;\r\n }\r\n var totalTime = 0;\r\n for (var i = 0; i < index; i++) {\r\n if (this._tourStops[i].get_masterSlide()) {\r\n totalTime = 0;\r\n masterOut = this._tourStops[i];\r\n }\r\n totalTime += this._tourStops[i].get_duration();\r\n if (i > 0) {\r\n switch (this._tourStops[i].get__transition()) {\r\n case 0:\r\n var start = (this._tourStops[i - 1].get_endTarget() == null) ? this._tourStops[i - 1].get_target().get_camParams() : this._tourStops[i - 1].get_endTarget().get_camParams();\r\n if (this._tourStops[i - 1].get_target().get_backgroundImageset().get_dataSetType() === this._tourStops[i].get_target().get_backgroundImageset().get_dataSetType() && ((this._tourStops[i - 1].get_target().get_backgroundImageset().get_dataSetType() !== 4) || (this._tourStops[i - 1].get_target().get_target() === this._tourStops[i].get_target().get_target()))) {\r\n var slew = ViewMoverSlew.create(start, this._tourStops[i].get_target().get_camParams());\r\n totalTime += slew.get_moveTime() * 1000;\r\n }\r\n break;\r\n case 2:\r\n break;\r\n case 1:\r\n break;\r\n case 5:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return new MasterTime(masterOut, totalTime / 1000);\r\n },\r\n getMasterSlideForIndex: function(index) {\r\n var master = -1;\r\n for (var i = 0; i < index; i++) {\r\n if (this._tourStops[i].get_masterSlide()) {\r\n master = i;\r\n }\r\n }\r\n if (master === -1) {\r\n return null;\r\n }\r\n return this._tourStops[master];\r\n },\r\n getTourStopIndexByID: function(id) {\r\n if (!id || id === 'Next') {\r\n return this._currentTourstopIndex++;\r\n }\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._tourStops);\r\n while ($enum1.moveNext()) {\r\n var stop = $enum1.current;\r\n if (stop.get_id() === id) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n return -1;\r\n },\r\n cleanUp: function() {\r\n },\r\n getCachedTexture: function(filename, callMe) {\r\n if (this._textureList == null) {\r\n this._textureList = {};\r\n }\r\n if (ss.keyExists(this._textureList, filename)) {\r\n callMe();\r\n return this._textureList[filename];\r\n }\r\n var url = this.getFileStream(filename);\r\n if (!ss.whitespace(url)) {\r\n var texture = document.createElement('img');\r\n texture.src = this.getFileStream(filename);\r\n texture.addEventListener('load', function() {\r\n callMe();\r\n }, false);\r\n this._textureList[filename] = texture;\r\n return texture;\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n getCachedTexture2d: function(filename) {\r\n if (this._textureList2d == null) {\r\n this._textureList2d = {};\r\n }\r\n if (ss.keyExists(this._textureList2d, filename)) {\r\n return this._textureList2d[filename];\r\n }\r\n var texture = new Texture();\r\n texture.load(this.getFileStream(filename));\r\n this._textureList2d[filename] = texture;\r\n return texture;\r\n },\r\n addCachedFile: function(filename, file) {\r\n this._fileCache[filename] = file;\r\n if (ss.keyExists(this._textureList2d, filename)) {\r\n delete this._textureList2d[filename];\r\n }\r\n if (ss.keyExists(this._textureList, filename)) {\r\n delete this._textureList[filename];\r\n }\r\n },\r\n getFileStream: function(filename) {\r\n var blob = this.getFileBlob(filename);\r\n if (blob == null) {\r\n return null;\r\n }\r\n return URL.createObjectURL(blob);;\r\n },\r\n getFileBlob: function(filename) {\r\n if (ss.keyExists(this._fileCache, filename)) {\r\n return this._fileCache[filename];\r\n }\r\n else if (this._cabinet != null) {\r\n return this._cabinet.getFileBlob(this.get_workingDirectory() + filename);\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n get_currentTourStop: function() {\r\n if (this._currentTourstopIndex > -1) {\r\n return this.get_tourStops()[this._currentTourstopIndex];\r\n }\r\n else {\r\n return null;\r\n }\r\n },\r\n set_currentTourStop: function(value) {\r\n var i = 0;\r\n var $enum1 = ss.enumerate(this.get_tourStops());\r\n while ($enum1.moveNext()) {\r\n var stop = $enum1.current;\r\n if (stop === value) {\r\n if (this._currentTourstopIndex > -1) {\r\n }\r\n this._currentTourstopIndex = i;\r\n break;\r\n }\r\n i++;\r\n }\r\n return value;\r\n },\r\n clearTempFiles: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TourEditTab\r\n\r\n function TourEditTab() {\r\n this.musicTrack = new SoundEditor();\r\n this.voiceTrack = new SoundEditor();\r\n this._tour = null;\r\n this.tourStopList = new TourStopList();\r\n this.tourEditorUI = new TourEditor();\r\n this._contextMenu = new ContextMenuStrip();\r\n this.nextSlideCallback = null;\r\n this.playing = false;\r\n this._player = null;\r\n this._defultColor = Colors.get_white();\r\n }\r\n var TourEditTab$ = {\r\n setUiStrings: function() {\r\n },\r\n get_tour: function() {\r\n return this._tour;\r\n },\r\n set_tour: function(value) {\r\n this._tour = value;\r\n this.tourEditorUI.set_tour(this._tour);\r\n this.tourStopList.tour = this._tour;\r\n Overlay.defaultAnchor = 1;\r\n if (this._tour.get_tourStops().length > 0) {\r\n WWTControl.singleton.gotoTarget(this._tour.get_tourStops()[0].get_target(), false, true, false);\r\n this._tour.set_currentTourstopIndex(0);\r\n this.tourStopList.selectedItem = this._tour.get_currentTourstopIndex();\r\n this.musicTrack.target = this._tour.get_currentTourStop();\r\n this.voiceTrack.target = this._tour.get_currentTourStop();\r\n LayerManager.setVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n }\r\n this.setEditMode(this._tour.get_editMode());\r\n return value;\r\n },\r\n tour_CurrentTourstopChanged: function() {\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.tourEditorUI.selection);\r\n if (this.tourEditorUI != null) {\r\n this.tourEditorUI.clearSelection();\r\n }\r\n this.tourStopList.refresh();\r\n },\r\n setFocusedChild: function() {\r\n },\r\n selectCurrent: function() {\r\n this.tourStopList.selectedItem = this._tour.get_currentTourstopIndex();\r\n this.tourStopList.refresh();\r\n },\r\n tourEdit_Load: function(sender, e) {\r\n },\r\n playNow: function(fromStart) {\r\n this.playing = true;\r\n if (this.get_tour().get_editMode() || fromStart) {\r\n this.get_tour().set_currentTourstopIndex(-1);\r\n }\r\n this.setPlayPauseMode();\r\n },\r\n _tourPlayer_TourEnded: function(sender, e) {\r\n },\r\n _endTour_CloseTour: function(sender, e) {\r\n },\r\n _endTour_LaunchTour: function(sender, e) {\r\n this.playNow(true);\r\n },\r\n setEditMode: function(visible) {\r\n },\r\n tourStopList_ItemClicked: function(sender, e) {\r\n if (this._tour.get_currentTourStop() !== e) {\r\n this._tour.set_currentTourStop(e);\r\n if (e != null) {\r\n this.musicTrack.target = this._tour.get_currentTourStop();\r\n this.voiceTrack.target = this._tour.get_currentTourStop();\r\n }\r\n else {\r\n this.musicTrack.target = null;\r\n this.voiceTrack.target = null;\r\n }\r\n this.tourEditorUI.clearSelection();\r\n }\r\n if (this.playing) {\r\n this._playFromHere_Click(sender, new ss.EventArgs());\r\n }\r\n },\r\n tourStopList_ItemDoubleClicked: function(sender, e) {\r\n this.showSlideStartPosition(e);\r\n },\r\n showSlideStartPosition: function(ts) {\r\n this._tour.set_currentTourStop(ts);\r\n if (ts != null) {\r\n this.musicTrack.target = this._tour.get_currentTourStop();\r\n this.voiceTrack.target = this._tour.get_currentTourStop();\r\n }\r\n else {\r\n this.musicTrack.target = null;\r\n this.voiceTrack.target = null;\r\n }\r\n this.tourEditorUI.clearSelection();\r\n if (this._tour.get_currentTourStop() != null) {\r\n this._tour.get_currentTourStop().syncSettings();\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_startTime());\r\n SpaceTimeController.set_syncToClock(false);\r\n WWTControl.singleton.gotoTarget(ts.get_target(), false, true, false);\r\n this._tour.get_currentTourStop().set_tweenPosition(0);\r\n this._tour.get_currentTourStop()._updateLayerOpacity();\r\n LayerManager.setVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n }\r\n },\r\n tourStopList_MouseClick: function(sender, e) {\r\n if (!this._tour.get_editMode()) {\r\n }\r\n if (this.tourStopList.multipleSelection) {\r\n if (this._contextMenu != null) {\r\n this._contextMenu._dispose();\r\n }\r\n this._contextMenu = new ContextMenuStrip();\r\n var selectAllMenu = ToolStripMenuItem.create(Language.getLocalizedText(1345, 'Select All'));\r\n var cutMenu = ToolStripMenuItem.create(Language.getLocalizedText(427, 'Cut'));\r\n var copyMenu = ToolStripMenuItem.create(Language.getLocalizedText(428, 'Copy'));\r\n var pasteMenu = ToolStripMenuItem.create(Language.getLocalizedText(429, 'Paste'));\r\n var deleteMenu = ToolStripMenuItem.create(Language.getLocalizedText(167, 'Delete'));\r\n cutMenu.click = ss.bind('_cutMenu_Click', this);\r\n copyMenu.click = ss.bind('_copyMenu_Click', this);\r\n pasteMenu.click = ss.bind('_pasteMenu_Click', this);\r\n deleteMenu.click = ss.bind('_deleteMenu_Click', this);\r\n selectAllMenu.click = ss.bind('_selectAllMenu_Click', this);\r\n var sep1 = new ToolStripSeparator();\r\n this._contextMenu.items.push(selectAllMenu);\r\n this._contextMenu.items.push(sep1);\r\n this._contextMenu.items.push(cutMenu);\r\n this._contextMenu.items.push(copyMenu);\r\n pasteMenu.enabled = this.tourEditorUI.clipboardType === 'WorldWideTelescope.Slide';\r\n this._contextMenu.items.push(pasteMenu);\r\n this._contextMenu.items.push(deleteMenu);\r\n this._contextMenu._show(Cursor.get_position());\r\n }\r\n else if (this._tour.get_currentTourStop() == null) {\r\n if (this._contextMenu != null) {\r\n this._contextMenu._dispose();\r\n }\r\n this._contextMenu = new ContextMenuStrip();\r\n var selectAllMenu = ToolStripMenuItem.create(Language.getLocalizedText(1345, 'Select All'));\r\n var pasteMenu = ToolStripMenuItem.create(Language.getLocalizedText(425, 'Paste'));\r\n var sep1 = new ToolStripSeparator();\r\n var sep2 = new ToolStripSeparator();\r\n var insertSlide = ToolStripMenuItem.create(Language.getLocalizedText(426, 'Add New Slide'));\r\n pasteMenu.click = ss.bind('_pasteMenu_Click', this);\r\n selectAllMenu.click = ss.bind('_selectAllMenu_Click', this);\r\n insertSlide.click = ss.bind('_addNewSlide_Click', this);\r\n pasteMenu.enabled = this.tourEditorUI.clipboardType === 'WorldWideTelescope.Slide';\r\n this._contextMenu.items.push(selectAllMenu);\r\n this._contextMenu.items.push(sep1);\r\n this._contextMenu.items.push(pasteMenu);\r\n this._contextMenu.items.push(sep2);\r\n this._contextMenu.items.push(insertSlide);\r\n this._contextMenu._show(Cursor.get_position());\r\n }\r\n else {\r\n if (this._contextMenu != null) {\r\n this._contextMenu._dispose();\r\n }\r\n this._contextMenu = new ContextMenuStrip();\r\n var selectAllMenu = ToolStripMenuItem.create(Language.getLocalizedText(1345, 'Select All'));\r\n var cutMenu = ToolStripMenuItem.create(Language.getLocalizedText(427, 'Cut'));\r\n var copyMenu = ToolStripMenuItem.create(Language.getLocalizedText(428, 'Copy'));\r\n var pasteMenu = ToolStripMenuItem.create(Language.getLocalizedText(429, 'Paste'));\r\n var deleteMenu = ToolStripMenuItem.create(Language.getLocalizedText(167, 'Delete'));\r\n var sep1 = new ToolStripSeparator();\r\n var sep3 = new ToolStripSeparator();\r\n var sep4 = new ToolStripSeparator();\r\n var sep5 = new ToolStripSeparator();\r\n var sep6 = new ToolStripSeparator();\r\n var sep7 = new ToolStripSeparator();\r\n var insertSlide = ToolStripMenuItem.create(Language.getLocalizedText(431, 'Insert New Slide'));\r\n var insertDuplicate = ToolStripMenuItem.create(Language.getLocalizedText(627, 'Duplicate Slide at End Position'));\r\n var insertSlideshow = ToolStripMenuItem.create(Language.getLocalizedText(628, 'Merge Tour after slide...'));\r\n var playFromHere = ToolStripMenuItem.create(Language.getLocalizedText(432, 'Preview Tour From Here'));\r\n var sep2 = new ToolStripSeparator();\r\n var captureThumbnail = ToolStripMenuItem.create(Language.getLocalizedText(433, 'Capture New Thumbnail'));\r\n var setSkyPosition = ToolStripMenuItem.create(Language.getLocalizedText(434, 'Set Start Camera Position'));\r\n var setEndSkyPosition = ToolStripMenuItem.create(Language.getLocalizedText(435, 'Set End Camera Position'));\r\n var showSkyPosition = ToolStripMenuItem.create(Language.getLocalizedText(436, 'Show Start Camera Position'));\r\n var showEndSkyPosition = ToolStripMenuItem.create(Language.getLocalizedText(437, 'Show End Camera Position'));\r\n var masterSlide = ToolStripMenuItem.create(Language.getLocalizedText(438, 'Master Slide'));\r\n var makeTimeline = ToolStripMenuItem.create(Language.getLocalizedText(1346, 'Create Timeline'));\r\n var showTimeline = ToolStripMenuItem.create(Language.getLocalizedText(1347, 'Show Timeline'));\r\n var linkString = this._tour.get_currentTourStop().get_nextSlide();\r\n switch (linkString) {\r\n case '':\r\n case null:\r\n case 'Next':\r\n linkString = ' (' + Language.getLocalizedText(610, 'Next Slide') + ')';\r\n break;\r\n case 'Return':\r\n linkString = ' (' + Language.getLocalizedText(602, 'Return to Caller') + ')';\r\n break;\r\n default:\r\n var index = this.get_tour().getTourStopIndexByID(linkString);\r\n if (index > -1) {\r\n if (ss.emptyString(this._tour.get_tourStops()[index].get_description())) {\r\n linkString = ss.format(' (Slide {0})', index);\r\n }\r\n else {\r\n linkString = ' (' + this._tour.get_tourStops()[index].get_description() + ')';\r\n }\r\n }\r\n break;\r\n }\r\n var setNextSlide = ToolStripMenuItem.create(Language.getLocalizedText(590, 'Set Next Slide') + linkString);\r\n var trackSpaceTime = ToolStripMenuItem.create(Language.getLocalizedText(439, 'Track Date/Time/Location'));\r\n var fadeInOverlays = ToolStripMenuItem.create(Language.getLocalizedText(629, 'Fade In Slide Elements'));\r\n var properties = ToolStripMenuItem.create(Language.getLocalizedText(20, 'Properties'));\r\n var interpolation = ToolStripMenuItem.create(Language.getLocalizedText(1029, 'Animation Tween Type'));\r\n var Linear = ToolStripMenuItem.create(Language.getLocalizedText(1030, 'Linear'));\r\n var Ease = ToolStripMenuItem.create(Language.getLocalizedText(1031, 'Ease In/Out'));\r\n var EaseIn = ToolStripMenuItem.create(Language.getLocalizedText(1032, 'Ease In'));\r\n var EaseOut = ToolStripMenuItem.create(Language.getLocalizedText(1033, 'Ease Out'));\r\n var Exponential = ToolStripMenuItem.create(Language.getLocalizedText(1034, 'Exponential'));\r\n Linear.tag = 0;\r\n Ease.tag = 3;\r\n EaseIn.tag = 1;\r\n EaseOut.tag = 2;\r\n Exponential.tag = 4;\r\n Linear.click = ss.bind('_interpolation_Click', this);\r\n Ease.click = ss.bind('_interpolation_Click', this);\r\n EaseIn.click = ss.bind('_interpolation_Click', this);\r\n EaseOut.click = ss.bind('_interpolation_Click', this);\r\n Exponential.click = ss.bind('_interpolation_Click', this);\r\n switch (this._tour.get_currentTourStop().get_interpolationType()) {\r\n case 0:\r\n Linear.checked = true;\r\n break;\r\n case 1:\r\n EaseIn.checked = true;\r\n break;\r\n case 2:\r\n EaseOut.checked = true;\r\n break;\r\n case 3:\r\n Ease.checked = true;\r\n break;\r\n case 4:\r\n Exponential.checked = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n interpolation.dropDownItems.push(Linear);\r\n interpolation.dropDownItems.push(Ease);\r\n interpolation.dropDownItems.push(EaseIn);\r\n interpolation.dropDownItems.push(EaseOut);\r\n interpolation.dropDownItems.push(Exponential);\r\n selectAllMenu.click = ss.bind('_selectAllMenu_Click', this);\r\n insertDuplicate.click = ss.bind('_insertDuplicate_Click', this);\r\n cutMenu.click = ss.bind('_cutMenu_Click', this);\r\n copyMenu.click = ss.bind('_copyMenu_Click', this);\r\n pasteMenu.click = ss.bind('_pasteMenu_Click', this);\r\n deleteMenu.click = ss.bind('_deleteMenu_Click', this);\r\n insertSlide.click = ss.bind('_insertNewSlide_Click', this);\r\n properties.click = ss.bind('_properties_Click', this);\r\n captureThumbnail.click = ss.bind('_captureThumbnail_Click', this);\r\n setSkyPosition.click = ss.bind('_setSkyPosition_Click', this);\r\n setEndSkyPosition.click = ss.bind('_setEndSkyPosition_Click', this);\r\n showEndSkyPosition.click = ss.bind('_showEndSkyPosition_Click', this);\r\n showSkyPosition.click = ss.bind('_showSkyPosition_Click', this);\r\n playFromHere.click = ss.bind('_playFromHere_Click', this);\r\n masterSlide.click = ss.bind('_masterSlide_Click', this);\r\n setNextSlide.click = ss.bind('_setNextSlide_Click', this);\r\n trackSpaceTime.click = ss.bind('_trackSpaceTime_Click', this);\r\n insertSlideshow.click = ss.bind('_insertSlideshow_Click', this);\r\n fadeInOverlays.click = ss.bind('_fadeInOverlays_Click', this);\r\n if (this._tour.get_currentTourStop().get_masterSlide()) {\r\n masterSlide.checked = true;\r\n }\r\n if (this._tour.get_currentTourStop().get_hasTime()) {\r\n trackSpaceTime.checked = true;\r\n }\r\n fadeInOverlays.checked = this._tour.get_currentTourStop().get_fadeInOverlays();\r\n this._contextMenu.items.push(selectAllMenu);\r\n this._contextMenu.items.push(sep7);\r\n this._contextMenu.items.push(cutMenu);\r\n this._contextMenu.items.push(copyMenu);\r\n pasteMenu.enabled = this.tourEditorUI.clipboardType === 'WorldWideTelescope.Slide';\r\n this._contextMenu.items.push(pasteMenu);\r\n this._contextMenu.items.push(deleteMenu);\r\n this._contextMenu.items.push(sep1);\r\n this._contextMenu.items.push(insertSlide);\r\n this._contextMenu.items.push(insertDuplicate);\r\n this._contextMenu.items.push(insertSlideshow);\r\n this._contextMenu.items.push(sep2);\r\n this._contextMenu.items.push(playFromHere);\r\n this._contextMenu.items.push(sep3);\r\n this._contextMenu.items.push(setSkyPosition);\r\n this._contextMenu.items.push(setEndSkyPosition);\r\n this._contextMenu.items.push(sep4);\r\n this._contextMenu.items.push(showSkyPosition);\r\n this._contextMenu.items.push(showEndSkyPosition);\r\n this._contextMenu.items.push(sep5);\r\n this._contextMenu.items.push(captureThumbnail);\r\n this._contextMenu.items.push(sep6);\r\n this._contextMenu.items.push(masterSlide);\r\n this._contextMenu.items.push(setNextSlide);\r\n this._contextMenu.items.push(fadeInOverlays);\r\n this._contextMenu.items.push(trackSpaceTime);\r\n this._contextMenu.items.push(interpolation);\r\n this._contextMenu._show(Vector2d.create(e.clientX, e.clientY));\r\n }\r\n },\r\n _selectAllMenu_Click: function(sender, e) {\r\n this.tourStopList.selectAll();\r\n },\r\n _interpolation_Click: function(sender, e) {\r\n var item = sender;\r\n this._tour.get_currentTourStop().set_interpolationType(item.tag);\r\n },\r\n _nextSlideChosen: function() {\r\n if (this._selectDialog.get_OK()) {\r\n this._tour.get_currentTourStop().set_nextSlide(this._selectDialog.get_id());\r\n }\r\n },\r\n _setNextSlide_Click: function(sender, e) {\r\n this._selectDialog = new SelectLink(null);\r\n this.nextSlideCallback(this._selectDialog, ss.bind('_nextSlideChosen', this));\r\n },\r\n _insertDuplicate_Click: function(sender, e) {\r\n Undo.push(new UndoTourSlidelistChange(Language.getLocalizedText(530, 'Duplicate Slide at End Position'), this._tour));\r\n var ts = this._tour.get_currentTourStop().copy();\r\n if (ts == null) {\r\n return;\r\n }\r\n if (ts.get_endTarget() != null) {\r\n ts.get_endTarget().set_backgroundImageset(ts.get_target().get_backgroundImageset());\r\n ts.get_endTarget().set_studyImageset(ts.get_target().get_studyImageset());\r\n ts.set_target(ts.get_endTarget());\r\n ts.set_startTime(ts.get_endTime());\r\n ts.set_endTarget(null);\r\n }\r\n var $enum1 = ss.enumerate(ts.get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_tweenFactor(1);\r\n overlay.set_animate(!overlay.get_animate());\r\n overlay.set_animate(!overlay.get_animate());\r\n }\r\n ts.set_tweenPosition(0);\r\n ts.set_fadeInOverlays(false);\r\n this._tour.insertAfterTourStop(ts);\r\n this.tourStopList.refresh();\r\n },\r\n _fadeInOverlays_Click: function(sender, e) {\r\n this._tour.get_currentTourStop().set_fadeInOverlays(!this._tour.get_currentTourStop().get_fadeInOverlays());\r\n },\r\n _insertSlideshow_Click: function(sender, e) {\r\n },\r\n _trackSpaceTime_Click: function(sender, e) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(532, 'Track Time Edit'), this._tour));\r\n this._tour.get_currentTourStop().set_hasTime(!this._tour.get_currentTourStop().get_hasTime());\r\n },\r\n _masterSlide_Click: function(sender, e) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(533, 'Master Slide State Edit'), this._tour));\r\n this._tour.get_currentTourStop().set_masterSlide(!this._tour.get_currentTourStop().get_masterSlide());\r\n this.tourStopList.refresh();\r\n },\r\n _playFromHere_Click: function(sender, e) {\r\n this.playFromCurrentTourstop();\r\n },\r\n playFromCurrentTourstop: function() {\r\n this.playing = true;\r\n WWTControl.singleton.gotoTarget(this._tour.get_currentTourStop().get_target(), false, true, false);\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_startTime());\r\n SpaceTimeController.set_syncToClock(false);\r\n this.setPlayPauseMode();\r\n },\r\n playFromTourstop: function(ts) {\r\n this._tour.set_currentTourStop(ts);\r\n this.playFromCurrentTourstop();\r\n },\r\n _showSkyPosition_Click: function(sender, e) {\r\n if (this._tour.get_currentTourStop() != null) {\r\n WWTControl.singleton.gotoTarget(this._tour.get_currentTourStop().get_target(), false, true, false);\r\n this._tour.get_currentTourStop().syncSettings();\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_startTime());\r\n SpaceTimeController.set_syncToClock(false);\r\n this._tour.get_currentTourStop().set_tweenPosition(0);\r\n LayerManager.setVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n this.tourStopList.refresh();\r\n }\r\n },\r\n _showEndSkyPosition_Click: function(sender, e) {\r\n this._tour.get_currentTourStop().set_tweenPosition(1);\r\n this._tour.get_currentTourStop()._updateLayerOpacity();\r\n if (this._tour.get_currentTourStop() != null && this._tour.get_currentTourStop().get_endTarget() != null) {\r\n WWTControl.singleton.gotoTargetFull(false, true, this._tour.get_currentTourStop().get_endTarget().get_camParams(), this._tour.get_currentTourStop().get_target().get_studyImageset(), this._tour.get_currentTourStop().get_target().get_backgroundImageset());\r\n WWTControl.singleton.renderContext.set_solarSystemTrack(this._tour.get_currentTourStop().get_endTarget().get_target());\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_endTime());\r\n this._tour.get_currentTourStop().syncSettings();\r\n LayerManager.setVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n SpaceTimeController.set_syncToClock(false);\r\n this.tourStopList.refresh();\r\n this.tourEditorUI.clearSelection();\r\n }\r\n },\r\n _setEndSkyPosition_Click: function(sender, e) {\r\n if (this._tour.get_currentTourStop() != null) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(435, 'Set End Camera Position'), this._tour));\r\n var newPlace = Place.createCameraParams('End Place', WWTControl.singleton.renderContext.viewCamera.copy(), 268435456, WWTControl.singleton.constellation, WWTControl.singleton.renderContext.get_backgroundImageset().get_dataSetType(), WWTControl.singleton.renderContext.get_solarSystemTrack());\r\n this._tour.get_currentTourStop().set_endTarget(newPlace);\r\n this._tour.get_currentTourStop().get_endTarget().set_constellation(WWTControl.singleton.constellation);\r\n this._tour.get_currentTourStop().set_endTime(SpaceTimeController.get_now());\r\n this._tour.get_currentTourStop().set_tweenPosition(1);\r\n var $enum1 = ss.enumerate(ss.keys(this._tour.get_currentTourStop().layers));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var info = this._tour.get_currentTourStop().layers[key];\r\n if (ss.keyExists(LayerManager.get_layerList(), info.id)) {\r\n info.endOpacity = LayerManager.get_layerList()[info.id].get_opacity();\r\n info.endParams = LayerManager.get_layerList()[info.id].getParams();\r\n }\r\n }\r\n this._tour.get_currentTourStop()._updateLayerOpacity();\r\n this.tourStopList.refresh();\r\n TimeLine.refreshUi();\r\n this.tourEditorUI.clearSelection();\r\n }\r\n },\r\n _setSkyPosition_Click: function(sender, e) {\r\n if (this._tour.get_currentTourStop() != null) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(434, 'Set Start Camera Position'), this._tour));\r\n this._tour.get_currentTourStop().get_target().set_target(WWTControl.singleton.renderContext.get_solarSystemTrack());\r\n this._tour.get_currentTourStop().get_target().set_type(WWTControl.singleton.renderContext.get_backgroundImageset().get_dataSetType());\r\n this._tour.get_currentTourStop().get_target().set_camParams(WWTControl.singleton.renderContext.viewCamera.copy());\r\n this._tour.get_currentTourStop().get_target().set_constellation(WWTControl.singleton.constellation);\r\n this._tour.get_currentTourStop().get_target().set_studyImageset(WWTControl.singleton.renderContext.get_foregroundImageset());\r\n this._tour.get_currentTourStop().get_target().set_type(WWTControl.singleton.renderContext.get_backgroundImageset().get_dataSetType());\r\n this._tour.get_currentTourStop().get_target().set_backgroundImageset(WWTControl.singleton.renderContext.get_backgroundImageset().get_stockImageSet());\r\n this._tour.get_currentTourStop().captureSettings();\r\n this._tour.get_currentTourStop().layers = LayerManager._getVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n this._tour.get_currentTourStop().set_tweenPosition(0);\r\n this.tourStopList.refresh();\r\n TimeLine.refreshUi();\r\n this.tourEditorUI.clearSelection();\r\n }\r\n },\r\n _captureThumbnail_Click: function(sender, e) {\r\n if (this._tour.get_currentTourStop() != null) {\r\n this._captureThumbnail(this._tour.get_currentTourStop());\r\n }\r\n },\r\n _captureThumbnail: function(tourStop) {\r\n var $this = this;\r\n\r\n WWTControl.singleton.captureThumbnail(function(blob) {\r\n var filename = ss.format('{0}.thumb.png', tourStop.get_id());\r\n $this._tour.addCachedFile(filename, blob);\r\n tourStop.set_thumbnail($this._tour.getCachedTexture(filename, function() {\r\n $this.tourStopList.refresh();\r\n }));\r\n });\r\n },\r\n _properties_Click: function(sender, e) {\r\n throw new Error('The method or operation is not implemented.');\r\n },\r\n tourStopList_AddNewSlide: function(sender, e) {\r\n this.addSlide(false);\r\n this.tourStopList.ensureAddVisible();\r\n },\r\n _addNewSlide_Click: function(sender, e) {\r\n this.addSlide(false);\r\n this.tourStopList.ensureAddVisible();\r\n },\r\n _insertNewSlide_Click: function(sender, e) {\r\n this.addSlide(true);\r\n },\r\n addSlide: function(insert) {\r\n Undo.push(new UndoTourSlidelistChange(Language.getLocalizedText(426, 'Add New Slide'), this._tour));\r\n Cursor.set_current(Cursors.get_waitCursor());\r\n var placeName = 'Current Screen';\r\n var newPlace = Place.createCameraParams(placeName, WWTControl.singleton.renderContext.viewCamera.copy(), 268435456, WWTControl.singleton.constellation, WWTControl.singleton.renderContext.get_backgroundImageset().get_dataSetType(), WWTControl.singleton.renderContext.get_solarSystemTrack());\r\n newPlace.set_studyImageset(WWTControl.singleton.renderContext.get_foregroundImageset());\r\n newPlace.set_backgroundImageset(WWTControl.singleton.renderContext.get_backgroundImageset().get_stockImageSet());\r\n var newTourStop = TourStop.create(newPlace);\r\n if (insert) {\r\n this._tour.insertTourStop(newTourStop);\r\n }\r\n else {\r\n this._tour.addTourStop(newTourStop);\r\n }\r\n if (this._tour.get_currentTourStop() != null) {\r\n this.musicTrack.target = this._tour.get_currentTourStop();\r\n this.voiceTrack.target = this._tour.get_currentTourStop();\r\n }\r\n else {\r\n this.musicTrack.target = null;\r\n this.voiceTrack.target = null;\r\n }\r\n this._tour.get_currentTourStop().layers = LayerManager._getVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n this._captureThumbnail(newTourStop);\r\n this.tourStopList.selectedItem = this.tourStopList.findItem(newTourStop);\r\n this.tourStopList.refresh();\r\n this.tourEditorUI.clearSelection();\r\n Cursor.set_current(Cursors.get_defaultV());\r\n TimeLine.refreshUi();\r\n },\r\n _deleteMenu_Click: function(sender, e) {\r\n Undo.push(new UndoTourSlidelistChange(Language.getLocalizedText(534, 'Delete Slide'), this._tour));\r\n var $enum1 = ss.enumerate(ss.keys(this.tourStopList.selectedItems));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var item = this.tourStopList.selectedItems[key];\r\n this._tour.removeTourStop(item);\r\n }\r\n ss.clearKeys(this.tourStopList.selectedItems);\r\n this.tourStopList.selectedItem = -1;\r\n this._tour.set_currentTourStop(null);\r\n this.musicTrack.target = null;\r\n this.voiceTrack.target = null;\r\n this.tourStopList.refresh();\r\n this.tourEditorUI.clearSelection();\r\n },\r\n _pasteMenu_Click: function(sender, e) {\r\n if (this.tourEditorUI.clipboardType === 'WorldWideTelescope.Slide') {\r\n Undo.push(new UndoTourSlidelistChange(Language.getLocalizedText(535, 'Paste Slide'), this._tour));\r\n var xParser = new DOMParser();\r\n var doc = xParser.parseFromString(this.tourEditorUI.clipboardData, 'text/xml');\r\n var node = Util.selectSingleNode(doc, 'TourStops');\r\n var pasteStack = new ss.Stack();\r\n var $enum1 = ss.enumerate(node.childNodes);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (child.nodeName === 'TourStop') {\r\n var ts = TourStop._fromXml(this._tour, child);\r\n ts.set_id(Guid.newGuid().toString());\r\n pasteStack.push(ts);\r\n }\r\n }\r\n ss.clearKeys(this.tourStopList.selectedItems);\r\n var curIndex = this.tourStopList.selectedItem + pasteStack.count - 1;\r\n while (pasteStack.count > 0) {\r\n var ts = pasteStack.pop();\r\n this._tour.insertTourStop(ts);\r\n this.tourStopList.selectedItems[curIndex--] = ts;\r\n }\r\n this.tourStopList.refresh();\r\n this.tourEditorUI.clearSelection();\r\n }\r\n },\r\n _copyMenu_Click: function(sender, e) {\r\n var writer = new XmlTextWriter();\r\n writer._writeProcessingInstruction('xml', \"version='1.0' encoding='UTF-8'\");\r\n writer._writeStartElement('TourStops');\r\n var $enum1 = ss.enumerate(ss.keys(this.tourStopList.selectedItems));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var item = this.tourStopList.selectedItems[key];\r\n item._saveToXml(writer, true);\r\n }\r\n writer._writeEndElement();\r\n this.tourEditorUI.clipboardType = 'WorldWideTelescope.Slide';\r\n this.tourEditorUI.clipboardData = writer.body;\r\n },\r\n _cutMenu_Click: function(sender, e) {\r\n Undo.push(new UndoTourSlidelistChange(Language.getLocalizedText(536, 'Cut Slide'), this._tour));\r\n this._copyMenu_Click(sender, e);\r\n var $enum1 = ss.enumerate(ss.keys(this.tourStopList.selectedItems));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var item = this.tourStopList.selectedItems[key];\r\n this._tour.removeTourStop(item);\r\n }\r\n ss.clearKeys(this.tourStopList.selectedItems);\r\n this.tourStopList.refresh();\r\n this.tourEditorUI.clearSelection();\r\n },\r\n pauseTour: function() {\r\n if (this.playing) {\r\n this.playing = false;\r\n }\r\n this.setPlayPauseMode();\r\n },\r\n preview_Click: function(sender, e) {\r\n this.playing = !this.playing;\r\n if (this.playing && this._tour.get_editMode()) {\r\n this.get_tour().set_currentTourstopIndex(-1);\r\n }\r\n this.setPlayPauseMode();\r\n },\r\n setPlayPauseMode: function() {\r\n if (this._tour.get_editMode()) {\r\n if (this.playing) {\r\n if (this._player == null) {\r\n this._player = new TourPlayer();\r\n }\r\n this._player.set_tour(this._tour);\r\n WWTControl.singleton.uiController = this._player;\r\n this._player.play();\r\n this.tourStopList.showAddButton = false;\r\n }\r\n else {\r\n WWTControl.singleton.uiController = this.tourEditorUI;\r\n if (this._player != null) {\r\n this._player.stop(false);\r\n }\r\n this._player = null;\r\n WWTControl.singleton.set__mover(null);\r\n this.tourStopList.showAddButton = this._tour.get_editMode();\r\n }\r\n }\r\n else {\r\n if (this.playing) {\r\n if (this._player == null) {\r\n this._player = new TourPlayer();\r\n }\r\n this._player.set_tour(this._tour);\r\n WWTControl.singleton.uiController = this._player;\r\n this._player.play();\r\n this.tourStopList.showAddButton = false;\r\n }\r\n else {\r\n WWTControl.singleton.uiController = null;\r\n WWTControl.singleton.renderContext.freezeView();\r\n if (this._player != null) {\r\n this._player.stop(false);\r\n }\r\n this._player = null;\r\n WWTControl.singleton.uiController = null;\r\n WWTControl.singleton.set__mover(null);\r\n this.tourStopList.showAddButton = this._tour.get_editMode();\r\n }\r\n }\r\n this.tourStopList.refresh();\r\n },\r\n playerTimer_Tick: function(sender, e) {\r\n if (this.playing) {\r\n if (this._player != null) {\r\n if (!TourPlayer.get_playing()) {\r\n this.playing = false;\r\n this.setPlayPauseMode();\r\n }\r\n else {\r\n if (this.tourStopList.selectedItem !== this._tour.get_currentTourstopIndex()) {\r\n this.tourStopList.selectedItem = this._tour.get_currentTourstopIndex();\r\n }\r\n }\r\n }\r\n }\r\n },\r\n insertShapeCircle_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 0);\r\n },\r\n insertShapeRectangle_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 1);\r\n },\r\n insertShapeLine_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 5);\r\n },\r\n insertDonut_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 3);\r\n },\r\n _addArrow_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 4);\r\n },\r\n insertVideo_Click: function(sender, e) {\r\n },\r\n insertAudio_Click: function(sender, e) {\r\n },\r\n insertHyperlink_Click: function(sender, e) {\r\n },\r\n colorPicker_Click: function(sender, e) {\r\n },\r\n tourEditTab_Leave: function(sender, e) {\r\n },\r\n editTourProperties_Click: function(sender, e) {\r\n },\r\n saveTour_Click: function(sender, e) {\r\n this.save(false);\r\n },\r\n save: function(saveAs) {\r\n return true;\r\n },\r\n addVideo_Click: function(sender, e) {\r\n },\r\n addPicture_Click: function(sender, e) {\r\n },\r\n addShape_Click: function(sender, e) {\r\n },\r\n _addOpenRectangle_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 6);\r\n },\r\n _addStar_Click: function(sender, e) {\r\n this.tourEditorUI.addShape('', 2);\r\n },\r\n addText_Click: function(sender, e) {\r\n },\r\n preview_EnabledChanged: function(sender, e) {\r\n if (this.playing) {\r\n }\r\n else {\r\n }\r\n },\r\n preview_MouseEnter: function(sender, e) {\r\n },\r\n preview_MouseLeave: function(sender, e) {\r\n },\r\n preview_MouseUp: function(sender, e) {\r\n },\r\n preview_MouseDown: function(sender, e) {\r\n },\r\n tourStopList_ItemHover: function(sender, e) {\r\n },\r\n refresh: function() {\r\n },\r\n undoStep: function() {\r\n if (Undo.peekAction()) {\r\n Undo.stepBack();\r\n this.tourStopList.refresh();\r\n this.tourStopList.selectedItem = this._tour.get_currentTourstopIndex();\r\n this.showSlideStartPosition(this._tour.get_currentTourStop());\r\n this.refresh();\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.tourEditorUI.selection);\r\n }\r\n },\r\n redoStep: function() {\r\n if (Undo.peekRedoAction()) {\r\n Undo.stepForward();\r\n this.tourStopList.refresh();\r\n this.tourStopList.selectedItem = this._tour.get_currentTourstopIndex();\r\n this.showSlideStartPosition(this._tour.get_currentTourStop());\r\n this.refresh();\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.tourEditorUI.selection);\r\n }\r\n },\r\n tourStopList_ShowEndPosition: function(sender, e) {\r\n this._showEndSkyPosition_Click(this, new ss.EventArgs());\r\n },\r\n tourStopList_ShowStartPosition: function(sender, e) {\r\n this.showSlideStartPosition(this.get_tour().get_currentTourStop());\r\n this.tourEditorUI.clearSelection();\r\n },\r\n tourStopList_KeyDown: function(sender, e) {\r\n if (e.ctrlKey) {\r\n switch (e.keyCode) {\r\n case 67:\r\n this._copyMenu_Click(null, new ss.EventArgs());\r\n break;\r\n case 86:\r\n this._pasteMenu_Click(null, new ss.EventArgs());\r\n break;\r\n case 88:\r\n this._cutMenu_Click(null, new ss.EventArgs());\r\n break;\r\n case 90:\r\n if (Undo.peekAction()) {\r\n TourEdit._undoStep();\r\n }\r\n else {\r\n UiTools._beep();\r\n }\r\n break;\r\n case 89:\r\n if (Undo.peekRedoAction()) {\r\n TourEdit._redoStep();\r\n }\r\n else {\r\n UiTools._beep();\r\n }\r\n break;\r\n }\r\n }\r\n if (e.keyCode === 46) {\r\n this._deleteMenu_Click(null, new ss.EventArgs());\r\n }\r\n },\r\n _ensureSelectedVisible: function() {\r\n this.tourStopList.ensureSelectedVisible();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TourEditor\r\n\r\n function TourEditor() {\r\n this.selection = new Selection();\r\n this._contextMenu = new ContextMenuStrip();\r\n this._tour = null;\r\n this._mouseDown = false;\r\n this._selectionAction = 11;\r\n this._needUndoFrame = false;\r\n this._contextPoint = new Vector2d();\r\n this._dragCopying = false;\r\n this._brokeThreshold = false;\r\n this.nextSlideCallback = null;\r\n this.clipboardData = '';\r\n this.clipboardType = '';\r\n this.editTextCallback = null;\r\n this._defaultColor = Colors.get_white();\r\n }\r\n var TourEditor$ = {\r\n render: function(renderContext) {\r\n renderContext.setupMatricesOverlays();\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n var $enum1 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (overlay.get_animate() && this.get_tour().get_currentTourStop().get_keyFramed()) {\r\n overlay.set_tweenFactor(this._tour.get_currentTourStop().get_tweenPosition());\r\n }\r\n else if (!this.get_tour().get_currentTourStop().get_keyFramed()) {\r\n overlay.set_tweenFactor((this._tour.get_currentTourStop().get_tweenPosition() < 0.5) ? 0 : 1);\r\n }\r\n overlay.draw3D(renderContext, true);\r\n }\r\n this.selection.draw3D(renderContext, 1);\r\n if (TourEditor.currentEditor != null) {\r\n TourEditor.currentEditor.render(renderContext);\r\n }\r\n Settings.tourSettings = null;\r\n },\r\n get_tour: function() {\r\n return this._tour;\r\n },\r\n set_tour: function(value) {\r\n this._tour = value;\r\n return value;\r\n },\r\n close: function() {\r\n if (this._tour != null) {\r\n this._tour = null;\r\n this.set_focus(null);\r\n }\r\n },\r\n clearSelection: function() {\r\n this.selection.clearSelection();\r\n OverlayList._updateOverlayListSelection(this.selection);\r\n this.set_focus(null);\r\n },\r\n get_focus: function() {\r\n return this.selection.get_focus();\r\n },\r\n set_focus: function(value) {\r\n this.selection.set_focus(value);\r\n return value;\r\n },\r\n pointToView: function(pnt) {\r\n var clientHeight = WWTControl.singleton.renderContext.height;\r\n var clientWidth = WWTControl.singleton.renderContext.width;\r\n var viewWidth = (WWTControl.singleton.renderContext.width / WWTControl.singleton.renderContext.height) * 1116;\r\n var x = ((pnt.x) / (clientWidth) * viewWidth) - ((viewWidth - 1920) / 2);\r\n var y = (pnt.y) / clientHeight * 1116;\r\n return Vector2d.create(x, y);\r\n },\r\n mouseDown: function(sender, e) {\r\n this._brokeThreshold = false;\r\n this._needUndoFrame = true;\r\n var location = this.pointToView(Vector2d.create(e.offsetX, e.offsetY));\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n this._needUndoFrame = false;\r\n return false;\r\n }\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.mouseDown(sender, e)) {\r\n return true;\r\n }\r\n }\r\n if (this.get_focus() != null) {\r\n if (this.selection.get_multiSelect()) {\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (overlay.hitTest(location)) {\r\n this._selectionAction = 9;\r\n this._mouseDown = true;\r\n this._pointDown = location;\r\n this.set_focus(overlay);\r\n if (e.ctrlKey) {\r\n this._dragCopying = true;\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n else {\r\n if (this.get_focus().hitTest(location)) {\r\n this._selectionAction = 9;\r\n this._mouseDown = true;\r\n this._pointDown = location;\r\n if (e.ctrlKey) {\r\n this._dragCopying = true;\r\n }\r\n return true;\r\n }\r\n }\r\n var hit = this.selection.hitTest(location);\r\n if (hit !== 11) {\r\n this._selectionAction = hit;\r\n this._mouseDown = true;\r\n if (hit === 8) {\r\n this._pointDown = location;\r\n }\r\n else {\r\n this._pointDown = this.selection.pointToSelectionSpace(location);\r\n }\r\n return true;\r\n }\r\n }\r\n for (var i = this._tour.get_currentTourStop().get_overlays().length - 1; i >= 0; i--) {\r\n if (this._tour.get_currentTourStop().get_overlays()[i].hitTest(location)) {\r\n this._selectionAction = 9;\r\n this.set_focus(this._tour.get_currentTourStop().get_overlays()[i]);\r\n if (e.ctrlKey || e.shiftKey) {\r\n this.selection.addSelection(this.get_focus());\r\n }\r\n else {\r\n this.selection.setSelection(this.get_focus());\r\n }\r\n OverlayList._updateOverlayListSelection(this.selection);\r\n this._mouseDown = true;\r\n this._pointDown = location;\r\n return true;\r\n }\r\n }\r\n this.set_focus(null);\r\n this.clearSelection();\r\n this._needUndoFrame = false;\r\n return false;\r\n },\r\n mouseUp: function(sender, e) {\r\n this._brokeThreshold = false;\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.mouseUp(sender, e)) {\r\n return true;\r\n }\r\n }\r\n this._contextPoint = Vector2d.create(e.offsetX, e.offsetY);\r\n if (this._mouseDown) {\r\n this._mouseDown = false;\r\n if (e.button === 2) {\r\n if (this.get_focus() != null) {\r\n this.showSelectionContextMenu(Vector2d.create(e.offsetX, e.offsetY));\r\n }\r\n }\r\n return true;\r\n }\r\n if (e.button === 2) {\r\n if (this.get_focus() == null) {\r\n this._showNoSelectionContextMenu(Vector2d.create(e.offsetX, e.offsetY));\r\n }\r\n return true;\r\n }\r\n return false;\r\n },\r\n mouseMove: function(sender, e) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.mouseMove(sender, e)) {\r\n return true;\r\n }\r\n }\r\n var location = this.pointToView(Vector2d.create(e.offsetX, e.offsetY));\r\n if (this._mouseDown && this.get_focus() != null) {\r\n var undoFrame = null;\r\n var actionText = Language.getLocalizedText(502, 'Edit');\r\n if (this._needUndoFrame) {\r\n undoFrame = new UndoTourStopChange(Language.getLocalizedText(502, 'Edit'), this._tour);\r\n }\r\n var moveX;\r\n var moveY;\r\n if (this._selectionAction !== 9 && this._selectionAction !== 8) {\r\n var newPoint = this.selection.pointToSelectionSpace(location);\r\n moveX = newPoint.x - this._pointDown.x;\r\n moveY = newPoint.y - this._pointDown.y;\r\n this._pointDown = newPoint;\r\n }\r\n else {\r\n moveX = location.x - this._pointDown.x;\r\n moveY = location.y - this._pointDown.y;\r\n if (this._selectionAction === 9 && !this._brokeThreshold) {\r\n if (Math.abs(moveX) > 3 || Math.abs(moveY) > 3) {\r\n this._brokeThreshold = true;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n this._pointDown = location;\r\n }\r\n if (this._dragCopying) {\r\n if (this.selection.get_multiSelect()) {\r\n var set = this.selection.selectionSet;\r\n this.clearSelection();\r\n var $enum1 = ss.enumerate(set);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n var newOverlay = this.addOverlay(overlay);\r\n newOverlay.set_x(overlay.get_x());\r\n newOverlay.set_y(overlay.get_y());\r\n this.set_focus(newOverlay);\r\n this.selection.addSelection(this.get_focus());\r\n }\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n this._dragCopying = false;\r\n }\r\n else {\r\n var newOverlay = this.addOverlay(this.get_focus());\r\n newOverlay.set_x(this.get_focus().get_x());\r\n newOverlay.set_y(this.get_focus().get_y());\r\n this.set_focus(newOverlay);\r\n this.selection.setSelection(this.get_focus());\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n this._dragCopying = false;\r\n }\r\n }\r\n var aspect = this.get_focus().get_width() / this.get_focus().get_height();\r\n var center = Vector2d.create(this.get_focus().get_x(), this.get_focus().get_y());\r\n if (e.ctrlKey) {\r\n actionText = Language.getLocalizedText(537, 'Resize');\r\n switch (this._selectionAction) {\r\n case 0:\r\n this.get_focus().set_width(Math.max(2, this.get_focus().get_width() - moveX * 2));\r\n this.get_focus().set_height(Math.max(2, this.get_focus().get_height() - (moveX / aspect) * 2));\r\n break;\r\n case 1:\r\n this.get_focus().set_height(Math.max(2, this.get_focus().get_height() - moveY * 2));\r\n break;\r\n case 2:\r\n this.get_focus().set_width(Math.max(2, this.get_focus().get_width() + moveX * 2));\r\n this.get_focus().set_height(Math.max(2, this.get_focus().get_height() + (moveX / aspect) * 2));\r\n break;\r\n case 3:\r\n this.get_focus().set_width(Math.max(2, this.get_focus().get_width() + moveX * 2));\r\n break;\r\n case 4:\r\n this.get_focus().set_width(Math.max(2, this.get_focus().get_width() + moveX * 2));\r\n this.get_focus().set_height(Math.max(2, this.get_focus().get_height() + (moveX / aspect) * 2));\r\n break;\r\n case 5:\r\n this.get_focus().set_height(Math.max(2, this.get_focus().get_height() + moveY * 2));\r\n break;\r\n case 6:\r\n this.get_focus().set_width(Math.max(2, this.get_focus().get_width() - moveX * 2));\r\n this.get_focus().set_height(Math.max(2, this.get_focus().get_height() - (moveX / aspect) * 2));\r\n break;\r\n case 7:\r\n this.get_focus().set_width(Math.max(2, this.get_focus().get_width() - moveX * 2));\r\n break;\r\n case 8:\r\n actionText = Language.getLocalizedText(538, 'Rotate');\r\n this.get_focus().set_rotationAngle(this.get_focus().get_rotationAngle() + moveX / 10);\r\n break;\r\n case 9:\r\n actionText = Language.getLocalizedText(539, 'Drag Copy');\r\n center.x += moveX;\r\n center.y += moveY;\r\n break;\r\n case 10:\r\n break;\r\n case 11:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n else {\r\n if (this._selectionAction !== 8 && this._selectionAction !== 9) {\r\n if (moveX > (this.get_focus().get_width() - 2)) {\r\n moveX = 0;\r\n }\r\n if (moveY > (this.get_focus().get_height() - 2)) {\r\n moveY = 0;\r\n }\r\n }\r\n actionText = Language.getLocalizedText(537, 'Resize');\r\n switch (this._selectionAction) {\r\n case 0:\r\n this.get_focus().set_width(this.get_focus().get_width() - moveX);\r\n this.get_focus().set_height(this.get_focus().get_height() - (moveX / aspect));\r\n center.x += (moveX / 2);\r\n center.y += ((moveX / aspect) / 2);\r\n break;\r\n case 1:\r\n this.get_focus().set_height(this.get_focus().get_height() - moveY);\r\n center.y += (moveY / 2);\r\n break;\r\n case 2:\r\n this.get_focus().set_width(this.get_focus().get_width() + moveX);\r\n this.get_focus().set_height(this.get_focus().get_height() + (moveX / aspect));\r\n center.x += (moveX / 2);\r\n center.y -= ((moveX / aspect) / 2);\r\n break;\r\n case 3:\r\n this.get_focus().set_width(this.get_focus().get_width() + moveX);\r\n center.x += (moveX / 2);\r\n break;\r\n case 4:\r\n this.get_focus().set_width(this.get_focus().get_width() + moveX);\r\n this.get_focus().set_height(this.get_focus().get_height() + (moveX / aspect));\r\n center.x += (moveX / 2);\r\n center.y += ((moveX / aspect) / 2);\r\n break;\r\n case 5:\r\n this.get_focus().set_height(this.get_focus().get_height() + moveY);\r\n center.y += (moveY / 2);\r\n break;\r\n case 6:\r\n this.get_focus().set_width(this.get_focus().get_width() - moveX);\r\n this.get_focus().set_height(this.get_focus().get_height() - (moveX / aspect));\r\n center.x += (moveX / 2);\r\n center.y -= ((moveX / aspect) / 2);\r\n break;\r\n case 7:\r\n this.get_focus().set_width(this.get_focus().get_width() - moveX);\r\n center.x += (moveX / 2);\r\n break;\r\n case 8:\r\n actionText = Language.getLocalizedText(538, 'Rotate');\r\n this.get_focus().set_rotationAngle(this.get_focus().get_rotationAngle() + moveX);\r\n break;\r\n case 9:\r\n actionText = Language.getLocalizedText(540, 'Move');\r\n center.x += moveX;\r\n center.y += moveY;\r\n break;\r\n case 10:\r\n break;\r\n case 11:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (this._selectionAction !== 9 && this._selectionAction !== 8) {\r\n center = this.selection.pointToScreenSpace(center);\r\n }\r\n if (this.selection.get_multiSelect()) {\r\n var $enum2 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum2.moveNext()) {\r\n var overlay = $enum2.current;\r\n overlay.set_x(overlay.get_x() + moveX);\r\n overlay.set_y(overlay.get_y() + moveY);\r\n }\r\n }\r\n else {\r\n this.get_focus().set_x(center.x);\r\n this.get_focus().set_y(center.y);\r\n }\r\n if (this._needUndoFrame) {\r\n this._needUndoFrame = false;\r\n undoFrame.set_actionText(actionText);\r\n Undo.push(undoFrame);\r\n }\r\n }\r\n else {\r\n if (this.get_focus() != null) {\r\n if (this.get_focus().hitTest(location)) {\r\n Cursor.set_current(Cursors.get_sizeAll());\r\n return false;\r\n }\r\n var hit = this.selection.hitTest(location);\r\n if (hit === 11) {\r\n return false;\r\n }\r\n switch (hit) {\r\n case 0:\r\n Cursor.set_current(Cursors.get_sizeNWSE());\r\n break;\r\n case 1:\r\n Cursor.set_current(Cursors.get_sizeNS());\r\n break;\r\n case 2:\r\n Cursor.set_current(Cursors.get_sizeNESW());\r\n break;\r\n case 3:\r\n Cursor.set_current(Cursors.get_sizeWE());\r\n break;\r\n case 4:\r\n Cursor.set_current(Cursors.get_sizeNWSE());\r\n break;\r\n case 5:\r\n Cursor.set_current(Cursors.get_sizeNS());\r\n break;\r\n case 6:\r\n Cursor.set_current(Cursors.get_sizeNESW());\r\n break;\r\n case 7:\r\n Cursor.set_current(Cursors.get_sizeWE());\r\n break;\r\n case 8:\r\n Cursor.set_current(Cursors.get_sizeWE());\r\n break;\r\n case 10:\r\n break;\r\n case 11:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n _showNoSelectionContextMenu: function(position) {\r\n if (this._contextMenu != null) {\r\n this._contextMenu._dispose();\r\n }\r\n if (this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n this._contextMenu = new ContextMenuStrip();\r\n var pasteMenu = ToolStripMenuItem.create(Language.getLocalizedText(425, 'Paste'));\r\n pasteMenu.enabled = this.clipboardType === 'WorldWideTelescope.Overlay';\r\n pasteMenu.click = ss.bind('_pasteMenu_Click', this);\r\n this._contextMenu.items.push(pasteMenu);\r\n this._contextMenu._show(position);\r\n },\r\n _addOpenRectangle_Click: function(sender, e) {\r\n this.addShape('', 6);\r\n },\r\n _addStar_Click: function(sender, e) {\r\n this.addShape('', 2);\r\n },\r\n _insertShapeCircle_Click: function(sender, e) {\r\n this.addShape('', 0);\r\n },\r\n _insertShapeRectangle_Click: function(sender, e) {\r\n this.addShape('', 1);\r\n },\r\n _insertShapeLine_Click: function(sender, e) {\r\n this.addShape('', 5);\r\n },\r\n _insertDonut_Click: function(sender, e) {\r\n this.addShape('', 3);\r\n },\r\n _addArrow_Click: function(sender, e) {\r\n this.addShape('', 4);\r\n },\r\n showSelectionContextMenu: function(position) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n var multiSelect = this.selection.get_multiSelect();\r\n if (this._contextMenu != null) {\r\n this._contextMenu._dispose();\r\n }\r\n this._contextMenu = new ContextMenuStrip();\r\n var cutMenu = ToolStripMenuItem.create(Language.getLocalizedText(427, 'Cut'));\r\n var copyMenu = ToolStripMenuItem.create(Language.getLocalizedText(428, 'Copy'));\r\n var pasteMenu = ToolStripMenuItem.create(Language.getLocalizedText(425, 'Paste'));\r\n var deleteMenu = ToolStripMenuItem.create(Language.getLocalizedText(167, 'Delete'));\r\n var sep1 = new ToolStripSeparator();\r\n var sep2 = new ToolStripSeparator();\r\n var sep3 = new ToolStripSeparator();\r\n var bringToFront = ToolStripMenuItem.create(Language.getLocalizedText(452, 'Bring to Front'));\r\n var sendToBack = ToolStripMenuItem.create(Language.getLocalizedText(453, 'Send to Back'));\r\n var bringForward = ToolStripMenuItem.create(Language.getLocalizedText(454, 'Bring Forward'));\r\n var sendBackward = ToolStripMenuItem.create(Language.getLocalizedText(455, 'Send Backward'));\r\n var properties = ToolStripMenuItem.create(Language.getLocalizedText(20, 'Properties'));\r\n var editText = ToolStripMenuItem.create(Language.getLocalizedText(502, 'Edit'));\r\n var url = ToolStripMenuItem.create(Language.getLocalizedText(587, 'Hyperlink'));\r\n var linkString = this.get_focus().get_linkID();\r\n switch (this.get_focus().get_linkID()) {\r\n case '':\r\n case null:\r\n linkString = ' (' + Language.getLocalizedText(609, 'No Link') + ')';\r\n break;\r\n case 'Next':\r\n linkString = ' (' + Language.getLocalizedText(610, 'Next Slide') + ')';\r\n break;\r\n case 'Return':\r\n linkString = ' (' + Language.getLocalizedText(602, 'Return to Caller') + ')';\r\n break;\r\n default:\r\n var index = this.get_tour().getTourStopIndexByID(this.get_focus().get_linkID());\r\n if (index > -1) {\r\n if (ss.emptyString(this._tour.get_tourStops()[index].get_description())) {\r\n linkString = ss.format(' (' + Language.getLocalizedText(1340, 'Slide') + ' {0})', index);\r\n }\r\n else {\r\n linkString = ' (' + this._tour.get_tourStops()[index].get_description() + ')';\r\n }\r\n }\r\n break;\r\n }\r\n var animateMenu = ToolStripMenuItem.create(Language.getLocalizedText(588, 'Animate'));\r\n var linkID = ToolStripMenuItem.create(Language.getLocalizedText(589, 'Link to Slide') + linkString);\r\n var pickColor = ToolStripMenuItem.create(Language.getLocalizedText(458, 'Color/Opacity'));\r\n var flipbookProperties = ToolStripMenuItem.create(Language.getLocalizedText(630, 'Flipbook Properties'));\r\n var interpolateMenu = ToolStripMenuItem.create(Language.getLocalizedText(1029, 'Animation Tween Type'));\r\n var Linear = ToolStripMenuItem.create(Language.getLocalizedText(1030, 'Linear'));\r\n var Ease = ToolStripMenuItem.create(Language.getLocalizedText(1031, 'Ease In/Out'));\r\n var EaseIn = ToolStripMenuItem.create(Language.getLocalizedText(1032, 'Ease In'));\r\n var EaseOut = ToolStripMenuItem.create(Language.getLocalizedText(1033, 'Ease Out'));\r\n var Exponential = ToolStripMenuItem.create(Language.getLocalizedText(1034, 'Exponential'));\r\n var Default = ToolStripMenuItem.create(Language.getLocalizedText(1035, 'Slide Default'));\r\n var Align = ToolStripMenuItem.create(Language.getLocalizedText(790, 'Align'));\r\n var AlignTop = ToolStripMenuItem.create(Language.getLocalizedText(1333, 'Top'));\r\n var AlignBottom = ToolStripMenuItem.create(Language.getLocalizedText(1334, 'Bottom'));\r\n var AlignLeft = ToolStripMenuItem.create(Language.getLocalizedText(1335, 'Left'));\r\n var AlignRight = ToolStripMenuItem.create(Language.getLocalizedText(1336, 'Right'));\r\n var AlignHorizon = ToolStripMenuItem.create(Language.getLocalizedText(1337, 'Horizontal'));\r\n var AlignVertical = ToolStripMenuItem.create(Language.getLocalizedText(1338, 'Vertical'));\r\n var AlignCenter = ToolStripMenuItem.create(Language.getLocalizedText(1339, 'Centered'));\r\n Align.dropDownItems.push(AlignTop);\r\n Align.dropDownItems.push(AlignBottom);\r\n Align.dropDownItems.push(AlignLeft);\r\n Align.dropDownItems.push(AlignRight);\r\n Align.dropDownItems.push(AlignHorizon);\r\n Align.dropDownItems.push(AlignVertical);\r\n Align.dropDownItems.push(AlignCenter);\r\n Linear.tag = 0;\r\n Ease.tag = 3;\r\n EaseIn.tag = 1;\r\n EaseOut.tag = 2;\r\n Exponential.tag = 4;\r\n Default.tag = 5;\r\n Linear.click = ss.bind('_interpolation_Click', this);\r\n Ease.click = ss.bind('_interpolation_Click', this);\r\n EaseIn.click = ss.bind('_interpolation_Click', this);\r\n EaseOut.click = ss.bind('_interpolation_Click', this);\r\n Exponential.click = ss.bind('_interpolation_Click', this);\r\n Default.click = ss.bind('_interpolation_Click', this);\r\n switch (this.get_focus().get_interpolationType()) {\r\n case 0:\r\n Linear.checked = true;\r\n break;\r\n case 1:\r\n EaseIn.checked = true;\r\n break;\r\n case 2:\r\n EaseOut.checked = true;\r\n break;\r\n case 3:\r\n Ease.checked = true;\r\n break;\r\n case 4:\r\n Exponential.checked = true;\r\n break;\r\n case 5:\r\n Default.checked = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n interpolateMenu.dropDownItems.push(Default);\r\n interpolateMenu.dropDownItems.push(Linear);\r\n interpolateMenu.dropDownItems.push(Ease);\r\n interpolateMenu.dropDownItems.push(EaseIn);\r\n interpolateMenu.dropDownItems.push(EaseOut);\r\n interpolateMenu.dropDownItems.push(Exponential);\r\n cutMenu.click = ss.bind('_cutMenu_Click', this);\r\n copyMenu.click = ss.bind('_copyMenu_Click', this);\r\n deleteMenu.click = ss.bind('_deleteMenu_Click', this);\r\n bringToFront.click = ss.bind('_bringToFront_Click', this);\r\n sendToBack.click = ss.bind('_sendToBack_Click', this);\r\n sendBackward.click = ss.bind('_sendBackward_Click', this);\r\n bringForward.click = ss.bind('_bringForward_Click', this);\r\n properties.click = ss.bind('_properties_Click', this);\r\n editText.click = ss.bind('_editText_Click', this);\r\n url.click = ss.bind('_url_Click', this);\r\n pickColor.click = ss.bind('_pickColor_Click', this);\r\n pasteMenu.click = ss.bind('_pasteMenu_Click', this);\r\n animateMenu.click = ss.bind('_animateMenu_Click', this);\r\n flipbookProperties.click = ss.bind('_flipbookProperties_Click', this);\r\n linkID.click = ss.bind('_linkID_Click', this);\r\n AlignTop.click = ss.bind('_alignTop_Click', this);\r\n AlignBottom.click = ss.bind('_alignBottom_Click', this);\r\n AlignLeft.click = ss.bind('_alignLeft_Click', this);\r\n AlignRight.click = ss.bind('_alignRight_Click', this);\r\n AlignHorizon.click = ss.bind('_alignHorizon_Click', this);\r\n AlignVertical.click = ss.bind('_alignVertical_Click', this);\r\n AlignCenter.click = ss.bind('_alignCenter_Click', this);\r\n this._contextMenu.items.push(cutMenu);\r\n this._contextMenu.items.push(copyMenu);\r\n this._contextMenu.items.push(pasteMenu);\r\n this._contextMenu.items.push(deleteMenu);\r\n this._contextMenu.items.push(sep1);\r\n this._contextMenu.items.push(bringToFront);\r\n this._contextMenu.items.push(sendToBack);\r\n this._contextMenu.items.push(bringForward);\r\n this._contextMenu.items.push(sendBackward);\r\n this._contextMenu.items.push(Align);\r\n this._contextMenu.items.push(sep2);\r\n pasteMenu.enabled = false;\r\n this._contextMenu.items.push(pickColor);\r\n this._contextMenu.items.push(url);\r\n this._contextMenu.items.push(linkID);\r\n this._contextMenu.items.push(animateMenu);\r\n this._contextMenu.items.push(sep3);\r\n this._contextMenu.items.push(flipbookProperties);\r\n animateMenu.checked = this.get_focus().get_animate();\r\n this._contextMenu.items.push(interpolateMenu);\r\n interpolateMenu.enabled = this.get_focus().get_animate();\r\n flipbookProperties.visible = (ss.canCast(this.get_focus(), FlipbookOverlay));\r\n sep3.visible = (ss.canCast(this.get_focus(), FlipbookOverlay));\r\n if (multiSelect) {\r\n url.visible = false;\r\n linkID.visible = false;\r\n properties.visible = false;\r\n flipbookProperties.visible = false;\r\n bringForward.visible = false;\r\n sendBackward.visible = false;\r\n }\r\n else {\r\n Align.visible = false;\r\n }\r\n this._contextMenu.items.push(properties);\r\n if (this.get_focus() != null) {\r\n if (ss.typeOf(this.get_focus()) === TextOverlay) {\r\n this._contextMenu.items.push(editText);\r\n }\r\n }\r\n this._contextMenu._show(position);\r\n },\r\n _editText_Click: function(sender, e) {\r\n if (this.get_focus() != null) {\r\n if (ss.typeOf(this.get_focus()) === TextOverlay) {\r\n this._editText();\r\n }\r\n }\r\n },\r\n _alignVertical_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1036, 'Vertical Align'), this._tour));\r\n var xCenter = this.get_focus().get_x();\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_x(xCenter);\r\n }\r\n },\r\n _alignHorizon_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1037, 'Horizontal Align'), this._tour));\r\n var yCenter = this.get_focus().get_y();\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_y(yCenter);\r\n }\r\n },\r\n _alignCenter_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1038, 'Align Centers'), this._tour));\r\n var yCenter = this.get_focus().get_y();\r\n var xCenter = this.get_focus().get_x();\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_y(yCenter);\r\n overlay.set_x(xCenter);\r\n }\r\n },\r\n _alignRight_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1040, 'Align Right'), this._tour));\r\n var left = this.get_focus().get_x() + this.get_focus().get_width() / 2;\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_x(left - overlay.get_width() / 2);\r\n }\r\n },\r\n _alignLeft_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1041, 'Align Left'), this._tour));\r\n var right = this.get_focus().get_x() - this.get_focus().get_width() / 2;\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_x(right + overlay.get_width() / 2);\r\n }\r\n },\r\n _alignBottom_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1042, 'Align Bottoms'), this._tour));\r\n var top = this.get_focus().get_y() + this.get_focus().get_height() / 2;\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_y(top - overlay.get_height() / 2);\r\n }\r\n },\r\n _alignTop_Click: function(sender, e) {\r\n if (this.get_focus() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(1039, 'Align Tops'), this._tour));\r\n var top = this.get_focus().get_y() - this.get_focus().get_height() / 2;\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_y(top + overlay.get_height() / 2);\r\n }\r\n },\r\n _interpolation_Click: function(sender, e) {\r\n var item = sender;\r\n if (this.get_focus() != null) {\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_interpolationType(item.tag);\r\n }\r\n }\r\n },\r\n _linkSlideChosen: function() {\r\n if (this.selectDialog.get_OK()) {\r\n this.get_focus().set_linkID(this.selectDialog.get_id());\r\n }\r\n },\r\n _linkID_Click: function(sender, e) {\r\n this.selectDialog = new SelectLink(this.get_focus().get_linkID());\r\n this.nextSlideCallback(this.selectDialog, ss.bind('_linkSlideChosen', this));\r\n },\r\n _flipbookProperties_Click: function(sender, e) {\r\n },\r\n _animateMenu_Click: function(sender, e) {\r\n if (this.get_focus() != null) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(588, 'Animate'), this._tour));\r\n var animate = !this.get_focus().get_animate();\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_animate(animate);\r\n }\r\n }\r\n },\r\n _url_Click: function(sender, e) {\r\n var $this = this;\r\n\r\n if (this.get_focus() != null) {\r\n var input = new SimpleInput(Language.getLocalizedText(541, 'Edit Hyperlink'), Language.getLocalizedText(542, 'Url'), this.get_focus().get_url(), 2048);\r\n input.show(Cursor.get_position(), function() {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(541, 'Edit Hyperlink'), $this._tour));\r\n $this.get_focus().set_url(input.text);\r\n });\r\n }\r\n },\r\n _pickColor_Click: function(sender, e) {\r\n var $this = this;\r\n\r\n var picker = new ColorPicker();\r\n picker.color = this.get_focus().get_color();\r\n picker.callBack = function() {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(543, 'Edit Color'), $this._tour));\r\n var $enum1 = ss.enumerate($this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.set_color(picker.color);\r\n }\r\n };\r\n picker.show(e);\r\n },\r\n _volume_Click: function(sender, e) {\r\n var vol = new PopupVolume();\r\n vol.volume = (this.get_focus()).get_volume();\r\n vol.showDialog();\r\n (this.get_focus()).set_volume(vol.volume);\r\n },\r\n _deleteMenu_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(167, 'Delete'), this._tour));\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n this._tour.get_currentTourStop().removeOverlay(overlay);\r\n }\r\n this.set_focus(null);\r\n this.clearSelection();\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _properties_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(549, 'Properties Edit'), this._tour));\r\n var props = new OverlayProperties();\r\n props.overlay = this.get_focus();\r\n props.showDialog();\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _bringForward_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(454, 'Bring Forward'), this._tour));\r\n var $enum1 = ss.enumerate(this._getSortedSelection(false));\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n this._tour.get_currentTourStop().bringForward(overlay);\r\n }\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _sendBackward_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(455, 'Send Backward'), this._tour));\r\n var $enum1 = ss.enumerate(this._getSortedSelection(true));\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n this._tour.get_currentTourStop().sendBackward(overlay);\r\n }\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _sendToBack_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(453, 'Send to Back'), this._tour));\r\n var $enum1 = ss.enumerate(this._getSortedSelection(true));\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n this._tour.get_currentTourStop().sendToBack(overlay);\r\n }\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _bringToFront_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(452, 'Bring to Front'), this._tour));\r\n var $enum1 = ss.enumerate(this._getSortedSelection(false));\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n this._tour.get_currentTourStop().bringToFront(overlay);\r\n }\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _getSortedSelection: function(reverse) {\r\n var sorted = [];\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var ov = $enum1.current;\r\n sorted.push(ov);\r\n }\r\n if (reverse) {\r\n sorted.sort(function(p1, p2) {\r\n return -Util.compare(p1.get_zOrder(), p2.get_zOrder());\r\n });\r\n }\r\n else {\r\n sorted.sort(function(p1, p2) {\r\n return Util.compare(p1.get_zOrder(), p2.get_zOrder());\r\n });\r\n }\r\n return sorted;\r\n },\r\n _copyMenu_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n var writer = new XmlTextWriter();\r\n writer._writeProcessingInstruction('xml', \"version='1.0' encoding='UTF-8'\");\r\n writer._writeStartElement('Overlays');\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.saveToXml(writer, true);\r\n }\r\n writer._writeEndElement();\r\n this.clipboardData = writer.body;\r\n this.clipboardType = 'WorldWideTelescope.Overlay';\r\n },\r\n _cutMenu_Click: function(sender, e) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(427, 'Cut'), this._tour));\r\n this._copyMenu_Click(sender, e);\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n this._tour.get_currentTourStop().removeOverlay(overlay);\r\n }\r\n this.set_focus(null);\r\n this.clearSelection();\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _pasteMenu_Click: function(sender, e) {\r\n Undo.push(new UndoTourSlidelistChange(Language.getLocalizedText(544, 'Paste Object'), this._tour));\r\n if (this.clipboardType === 'WorldWideTelescope.Overlay') {\r\n var xParser = new DOMParser();\r\n var doc = xParser.parseFromString(this.clipboardData, 'text/xml');\r\n this.clearSelection();\r\n var parent = Util.selectSingleNode(doc, 'Overlays');\r\n var $enum1 = ss.enumerate(parent.childNodes);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (child.nodeName === 'Overlay') {\r\n var copy = Overlay._fromXml(this._tour.get_currentTourStop(), child);\r\n var found = false;\r\n var maxX = 0;\r\n var maxY = 0;\r\n var $enum2 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum2.moveNext()) {\r\n var item = $enum2.current;\r\n if (item.id === copy.id && ss.typeOf(item) === ss.typeOf(copy)) {\r\n found = true;\r\n if (maxY < item.get_y() || maxX < item.get_x()) {\r\n maxX = item.get_x();\r\n maxY = item.get_y();\r\n }\r\n }\r\n }\r\n if (found) {\r\n copy.set_x(maxX + 20);\r\n copy.set_y(maxY + 20);\r\n }\r\n this._tour.get_currentTourStop().addOverlay(copy);\r\n this.set_focus(copy);\r\n this.selection.addSelection(this.get_focus());\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n }\r\n }\r\n }\r\n },\r\n mouseClick: function(sender, e) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.mouseClick(sender, e)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n click: function(sender, e) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.click(sender, e)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n mouseDoubleClick: function(sender, e) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.mouseDoubleClick(sender, e)) {\r\n return true;\r\n }\r\n }\r\n if (this.get_focus() != null) {\r\n if (ss.typeOf(this.get_focus()) === TextOverlay) {\r\n this._editText();\r\n return true;\r\n }\r\n }\r\n return true;\r\n },\r\n _doneEditing: function() {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(545, 'Text Edit'), this._tour));\r\n (this.get_focus()).set_width(0);\r\n (this.get_focus()).set_height(0);\r\n this.get_focus().set_color((this.get_focus()).textObject.foregroundColor);\r\n this.get_focus().cleanUp();\r\n },\r\n _editText: function() {\r\n var textObj = (this.get_focus()).textObject;\r\n this.editTextCallback(textObj, ss.bind('_doneEditing', this));\r\n },\r\n keyDown: function(sender, e) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.keyDown(sender, e)) {\r\n return true;\r\n }\r\n }\r\n var increment = 1;\r\n if (e.ctrlKey) {\r\n increment = 10;\r\n }\r\n switch (e.keyCode) {\r\n case 65:\r\n if (e.ctrlKey) {\r\n this.clearSelection();\r\n this.selection.addSelectionRange(this._tour.get_currentTourStop().get_overlays());\r\n OverlayList._updateOverlayListSelection(this.selection);\r\n if (this._tour.get_currentTourStop().get_overlays().length > 0) {\r\n this.set_focus(this._tour.get_currentTourStop().get_overlays()[0]);\r\n }\r\n }\r\n break;\r\n case 90:\r\n if (e.ctrlKey) {\r\n if (Undo.peekAction()) {\r\n TourEdit._undoStep();\r\n }\r\n else {\r\n UiTools._beep();\r\n }\r\n }\r\n break;\r\n case 89:\r\n if (e.ctrlKey) {\r\n if (Undo.peekRedoAction()) {\r\n TourEdit._redoStep();\r\n }\r\n else {\r\n UiTools._beep();\r\n }\r\n }\r\n break;\r\n case 67:\r\n if (e.ctrlKey) {\r\n this._copyMenu_Click(this, new ss.EventArgs());\r\n }\r\n break;\r\n case 86:\r\n if (e.ctrlKey) {\r\n this._pasteMenu_Click(this, new ss.EventArgs());\r\n }\r\n break;\r\n case 88:\r\n if (e.ctrlKey) {\r\n this._cutMenu_Click(this, new ss.EventArgs());\r\n }\r\n break;\r\n case 46:\r\n this._deleteMenu_Click(null, null);\r\n return true;\r\n case 9:\r\n if (e.shiftKey) {\r\n this._selectLast();\r\n }\r\n else {\r\n this._selectNext();\r\n }\r\n return true;\r\n case 37:\r\n if (this.get_focus() != null) {\r\n var $enum1 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (e.shiftKey) {\r\n if (e.altKey) {\r\n if (overlay.get_width() > increment) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(537, 'Resize'), this._tour));\r\n overlay.set_width(overlay.get_width() - increment);\r\n }\r\n }\r\n else {\r\n var aspect = overlay.get_width() / overlay.get_height();\r\n if (overlay.get_width() > increment && overlay.get_height() > (increment * aspect)) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(537, 'Resize'), this._tour));\r\n overlay.set_width(overlay.get_width() - increment);\r\n overlay.set_height(overlay.get_height() - increment * aspect);\r\n }\r\n }\r\n }\r\n else if (e.altKey) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(538, 'Rotate'), this._tour));\r\n overlay.set_rotationAngle(overlay.get_rotationAngle() - increment);\r\n }\r\n else {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(540, 'Move'), this._tour));\r\n overlay.set_x(overlay.get_x() - increment);\r\n }\r\n }\r\n return true;\r\n }\r\n break;\r\n case 39:\r\n if (this.get_focus() != null) {\r\n var $enum2 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum2.moveNext()) {\r\n var overlay = $enum2.current;\r\n if (e.shiftKey) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(537, 'Resize'), this._tour));\r\n if (e.altKey) {\r\n overlay.set_width(overlay.get_width() + increment);\r\n }\r\n else {\r\n var aspect = overlay.get_width() / overlay.get_height();\r\n overlay.set_width(overlay.get_width() + increment);\r\n overlay.set_height(overlay.get_height() + increment * aspect);\r\n }\r\n }\r\n else if (e.altKey) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(538, 'Rotate'), this._tour));\r\n overlay.set_rotationAngle(overlay.get_rotationAngle() + increment);\r\n }\r\n else {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(540, 'Move'), this._tour));\r\n overlay.set_x(overlay.get_x() + increment);\r\n }\r\n }\r\n return true;\r\n }\r\n break;\r\n case 38:\r\n if (this.get_focus() != null) {\r\n var $enum3 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum3.moveNext()) {\r\n var overlay = $enum3.current;\r\n if (e.shiftKey) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(537, 'Resize'), this._tour));\r\n if (e.altKey) {\r\n overlay.set_height(overlay.get_height() + increment);\r\n }\r\n else {\r\n var aspect = overlay.get_width() / overlay.get_height();\r\n overlay.set_width(overlay.get_width() + increment);\r\n overlay.set_height(overlay.get_height() + increment * aspect);\r\n }\r\n }\r\n else if (!e.altKey) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(540, 'Move'), this._tour));\r\n overlay.set_y(overlay.get_y() - increment);\r\n }\r\n }\r\n return true;\r\n }\r\n break;\r\n case 40:\r\n if (this.get_focus() != null) {\r\n var $enum4 = ss.enumerate(this.selection.selectionSet);\r\n while ($enum4.moveNext()) {\r\n var overlay = $enum4.current;\r\n if (e.shiftKey) {\r\n if (e.altKey) {\r\n if (overlay.get_height() > increment) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(537, 'Resize'), this._tour));\r\n overlay.set_height(overlay.get_height() - increment);\r\n }\r\n }\r\n else {\r\n var aspect = overlay.get_width() / overlay.get_height();\r\n if (overlay.get_width() > increment && overlay.get_height() > (increment * aspect)) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(537, 'Resize'), this._tour));\r\n overlay.set_width(overlay.get_width() - increment);\r\n overlay.set_height(overlay.get_height() - increment * aspect);\r\n }\r\n }\r\n }\r\n else if (!e.altKey) {\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(540, 'Move'), this._tour));\r\n overlay.set_y(overlay.get_y() + increment);\r\n }\r\n }\r\n return true;\r\n }\r\n break;\r\n case 34:\r\n if (e.altKey) {\r\n if (this._tour.get_currentTourstopIndex() < (this._tour.get_tourStops().length - 1)) {\r\n this._tour.set_currentTourstopIndex(this._tour.get_currentTourstopIndex() + 1) - 1;\r\n TourEdit._selectCurrent();\r\n TourEdit._ensureSelectedVisible();\r\n }\r\n return true;\r\n }\r\n break;\r\n case 33:\r\n if (e.altKey) {\r\n if (this._tour.get_currentTourstopIndex() > 0) {\r\n this._tour.set_currentTourstopIndex(this._tour.get_currentTourstopIndex() - 1) + 1;\r\n TourEdit._selectCurrent();\r\n TourEdit._ensureSelectedVisible();\r\n }\r\n return true;\r\n }\r\n break;\r\n }\r\n return false;\r\n },\r\n _selectNext: function() {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n this.set_focus(this._tour.get_currentTourStop().getNextOverlay(this.get_focus()));\r\n this.selection.setSelection(this.get_focus());\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n _selectLast: function() {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n this.set_focus(this._tour.get_currentTourStop().getPerviousOverlay(this.get_focus()));\r\n this.selection.setSelection(this.get_focus());\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n },\r\n keyUp: function(sender, e) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.keyUp(sender, e)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n addPicture: function(file) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return false;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(546, 'Insert Picture'), this._tour));\r\n var bmp = BitmapOverlay.create(this._tour.get_currentTourStop(), file);\r\n bmp.set_x(960);\r\n bmp.set_y(600);\r\n this._tour.get_currentTourStop().addOverlay(bmp);\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n return true;\r\n },\r\n addFlipbook: function(filename) {\r\n return false;\r\n },\r\n addAudio: function(file, music) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return false;\r\n }\r\n var audio = AudioOverlay.create(this._tour.get_currentTourStop(), file);\r\n audio.set_x(900);\r\n audio.set_y(600);\r\n if (music) {\r\n this._tour.get_currentTourStop().set_musicTrack(audio);\r\n }\r\n else {\r\n this._tour.get_currentTourStop().set_voiceTrack(audio);\r\n }\r\n return true;\r\n },\r\n addVideo: function(filename) {\r\n return true;\r\n },\r\n addText: function(p, textObject) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return false;\r\n }\r\n var text = TextOverlay.create(textObject);\r\n text.set_color(textObject.foregroundColor);\r\n text.set_x(960);\r\n text.set_y(600);\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(547, 'Insert Text'), this._tour));\r\n this._tour.get_currentTourStop().addOverlay(text);\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n return true;\r\n },\r\n addOverlay: function(ol) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return null;\r\n }\r\n if (ss.typeOf(ol) === ShapeOverlay) {\r\n var srcShapeOverlay = ol;\r\n if (srcShapeOverlay != null) {\r\n var shape = ShapeOverlay._create(this._tour.get_currentTourStop(), srcShapeOverlay.get_shapeType());\r\n shape.set_width(srcShapeOverlay.get_width());\r\n shape.set_height(srcShapeOverlay.get_height());\r\n shape.set_x(this._contextPoint.x);\r\n shape.set_y(this._contextPoint.y);\r\n shape.set_color(srcShapeOverlay.get_color());\r\n shape.set_rotationAngle(srcShapeOverlay.get_rotationAngle());\r\n this._tour.get_currentTourStop().addOverlay(shape);\r\n return shape;\r\n }\r\n }\r\n else if (ss.typeOf(ol) === TextOverlay) {\r\n var srcTxtOverlay = ol;\r\n if (srcTxtOverlay != null) {\r\n var text = TextOverlay.create(srcTxtOverlay.textObject);\r\n text.set_x(this._contextPoint.x);\r\n text.set_y(this._contextPoint.y);\r\n text.set_color(srcTxtOverlay.get_color());\r\n this._tour.get_currentTourStop().addOverlay(text);\r\n return text;\r\n }\r\n }\r\n else if (ss.typeOf(ol) === BitmapOverlay) {\r\n var srcBmpOverlay = ol;\r\n if (srcBmpOverlay != null) {\r\n var bitmap = srcBmpOverlay.copy(this._tour.get_currentTourStop());\r\n bitmap.set_x(this._contextPoint.x);\r\n bitmap.set_y(this._contextPoint.y);\r\n this._tour.get_currentTourStop().addOverlay(bitmap);\r\n return bitmap;\r\n }\r\n }\r\n else if (ss.typeOf(ol) === FlipbookOverlay) {\r\n var srcFlipbookOverlay = ol;\r\n if (srcFlipbookOverlay != null) {\r\n var bitmap = srcFlipbookOverlay.copy(this._tour.get_currentTourStop());\r\n bitmap.set_x(this._contextPoint.x);\r\n bitmap.set_y(this._contextPoint.y);\r\n this._tour.get_currentTourStop().addOverlay(bitmap);\r\n return bitmap;\r\n }\r\n }\r\n return null;\r\n },\r\n addShape: function(p, shapeType) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return false;\r\n }\r\n Undo.push(new UndoTourStopChange(Language.getLocalizedText(548, 'Insert Shape'), this._tour));\r\n var shape = ShapeOverlay._create(this._tour.get_currentTourStop(), shapeType);\r\n shape.set_width(200);\r\n shape.set_height(200);\r\n if (shapeType === 4) {\r\n shape.set_height(shape.get_height() / 2);\r\n }\r\n if (shapeType === 5) {\r\n shape.set_height(12);\r\n }\r\n shape.set_x(960);\r\n shape.set_y(600);\r\n this._tour.get_currentTourStop().addOverlay(shape);\r\n this.set_focus(shape);\r\n this.selection.setSelection(this.get_focus());\r\n OverlayList._updateOverlayList(this._tour.get_currentTourStop(), this.selection);\r\n return true;\r\n },\r\n getCurrentColor: function() {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return this._defaultColor;\r\n }\r\n if (this.get_focus() != null) {\r\n return this.get_focus().get_color();\r\n }\r\n else {\r\n return this._defaultColor;\r\n }\r\n },\r\n setCurrentColor: function(color) {\r\n this._defaultColor = color;\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return;\r\n }\r\n if (this.get_focus() != null) {\r\n this.get_focus().set_color(color);\r\n }\r\n },\r\n dispose: function() {\r\n if (this._contextMenu != null) {\r\n this._contextMenu._dispose();\r\n this._contextMenu = null;\r\n }\r\n },\r\n hover: function(pnt) {\r\n if (TourEditor.currentEditor != null) {\r\n if (TourEditor.currentEditor.hover(pnt)) {\r\n return true;\r\n }\r\n }\r\n return true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.OverlayList\r\n\r\n function OverlayList() {\r\n }\r\n OverlayList._updateOverlayList = function(currentTourStop, selection) {\r\n };\r\n OverlayList._updateOverlayListSelection = function(selection) {\r\n };\r\n var OverlayList$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TourEdit\r\n\r\n function TourEdit() {\r\n }\r\n TourEdit._ensureSelectedVisible = function() {\r\n };\r\n TourEdit._selectCurrent = function() {\r\n };\r\n TourEdit._undoStep = function() {\r\n if (Undo.peekAction()) {\r\n Undo.stepBack();\r\n }\r\n };\r\n TourEdit._redoStep = function() {\r\n if (Undo.peekRedoAction()) {\r\n Undo.stepForward();\r\n }\r\n };\r\n var TourEdit$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.SoundEditor\r\n\r\n function SoundEditor() {\r\n this.target = null;\r\n }\r\n var SoundEditor$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TourStopList\r\n\r\n function TourStopList() {\r\n this.tour = null;\r\n this.showAddButton = false;\r\n this.selectedItems = null;\r\n this.selectedItem = -1;\r\n this.refreshCallback = null;\r\n this.multipleSelection = false;\r\n this.hitType = false;\r\n }\r\n var TourStopList$ = {\r\n selectAll: function() {\r\n this.selectedItems = {};\r\n for (var i = 0; i < this.tour.get_tourStops().length; i++) {\r\n this.selectedItems[i] = this.tour.get_tourStops()[i];\r\n }\r\n },\r\n refresh: function() {\r\n if (this.refreshCallback != null) {\r\n this.refreshCallback();\r\n }\r\n },\r\n findItem: function(ts) {\r\n return -1;\r\n },\r\n ensureSelectedVisible: function() {\r\n },\r\n ensureAddVisible: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TimeLine\r\n\r\n function TimeLine() {\r\n }\r\n TimeLine.refreshUi = function() {\r\n };\r\n var TimeLine$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TourPlayer\r\n\r\n function TourPlayer() {\r\n this._overlayBlend = BlendState.create(false, 1000);\r\n this._tour = null;\r\n this._onTarget = false;\r\n this._currentMasterSlide = null;\r\n this._callStack = new ss.Stack();\r\n this._leaveSettingsWhenStopped = false;\r\n }\r\n TourPlayer.get_playing = function() {\r\n return TourPlayer._playing;\r\n };\r\n TourPlayer.set_playing = function(value) {\r\n TourPlayer._playing = value;\r\n return value;\r\n };\r\n TourPlayer.add_tourEnded = function(value) {\r\n TourPlayer.__tourEnded = ss.bindAdd(TourPlayer.__tourEnded, value);\r\n };\r\n TourPlayer.remove_tourEnded = function(value) {\r\n TourPlayer.__tourEnded = ss.bindSub(TourPlayer.__tourEnded, value);\r\n };\r\n var TourPlayer$ = {\r\n render: function(renderContext) {\r\n if (this._tour == null || this._tour.get_currentTourStop() == null || !TourPlayer._playing) {\r\n return;\r\n }\r\n renderContext.save();\r\n this.updateSlideStates();\r\n if (!this._onTarget) {\r\n this._slideStartTime = ss.now();\r\n if (renderContext.onTarget(this.get_tour().get_currentTourStop().get_target())) {\r\n this._onTarget = true;\r\n this._overlayBlend.set_state(!this.get_tour().get_currentTourStop().get_fadeInOverlays());\r\n this._overlayBlend.set_targetState(true);\r\n if (this._tour.get_currentTourStop().get_musicTrack() != null) {\r\n this._tour.get_currentTourStop().get_musicTrack().seek(0);\r\n this._tour.get_currentTourStop().get_musicTrack().play();\r\n }\r\n if (this._tour.get_currentTourStop().get_voiceTrack() != null) {\r\n this._tour.get_currentTourStop().get_voiceTrack().seek(0);\r\n this._tour.get_currentTourStop().get_voiceTrack().play();\r\n }\r\n var caption = '';\r\n var $enum1 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (overlay.get_name().toLowerCase() === 'caption') {\r\n var text = ss.safeCast(overlay, TextOverlay);\r\n if (text != null) {\r\n caption = text.textObject.text;\r\n }\r\n }\r\n overlay.play();\r\n }\r\n LayerManager.setVisibleLayerList(this._tour.get_currentTourStop().layers);\r\n if (this._tour.get_currentTourStop().get_endTarget() != null && this._tour.get_currentTourStop().get_endTarget().get_zoomLevel() !== -1) {\r\n if (this._tour.get_currentTourStop().get_target().get_type() === 4) {\r\n }\r\n renderContext.viewMover = new ViewMoverKenBurnsStyle(this._tour.get_currentTourStop().get_target().get_camParams(), this._tour.get_currentTourStop().get_endTarget().get_camParams(), this._tour.get_currentTourStop().get_duration() / 1000, this._tour.get_currentTourStop().get_startTime(), this._tour.get_currentTourStop().get_endTime(), this._tour.get_currentTourStop().get_interpolationType());\r\n }\r\n Settings.tourSettings = this._tour.get_currentTourStop();\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_startTime());\r\n SpaceTimeController.set_syncToClock(false);\r\n WWTControl.scriptInterface._fireSlideChanged(caption);\r\n }\r\n }\r\n if (renderContext.gl != null) {\r\n renderContext.setupMatricesOverlays();\r\n if (this._currentMasterSlide != null) {\r\n var $enum2 = ss.enumerate(this._currentMasterSlide.get_overlays());\r\n while ($enum2.moveNext()) {\r\n var overlay = $enum2.current;\r\n overlay.set_tweenFactor(1);\r\n overlay.draw3D(renderContext, false);\r\n }\r\n }\r\n if (this._onTarget) {\r\n var $enum3 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum3.moveNext()) {\r\n var overlay = $enum3.current;\r\n if (overlay.get_name().toLowerCase() !== 'caption' || WWTControl.scriptInterface.get_showCaptions()) {\r\n overlay.set_tweenFactor(CameraParameters.easeCurve(this._tour.get_currentTourStop().get_tweenPosition(), (overlay.get_interpolationType() === 5) ? this._tour.get_currentTourStop().get_interpolationType() : overlay.get_interpolationType()));\r\n overlay.draw3D(renderContext, false);\r\n }\r\n }\r\n }\r\n renderContext.restore();\r\n }\r\n else {\r\n renderContext.device.scale(renderContext.height / 1116, renderContext.height / 1116);\r\n var aspectOrig = 1920 / 1116;\r\n var aspectNow = renderContext.width / renderContext.height;\r\n renderContext.device.translate(-((1920 - (aspectNow * 1116)) / 2), 0);\r\n if (this._currentMasterSlide != null) {\r\n var $enum4 = ss.enumerate(this._currentMasterSlide.get_overlays());\r\n while ($enum4.moveNext()) {\r\n var overlay = $enum4.current;\r\n overlay.set_tweenFactor(1);\r\n overlay.draw3D(renderContext, false);\r\n }\r\n }\r\n if (this._onTarget) {\r\n var $enum5 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum5.moveNext()) {\r\n var overlay = $enum5.current;\r\n if (overlay.get_name().toLowerCase() !== 'caption' || WWTControl.scriptInterface.get_showCaptions()) {\r\n overlay.set_tweenFactor(CameraParameters.easeCurve(this._tour.get_currentTourStop().get_tweenPosition(), (overlay.get_interpolationType() === 5) ? this._tour.get_currentTourStop().get_interpolationType() : overlay.get_interpolationType()));\r\n overlay.draw3D(renderContext, false);\r\n }\r\n }\r\n }\r\n else {\r\n var i = 0;\r\n }\r\n renderContext.restore();\r\n }\r\n },\r\n get_tour: function() {\r\n return this._tour;\r\n },\r\n set_tour: function(value) {\r\n this._tour = value;\r\n return value;\r\n },\r\n nextSlide: function() {\r\n if (this._tour.get_currentTourStop() != null) {\r\n if (!this._tour.get_currentTourStop().get_masterSlide()) {\r\n if (this._tour.get_currentTourStop().get_musicTrack() != null) {\r\n this._tour.get_currentTourStop().get_musicTrack().stop();\r\n }\r\n if (this._tour.get_currentTourStop().get_voiceTrack() != null) {\r\n this._tour.get_currentTourStop().get_voiceTrack().stop();\r\n }\r\n var $enum1 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.stop();\r\n }\r\n }\r\n else {\r\n this._currentMasterSlide = this._tour.get_currentTourStop();\r\n }\r\n }\r\n if (this._tour.get_currentTourstopIndex() < (this._tour.get_tourStops().length - 1) || this._tour.get_currentTourStop().get_isLinked()) {\r\n if (this._tour.get_currentTourStop().get_endTarget() != null) {\r\n WWTControl.singleton.gotoTargetFull(false, true, this._tour.get_currentTourStop().get_endTarget().get_camParams(), this._tour.get_currentTourStop().get_target().get_studyImageset(), this._tour.get_currentTourStop().get_target().get_backgroundImageset());\r\n WWTControl.singleton.set__mover(null);\r\n }\r\n this._onTarget = false;\r\n if (this._tour.get_currentTourStop().get_isLinked()) {\r\n try {\r\n switch (this._tour.get_currentTourStop().get_nextSlide()) {\r\n case 'Return':\r\n if (this._callStack.count > 0) {\r\n this.playFromTourstop(this._tour.get_tourStops()[this._callStack.pop()]);\r\n }\r\n else {\r\n this._tour.set_currentTourstopIndex(this._tour.get_tourStops().length - 1);\r\n }\r\n break;\r\n default:\r\n this.playFromTourstop(this._tour.get_tourStops()[this._tour.getTourStopIndexByID(this._tour.get_currentTourStop().get_nextSlide())]);\r\n break;\r\n }\r\n }\r\n catch ($e2) {\r\n if (this._tour.get_currentTourstopIndex() < (this._tour.get_tourStops().length - 1)) {\r\n this._tour.set_currentTourstopIndex(this._tour.get_currentTourstopIndex() + 1) - 1;\r\n }\r\n }\r\n }\r\n else {\r\n this._tour.set_currentTourstopIndex(this._tour.get_currentTourstopIndex() + 1) - 1;\r\n }\r\n if (this._currentMasterSlide != null && this._tour.get_currentTourStop().get_masterSlide()) {\r\n this._stopCurrentMaster();\r\n }\r\n var instant = false;\r\n switch (this._tour.get_currentTourStop().get__transition()) {\r\n case 0:\r\n break;\r\n case 1:\r\n instant = true;\r\n break;\r\n case 2:\r\n instant = true;\r\n break;\r\n case 3:\r\n instant = true;\r\n break;\r\n case 5:\r\n instant = true;\r\n break;\r\n case 4:\r\n instant = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n WWTControl.singleton.gotoTarget(this._tour.get_currentTourStop().get_target(), false, instant, false);\r\n this._slideStartTime = ss.now();\r\n Settings.tourSettings = this._tour.get_currentTourStop();\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_startTime());\r\n SpaceTimeController.set_syncToClock(false);\r\n }\r\n else {\r\n this._stopCurrentMaster();\r\n TourPlayer._playing = false;\r\n if (Settings.get_current().autoRepeatTour) {\r\n this._tour.set_currentTourstopIndex(-1);\r\n this.play();\r\n }\r\n else {\r\n WWTControl.singleton._freezeView();\r\n if (TourPlayer.__tourEnded != null) {\r\n TourPlayer.__tourEnded(this, new ss.EventArgs());\r\n }\r\n WWTControl.singleton._hideUI(false);\r\n WWTControl.scriptInterface._fireTourEnded();\r\n }\r\n }\r\n },\r\n _stopCurrentMaster: function() {\r\n if (this._currentMasterSlide != null) {\r\n if (this._currentMasterSlide.get_musicTrack() != null) {\r\n this._currentMasterSlide.get_musicTrack().stop();\r\n }\r\n if (this._currentMasterSlide.get_voiceTrack() != null) {\r\n this._currentMasterSlide.get_voiceTrack().stop();\r\n }\r\n var $enum1 = ss.enumerate(this._currentMasterSlide.get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.stop();\r\n }\r\n this._currentMasterSlide = null;\r\n }\r\n },\r\n get_leaveSettingsWhenStopped: function() {\r\n return this._leaveSettingsWhenStopped;\r\n },\r\n set_leaveSettingsWhenStopped: function(value) {\r\n this._leaveSettingsWhenStopped = value;\r\n return value;\r\n },\r\n play: function() {\r\n if (this._tour == null) {\r\n return;\r\n }\r\n if (TourPlayer._playing) {\r\n this.stop(true);\r\n }\r\n else {\r\n TourPlayer._playing = true;\r\n }\r\n WWTControl.singleton._hideUI(true);\r\n TourPlayer._playing = true;\r\n if (this._tour.get_tourStops().length > 0) {\r\n this._onTarget = false;\r\n if (this._tour.get_currentTourstopIndex() === -1) {\r\n this._tour.set_currentTourStop(this._tour.get_tourStops()[0]);\r\n }\r\n var $enum1 = ss.enumerate(this._tour.get_tourStops());\r\n while ($enum1.moveNext()) {\r\n var stop = $enum1.current;\r\n if (stop.get_musicTrack() != null) {\r\n stop.get_musicTrack().prepMultimedia();\r\n }\r\n if (stop.get_voiceTrack() != null) {\r\n stop.get_voiceTrack().prepMultimedia();\r\n }\r\n var $enum2 = ss.enumerate(stop.get_overlays());\r\n while ($enum2.moveNext()) {\r\n var overlay = $enum2.current;\r\n overlay.prepMultimedia();\r\n }\r\n }\r\n if (this._tour.get_currentTourstopIndex() > 0) {\r\n this._playMasterForCurrent();\r\n }\r\n WWTControl.singleton.gotoTarget(this._tour.get_currentTourStop().get_target(), false, true, false);\r\n }\r\n this._slideStartTime = ss.now();\r\n TourPlayer._playing = true;\r\n },\r\n _playMasterForCurrent: function() {\r\n if (!this._tour.get_currentTourStop().get_masterSlide()) {\r\n var currentMaster = this._tour.elapsedTimeSinceLastMaster(this._tour.get_currentTourstopIndex());\r\n if (currentMaster != null) {\r\n var elapsed = currentMaster.duration;\r\n this._currentMasterSlide = currentMaster.master;\r\n if (this._currentMasterSlide.get_musicTrack() != null) {\r\n this._currentMasterSlide.get_musicTrack().seek(elapsed);\r\n this._currentMasterSlide.get_musicTrack().play();\r\n }\r\n if (this._currentMasterSlide.get_voiceTrack() != null) {\r\n this._currentMasterSlide.get_voiceTrack().seek(elapsed);\r\n this._currentMasterSlide.get_voiceTrack().play();\r\n }\r\n var $enum1 = ss.enumerate(this._currentMasterSlide.get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.seek(elapsed);\r\n overlay.play();\r\n }\r\n }\r\n }\r\n },\r\n stop: function(noSwitchBackFullScreen) {\r\n if (TourPlayer._switchedToFullScreen && !noSwitchBackFullScreen) {\r\n }\r\n if (!this._leaveSettingsWhenStopped) {\r\n Settings.tourSettings = null;\r\n }\r\n TourPlayer._playing = false;\r\n if (this._tour.get_currentTourStop() != null) {\r\n if (this._tour.get_currentTourStop().get_musicTrack() != null) {\r\n this._tour.get_currentTourStop().get_musicTrack().stop();\r\n }\r\n if (this._tour.get_currentTourStop().get_voiceTrack() != null) {\r\n this._tour.get_currentTourStop().get_voiceTrack().stop();\r\n }\r\n var $enum1 = ss.enumerate(this._tour.get_currentTourStop().get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.stop();\r\n }\r\n }\r\n if (this._currentMasterSlide != null) {\r\n if (this._currentMasterSlide.get_musicTrack() != null) {\r\n this._currentMasterSlide.get_musicTrack().stop();\r\n }\r\n if (this._currentMasterSlide.get_voiceTrack() != null) {\r\n this._currentMasterSlide.get_voiceTrack().stop();\r\n }\r\n var $enum2 = ss.enumerate(this._currentMasterSlide.get_overlays());\r\n while ($enum2.moveNext()) {\r\n var overlay = $enum2.current;\r\n overlay.stop();\r\n }\r\n }\r\n WWTControl.singleton._hideUI(TourPlayer.noRestoreUIOnStop);\r\n WWTControl.scriptInterface._fireTourEnded();\r\n },\r\n updateSlideStates: function() {\r\n var slideChanging = false;\r\n var slideElapsedTime = ss.now() - this._slideStartTime;\r\n if (slideElapsedTime > this._tour.get_currentTourStop().get_duration() && TourPlayer._playing) {\r\n this.nextSlide();\r\n slideChanging = true;\r\n }\r\n slideElapsedTime = ss.now() - this._slideStartTime;\r\n if (this._tour.get_currentTourStop() != null) {\r\n this._tour.get_currentTourStop().set_tweenPosition(Math.min(1, (slideElapsedTime / this._tour.get_currentTourStop().get_duration())));\r\n this._tour.get_currentTourStop().faderOpacity = 0;\r\n var elapsedSeconds = this._tour.get_currentTourStop().get_tweenPosition() * this._tour.get_currentTourStop().get_duration() / 1000;\r\n if (slideChanging) {\r\n WWTControl.singleton.set_crossFadeFrame(false);\r\n }\r\n switch (this._tour.get_currentTourStop().get__transition()) {\r\n case 0:\r\n this._tour.get_currentTourStop().faderOpacity = 0;\r\n WWTControl.singleton.set_crossFadeFrame(false);\r\n break;\r\n case 2:\r\n if (slideChanging) {\r\n }\r\n if (elapsedSeconds < (elapsedSeconds - this._tour.get_currentTourStop().get__transitionHoldTime())) {\r\n WWTControl.singleton.set_crossFadeFrame(true);\r\n this._tour.get_currentTourStop().faderOpacity = 1;\r\n }\r\n else {\r\n this._tour.get_currentTourStop().faderOpacity = 0;\r\n WWTControl.singleton.set_crossFadeFrame(false);\r\n }\r\n break;\r\n case 1:\r\n WWTControl.singleton.set_crossFadeFrame(true);\r\n var opacity = Math.max(0, 1 - Math.min(1, (elapsedSeconds - this._tour.get_currentTourStop().get__transitionHoldTime()) / this._tour.get_currentTourStop().get__transitionTime()));\r\n this._tour.get_currentTourStop().faderOpacity = opacity;\r\n if (slideChanging) {\r\n }\r\n break;\r\n case 3:\r\n case 4:\r\n WWTControl.singleton.set_crossFadeFrame(false);\r\n var opacity = Math.max(0, 1 - Math.max(0, elapsedSeconds - this._tour.get_currentTourStop().get__transitionHoldTime()) / this._tour.get_currentTourStop().get__transitionTime());\r\n this._tour.get_currentTourStop().faderOpacity = opacity;\r\n break;\r\n case 5:\r\n WWTControl.singleton.set_crossFadeFrame(false);\r\n break;\r\n default:\r\n break;\r\n }\r\n if (!this._tour.get_currentTourStop().get_isLinked() && this._tour.get_currentTourstopIndex() < (this._tour.get_tourStops().length - 1)) {\r\n var nextTrans = this._tour.get_tourStops()[this._tour.get_currentTourstopIndex() + 1].get__transition();\r\n var nextTransTime = this._tour.get_tourStops()[this._tour.get_currentTourstopIndex() + 1].get__transitionOutTime();\r\n switch (nextTrans) {\r\n case 5:\r\n case 3:\r\n if (!this._tour.get_currentTourStop().faderOpacity) {\r\n WWTControl.singleton.set_crossFadeFrame(false);\r\n var opacity = Math.max(0, 1 - Math.min(1, ((this._tour.get_currentTourStop().get_duration() / 1000) - elapsedSeconds) / nextTransTime));\r\n this._tour.get_currentTourStop().faderOpacity = opacity;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n updateTweenPosition: function(tween) {\r\n var slideElapsedTime = ss.now() - this._slideStartTime;\r\n if (tween > -1) {\r\n return this._tour.get_currentTourStop().set_tweenPosition(Math.min(1, tween));\r\n }\r\n else {\r\n return this._tour.get_currentTourStop().set_tweenPosition(Math.min(1, (slideElapsedTime / this._tour.get_currentTourStop().get_duration())));\r\n }\r\n },\r\n close: function() {\r\n if (this._tour != null) {\r\n if (TourPlayer.get_playing()) {\r\n this.stop(TourPlayer._switchedToFullScreen);\r\n }\r\n this._tour = null;\r\n }\r\n },\r\n mouseDown: function(sender, e) {\r\n var location;\r\n location = this.pointToView(Vector2d.create(e.offsetX, e.offsetY));\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return false;\r\n }\r\n for (var i = this._tour.get_currentTourStop().get_overlays().length - 1; i >= 0; i--) {\r\n if (this._tour.get_currentTourStop().get_overlays()[i].hitTest(location)) {\r\n if (!ss.emptyString(this._tour.get_currentTourStop().get_overlays()[i].get_url())) {\r\n var linkItem = this._tour.get_currentTourStop().get_overlays()[i];\r\n Util._openUrl(linkItem.get_url());\r\n return true;\r\n }\r\n if (!ss.emptyString(this._tour.get_currentTourStop().get_overlays()[i].get_linkID())) {\r\n this._callStack.push(this._tour.get_currentTourstopIndex());\r\n this.playFromTourstop(this._tour.get_tourStops()[this._tour.getTourStopIndexByID(this._tour.get_currentTourStop().get_overlays()[i].get_linkID())]);\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n mouseUp: function(sender, e) {\r\n return false;\r\n },\r\n mouseMove: function(sender, e) {\r\n var location;\r\n try {\r\n location = this.pointToView(Vector2d.create(e.offsetX, e.offsetY));\r\n }\r\n catch ($e1) {\r\n return false;\r\n }\r\n if (this._tour == null || this._tour.get_currentTourStop() == null) {\r\n return false;\r\n }\r\n for (var i = this._tour.get_currentTourStop().get_overlays().length - 1; i >= 0; i--) {\r\n if (this._tour.get_currentTourStop().get_overlays()[i].hitTest(location) && (!ss.emptyString(this._tour.get_currentTourStop().get_overlays()[i].get_url()) || !ss.emptyString(this._tour.get_currentTourStop().get_overlays()[i].get_linkID()))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n mouseClick: function(sender, e) {\r\n return false;\r\n },\r\n click: function(sender, e) {\r\n return false;\r\n },\r\n mouseDoubleClick: function(sender, e) {\r\n return false;\r\n },\r\n keyDown: function(sender, e) {\r\n switch (e.keyCode) {\r\n case 27:\r\n this.stop(TourPlayer._switchedToFullScreen);\r\n WWTControl.singleton._closeTour();\r\n return true;\r\n case 32:\r\n this.pauseTour();\r\n return true;\r\n case 39:\r\n this._playNextSlide();\r\n return true;\r\n case 37:\r\n this._playPreviousSlide();\r\n return true;\r\n case 35:\r\n if (this._tour.get_tourStops().length > 0) {\r\n this.playFromTourstop(this._tour.get_tourStops()[this._tour.get_tourStops().length - 1]);\r\n }\r\n return true;\r\n case 36:\r\n if (this._tour.get_tourStops().length > 0) {\r\n this.playFromTourstop(this._tour.get_tourStops()[0]);\r\n }\r\n return true;\r\n }\r\n return false;\r\n },\r\n _playNextSlide: function() {\r\n if ((this._tour.get_currentTourstopIndex() < this._tour.get_tourStops().length - 1) && this._tour.get_tourStops().length > 0) {\r\n this.playFromTourstop(this._tour.get_tourStops()[this._tour.get_currentTourstopIndex() + 1]);\r\n }\r\n },\r\n _playPreviousSlide: function() {\r\n if (this._tour.get_currentTourstopIndex() > 0) {\r\n this.playFromTourstop(this._tour.get_tourStops()[this._tour.get_currentTourstopIndex() - 1]);\r\n }\r\n },\r\n playFromTourstop: function(tourStop) {\r\n this.stop(true);\r\n this._tour.set_currentTourStop(tourStop);\r\n WWTControl.singleton.gotoTarget(this._tour.get_currentTourStop().get_target(), false, true, false);\r\n SpaceTimeController.set_now(this._tour.get_currentTourStop().get_startTime());\r\n SpaceTimeController.set_syncToClock(false);\r\n this.play();\r\n },\r\n pauseTour: function() {\r\n if (TourPlayer._playing) {\r\n this.stop(TourPlayer._switchedToFullScreen);\r\n WWTControl.singleton._freezeView();\r\n WWTControl.scriptInterface._fireTourPaused();\r\n }\r\n else {\r\n this.play();\r\n WWTControl.scriptInterface._fireTourResume();\r\n }\r\n },\r\n keyUp: function(sender, e) {\r\n return false;\r\n },\r\n hover: function(pnt) {\r\n if (TourPlayer._playing) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n pointToView: function(pnt) {\r\n var clientHeight = WWTControl.singleton.canvas.height;\r\n var clientWidth = WWTControl.singleton.canvas.width;\r\n var viewWidth = (clientWidth / clientHeight) * 1116;\r\n var x = ((pnt.x) / (clientWidth) * viewWidth) - ((viewWidth - 1920) / 2);\r\n var y = (pnt.y) / clientHeight * 1116;\r\n return Vector2d.create(x, y);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.MasterTime\r\n\r\n function MasterTime(master, duration) {\r\n this.duration = 0;\r\n this.master = master;\r\n this.duration = duration;\r\n }\r\n var MasterTime$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TourStop\r\n\r\n function TourStop() {\r\n this._tourStopType = 0;\r\n this._keyFramed = false;\r\n this._tweenPosition = 0;\r\n this.faderOpacity = 0;\r\n this._owner = null;\r\n this._transition = 0;\r\n this._transitionTime = 2;\r\n this._transitionHoldTime = 4;\r\n this._transitionOutTime = 2;\r\n this._nextSlide = 'Next';\r\n this._fadeInOverlays = false;\r\n this._masterSlide = false;\r\n this._id = '';\r\n this._description = '';\r\n this._name = '';\r\n this._duration = 10000;\r\n this._interpolationType = 0;\r\n this._hasLocation = true;\r\n this._hasTime = true;\r\n this._startTime = SpaceTimeController.get_now();\r\n this._endTime = SpaceTimeController.get_now();\r\n this._actualPlanetScale = Settings.get_current().get_actualPlanetScale();\r\n this._locationAltitude = Settings.get_current().get_locationAltitude();\r\n this._locationLat = Settings.get_current().get_locationLat();\r\n this._locationLng = Settings.get_current().get_locationLng();\r\n this._showClouds = Settings.get_current().get_showClouds();\r\n this._showConstellationBoundries = Settings.get_current().get_showConstellationBoundries();\r\n this._showConstellationFigures = Settings.get_current().get_showConstellationFigures();\r\n this._showConstellationSelection = Settings.get_current().get_showConstellationSelection();\r\n this._showEcliptic = Settings.get_current().get_showEcliptic();\r\n this._showElevationModel = Settings.get_current().get_showElevationModel();\r\n this._showFieldOfView = Settings.get_current().get_showFieldOfView();\r\n this._showGrid = Settings.get_current().get_showGrid();\r\n this._showHorizon = Settings.get_current().get_showHorizon();\r\n this._showHorizonPanorama = Settings.get_current().get_showHorizonPanorama();\r\n this._showMoonsAsPointSource = Settings.get_current().get_showMoonsAsPointSource();\r\n this._showSolarSystem = Settings.get_current().get_showSolarSystem();\r\n this._fovTelescope = Settings.get_current().get_fovTelescope();\r\n this._fovEyepiece = Settings.get_current().get_fovEyepiece();\r\n this._fovCamera = Settings.get_current().get_fovCamera();\r\n this._localHorizonMode = Settings.get_current().get_localHorizonMode();\r\n this._galacticMode = Settings.get_current().get_galacticMode();\r\n this._solarSystemStars = Settings.get_current().get_solarSystemStars();\r\n this._solarSystemMilkyWay = Settings.get_current().get_solarSystemMilkyWay();\r\n this._solarSystemCosmos = Settings.get_current().get_solarSystemCosmos();\r\n this._solarSystemOrbits = Settings.get_current().get_solarSystemOrbits();\r\n this._solarSystemOverlays = Settings.get_current().get_solarSystemOverlays();\r\n this._solarSystemLighting = Settings.get_current().get_solarSystemLighting();\r\n this._solarSystemScale = Settings.get_current().get_solarSystemScale();\r\n this._solarSystemMultiRes = Settings.get_current().get_solarSystemMultiRes();\r\n this._showEquatorialGridText = Settings.get_current().get_showEquatorialGridText();\r\n this._showGalacticGrid = Settings.get_current().get_showGalacticGrid();\r\n this._showGalacticGridText = Settings.get_current().get_showGalacticGridText();\r\n this._showEclipticGrid = Settings.get_current().get_showEclipticGrid();\r\n this._showEclipticGridText = Settings.get_current().get_showEclipticGridText();\r\n this._showEclipticOverviewText = Settings.get_current().get_showEclipticOverviewText();\r\n this._showAltAzGrid = Settings.get_current().get_showAltAzGrid();\r\n this._showAltAzGridText = Settings.get_current().get_showAltAzGridText();\r\n this._showPrecessionChart = Settings.get_current().get_showPrecessionChart();\r\n this._showConstellationPictures = Settings.get_current().get_showConstellationPictures();\r\n this._showConstellationLabels = Settings.get_current().get_showConstellationLabels();\r\n this._solarSystemCMB = Settings.get_current().get_solarSystemCMB();\r\n this._solarSystemMinorPlanets = Settings.get_current().get_solarSystemMinorPlanets();\r\n this._solarSystemPlanets = Settings.get_current().get_solarSystemPlanets();\r\n this._showEarthSky = Settings.get_current().get_showEarthSky();\r\n this._solarSystemMinorOrbits = Settings.get_current().get_solarSystemMinorOrbits();\r\n this._constellationsEnabled = '';\r\n this._constellationFiguresFilter = Settings.get_current().get_constellationFiguresFilter().clone();\r\n this._constellationBoundariesFilter = Settings.get_current().get_constellationBoundariesFilter().clone();\r\n this._constellationNamesFilter = Settings.get_current().get_constellationNamesFilter().clone();\r\n this._constellationArtFilter = Settings.get_current().get_constellationArtFilter().clone();\r\n this._showSkyOverlays = Settings.get_current().get_showSkyOverlays();\r\n this._showConstellations = Settings.get_current().get_showConstellations();\r\n this._showSkyNode = Settings.get_current().get_showSkyNode();\r\n this._showSkyGrids = Settings.get_current().get_showSkyGrids();\r\n this._showSkyOverlaysIn3d = Settings.get_current().get_showSkyOverlaysIn3d();\r\n this._earthCutawayView = Settings.get_current().get_earthCutawayView();\r\n this._showISSModel = Settings.get_current().get_showISSModel();\r\n this._milkyWayModel = Settings.get_current().get_milkyWayModel();\r\n this._minorPlanetsFilter = Settings.get_current().get_minorPlanetsFilter();\r\n this._planetOrbitsFilter = Settings.get_current().get_planetOrbitsFilter();\r\n this._thumbnailString = '';\r\n this._thumbnail = null;\r\n this.layers = {};\r\n this._overlays = [];\r\n this._musicTrack = null;\r\n this._voiceTrack = null;\r\n this._id = Guid.newGuid().toString();\r\n }\r\n TourStop.create = function(target) {\r\n var ts = new TourStop();\r\n ts._target = target;\r\n return ts;\r\n };\r\n TourStop.getXmlText = function(ts) {\r\n var writer = new XmlTextWriter();\r\n writer._writeProcessingInstruction('xml', \"version='1.0' encoding='UTF-8'\");\r\n ts._saveToXml(writer, true);\r\n writer._close();\r\n return writer.body;\r\n };\r\n TourStop._fromXml = function(owner, tourStop) {\r\n try {\r\n var newTourStop = new TourStop();\r\n newTourStop._owner = owner;\r\n newTourStop.set_id(tourStop.attributes.getNamedItem('Id').nodeValue);\r\n newTourStop.set_name(tourStop.attributes.getNamedItem('Name').nodeValue);\r\n newTourStop.set_description(tourStop.attributes.getNamedItem('Description').nodeValue);\r\n newTourStop._thumbnailString = tourStop.attributes.getNamedItem('Thumbnail').nodeValue;\r\n newTourStop._duration = Util.parseTimeSpan(tourStop.attributes.getNamedItem('Duration').nodeValue);\r\n if (tourStop.attributes.getNamedItem('Master') != null) {\r\n newTourStop._masterSlide = ss.boolean(tourStop.attributes.getNamedItem('Master').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('NextSlide') != null) {\r\n newTourStop._nextSlide = tourStop.attributes.getNamedItem('NextSlide').nodeValue;\r\n }\r\n if (tourStop.attributes.getNamedItem('InterpolationType') != null) {\r\n newTourStop.set_interpolationType(Enums.parse('InterpolationType', tourStop.attributes.getNamedItem('InterpolationType').nodeValue));\r\n }\r\n newTourStop._fadeInOverlays = true;\r\n if (tourStop.attributes.getNamedItem('FadeInOverlays') != null) {\r\n newTourStop._fadeInOverlays = ss.boolean(tourStop.attributes.getNamedItem('FadeInOverlays').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('Transition') != null) {\r\n newTourStop._transition = Enums.parse('TransitionType', tourStop.attributes.getNamedItem('Transition').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('HasLocation') != null) {\r\n newTourStop._hasLocation = ss.boolean(tourStop.attributes.getNamedItem('HasLocation').nodeValue);\r\n }\r\n if (newTourStop._hasLocation) {\r\n if (tourStop.attributes.getNamedItem('LocationAltitude') != null) {\r\n newTourStop._locationAltitude = parseFloat(tourStop.attributes.getNamedItem('LocationAltitude').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('LocationLat') != null) {\r\n newTourStop._locationLat = parseFloat(tourStop.attributes.getNamedItem('LocationLat').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('LocationLng') != null) {\r\n newTourStop._locationLng = parseFloat(tourStop.attributes.getNamedItem('LocationLng').nodeValue);\r\n }\r\n }\r\n if (tourStop.attributes.getNamedItem('HasTime') != null) {\r\n newTourStop._hasTime = ss.boolean(tourStop.attributes.getNamedItem('HasTime').nodeValue);\r\n if (newTourStop._hasTime) {\r\n if (tourStop.attributes.getNamedItem('StartTime') != null) {\r\n newTourStop._startTime = ss.date(tourStop.attributes.getNamedItem('StartTime').nodeValue + ' UTC');\r\n }\r\n if (tourStop.attributes.getNamedItem('EndTime') != null) {\r\n newTourStop._endTime = ss.date(tourStop.attributes.getNamedItem('EndTime').nodeValue + ' UTC');\r\n }\r\n }\r\n }\r\n if (tourStop.attributes.getNamedItem('ActualPlanetScale') != null) {\r\n newTourStop._actualPlanetScale = ss.boolean(tourStop.attributes.getNamedItem('ActualPlanetScale').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowClouds') != null) {\r\n newTourStop._showClouds = ss.boolean(tourStop.attributes.getNamedItem('ShowClouds').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowConstellationBoundries') != null) {\r\n newTourStop._showConstellationBoundries = ss.boolean(tourStop.attributes.getNamedItem('ShowConstellationBoundries').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowConstellationFigures') != null) {\r\n newTourStop._showConstellationFigures = ss.boolean(tourStop.attributes.getNamedItem('ShowConstellationFigures').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowConstellationSelection') != null) {\r\n newTourStop._showConstellationSelection = ss.boolean(tourStop.attributes.getNamedItem('ShowConstellationSelection').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowEcliptic') != null) {\r\n newTourStop._showEcliptic = ss.boolean(tourStop.attributes.getNamedItem('ShowEcliptic').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowElevationModel') != null) {\r\n newTourStop._showElevationModel = ss.boolean(tourStop.attributes.getNamedItem('ShowElevationModel').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowFieldOfView') != null) {\r\n newTourStop._showFieldOfView = ss.boolean(tourStop.attributes.getNamedItem('ShowFieldOfView').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowGrid') != null) {\r\n newTourStop._showGrid = ss.boolean(tourStop.attributes.getNamedItem('ShowGrid').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowHorizon') != null) {\r\n newTourStop._showHorizon = ss.boolean(tourStop.attributes.getNamedItem('ShowHorizon').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowHorizonPanorama') != null) {\r\n newTourStop._showHorizonPanorama = ss.boolean(tourStop.attributes.getNamedItem('ShowHorizonPanorama').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowMoonsAsPointSource') != null) {\r\n newTourStop._showMoonsAsPointSource = ss.boolean(tourStop.attributes.getNamedItem('ShowMoonsAsPointSource').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowSolarSystem') != null) {\r\n newTourStop._showSolarSystem = ss.boolean(tourStop.attributes.getNamedItem('ShowSolarSystem').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('FovTelescope') != null) {\r\n newTourStop._fovTelescope = parseInt(tourStop.attributes.getNamedItem('FovTelescope').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('FovEyepiece') != null) {\r\n newTourStop._fovEyepiece = parseInt(tourStop.attributes.getNamedItem('FovEyepiece').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('FovCamera') != null) {\r\n newTourStop._fovCamera = parseInt(tourStop.attributes.getNamedItem('FovCamera').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('LocalHorizonMode') != null) {\r\n newTourStop._localHorizonMode = ss.boolean(tourStop.attributes.getNamedItem('LocalHorizonMode').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('GalacticMode') != null) {\r\n newTourStop._galacticMode = ss.boolean(tourStop.attributes.getNamedItem('GalacticMode').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemStars') != null) {\r\n newTourStop._solarSystemStars = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemStars').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemMilkyWay') != null) {\r\n newTourStop._solarSystemMilkyWay = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemMilkyWay').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemCosmos') != null) {\r\n newTourStop._solarSystemCosmos = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemCosmos').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemOrbits') != null) {\r\n newTourStop._solarSystemOrbits = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemOrbits').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemOverlays') != null) {\r\n newTourStop._solarSystemOverlays = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemOverlays').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemLighting') != null) {\r\n newTourStop._solarSystemLighting = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemLighting').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemScale') != null) {\r\n newTourStop._solarSystemScale = parseInt(tourStop.attributes.getNamedItem('SolarSystemScale').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemMultiRes') != null) {\r\n newTourStop._solarSystemMultiRes = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemMultiRes').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowEquatorialGridText') != null) {\r\n newTourStop._showEquatorialGridText = ss.boolean(tourStop.attributes.getNamedItem('ShowEquatorialGridText').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowGalacticGrid') != null) {\r\n newTourStop._showGalacticGrid = ss.boolean(tourStop.attributes.getNamedItem('ShowGalacticGrid').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowGalacticGridText') != null) {\r\n newTourStop._showGalacticGridText = ss.boolean(tourStop.attributes.getNamedItem('ShowGalacticGridText').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowEclipticGrid') != null) {\r\n newTourStop._showEclipticGrid = ss.boolean(tourStop.attributes.getNamedItem('ShowEclipticGrid').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowEclipticGridText') != null) {\r\n newTourStop._showEclipticGridText = ss.boolean(tourStop.attributes.getNamedItem('ShowEclipticGridText').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowEclipticOverviewText') != null) {\r\n newTourStop._showEclipticOverviewText = ss.boolean(tourStop.attributes.getNamedItem('ShowEclipticOverviewText').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowAltAzGrid') != null) {\r\n newTourStop._showAltAzGrid = ss.boolean(tourStop.attributes.getNamedItem('ShowAltAzGrid').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowAltAzGridText') != null) {\r\n newTourStop._showAltAzGridText = ss.boolean(tourStop.attributes.getNamedItem('ShowAltAzGridText').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowPrecessionChart') != null) {\r\n newTourStop._showPrecessionChart = ss.boolean(tourStop.attributes.getNamedItem('ShowPrecessionChart').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowConstellationPictures') != null) {\r\n newTourStop._showConstellationPictures = ss.boolean(tourStop.attributes.getNamedItem('ShowConstellationPictures').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowConstellationLabels') != null) {\r\n newTourStop._showConstellationLabels = ss.boolean(tourStop.attributes.getNamedItem('ShowConstellationLabels').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemCMB') != null) {\r\n newTourStop._solarSystemCMB = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemCMB').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemMinorPlanets') != null) {\r\n newTourStop._solarSystemMinorPlanets = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemMinorPlanets').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemPlanets') != null) {\r\n newTourStop._solarSystemPlanets = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemPlanets').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowEarthSky') != null) {\r\n newTourStop._showEarthSky = ss.boolean(tourStop.attributes.getNamedItem('ShowEarthSky').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('SolarSystemMinorOrbits') != null) {\r\n newTourStop._solarSystemMinorOrbits = ss.boolean(tourStop.attributes.getNamedItem('SolarSystemMinorOrbits').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowSkyOverlays') != null) {\r\n newTourStop._showSkyOverlays = ss.boolean(tourStop.attributes.getNamedItem('ShowSkyOverlays').nodeValue);\r\n }\r\n else {\r\n newTourStop._showSkyOverlays = true;\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowConstellations') != null) {\r\n newTourStop._showConstellations = ss.boolean(tourStop.attributes.getNamedItem('ShowConstellations').nodeValue);\r\n }\r\n else {\r\n newTourStop._showConstellations = true;\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowSkyNode') != null) {\r\n newTourStop._showSkyNode = ss.boolean(tourStop.attributes.getNamedItem('ShowSkyNode').nodeValue);\r\n }\r\n else {\r\n newTourStop._showSkyNode = true;\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowSkyGrids') != null) {\r\n newTourStop._showSkyGrids = ss.boolean(tourStop.attributes.getNamedItem('ShowSkyGrids').nodeValue);\r\n }\r\n else {\r\n newTourStop._showSkyGrids = true;\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowSkyOverlaysIn3d') != null) {\r\n newTourStop._showSkyOverlaysIn3d = ss.boolean(tourStop.attributes.getNamedItem('ShowSkyOverlaysIn3d').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('EarthCutawayView') != null) {\r\n newTourStop._earthCutawayView = ss.boolean(tourStop.attributes.getNamedItem('EarthCutawayView').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ShowISSModel') != null) {\r\n newTourStop._showISSModel = ss.boolean(tourStop.attributes.getNamedItem('ShowISSModel').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('MilkyWayModel') != null) {\r\n newTourStop._milkyWayModel = ss.boolean(tourStop.attributes.getNamedItem('MilkyWayModel').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('ConstellationBoundariesFilter') != null) {\r\n newTourStop._constellationBoundariesFilter = ConstellationFilter.parse(tourStop.attributes.getNamedItem('ConstellationBoundariesFilter').nodeValue);\r\n }\r\n else {\r\n newTourStop._constellationBoundariesFilter = ConstellationFilter.get_allConstellation();\r\n }\r\n if (tourStop.attributes.getNamedItem('ConstellationBoundariesFilter') != null) {\r\n newTourStop._constellationFiguresFilter = ConstellationFilter.parse(tourStop.attributes.getNamedItem('ConstellationBoundariesFilter').nodeValue);\r\n }\r\n else {\r\n newTourStop._constellationFiguresFilter = new ConstellationFilter();\r\n }\r\n if (tourStop.attributes.getNamedItem('ConstellationNamesFilter') != null) {\r\n newTourStop._constellationNamesFilter = ConstellationFilter.parse(tourStop.attributes.getNamedItem('ConstellationNamesFilter').nodeValue);\r\n }\r\n else {\r\n newTourStop._constellationNamesFilter = new ConstellationFilter();\r\n }\r\n if (tourStop.attributes.getNamedItem('ConstellationArtFilter') != null) {\r\n newTourStop._constellationArtFilter = ConstellationFilter.parse(tourStop.attributes.getNamedItem('ConstellationArtFilter').nodeValue);\r\n }\r\n else {\r\n newTourStop._constellationArtFilter = new ConstellationFilter();\r\n }\r\n if (tourStop.attributes.getNamedItem('MinorPlanetsFilter') != null) {\r\n newTourStop._minorPlanetsFilter = parseInt(tourStop.attributes.getNamedItem('MinorPlanetsFilter').nodeValue);\r\n }\r\n if (tourStop.attributes.getNamedItem('PlanetOrbitsFilter') != null) {\r\n newTourStop._planetOrbitsFilter = parseInt(tourStop.attributes.getNamedItem('PlanetOrbitsFilter').nodeValue);\r\n }\r\n var place = Util.selectSingleNode(tourStop, 'Place');\r\n newTourStop._target = Place._fromXml(place);\r\n var endTarget = Util.selectSingleNode(tourStop, 'EndTarget');\r\n if (endTarget != null) {\r\n newTourStop._endTarget = Place._fromXml(endTarget);\r\n }\r\n var overlays = Util.selectSingleNode(tourStop, 'Overlays');\r\n var $enum1 = ss.enumerate(overlays.childNodes);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (overlay.nodeName === 'Overlay') {\r\n newTourStop.addOverlay(Overlay._fromXml(newTourStop, overlay));\r\n }\r\n }\r\n var musicNode = Util.selectSingleNode(tourStop, 'MusicTrack');\r\n if (musicNode != null) {\r\n newTourStop._musicTrack = Overlay._fromXml(newTourStop, Util.selectSingleNode(musicNode, 'Overlay'));\r\n }\r\n var voiceNode = Util.selectSingleNode(tourStop, 'VoiceTrack');\r\n if (voiceNode != null) {\r\n newTourStop._voiceTrack = Overlay._fromXml(newTourStop, Util.selectSingleNode(voiceNode, 'Overlay'));\r\n }\r\n var layerNode = Util.selectSingleNode(tourStop, 'VisibleLayers');\r\n if (layerNode != null) {\r\n newTourStop._loadLayerList(layerNode);\r\n }\r\n newTourStop._thumbnail = owner.getCachedTexture(ss.format('{0}.thumb.png', newTourStop._id), function() {\r\n var c = 0;\r\n });\r\n return newTourStop;\r\n }\r\n catch (ex) {\r\n WWTControl.scriptInterface._fireTourError(ex);\r\n return null;\r\n }\r\n };\r\n var TourStop$ = {\r\n get_keyFramed: function() {\r\n return this._keyFramed;\r\n },\r\n get_tourStopType: function() {\r\n if (this._target.get_backgroundImageset() != null) {\r\n return this._target.get_backgroundImageset().get_dataSetType();\r\n }\r\n else {\r\n return this._tourStopType;\r\n }\r\n },\r\n set_tourStopType: function(value) {\r\n if (this._target.get_backgroundImageset() != null) {\r\n if (this._target.get_backgroundImageset().get_dataSetType() !== value) {\r\n this._target.set_backgroundImageset(null);\r\n }\r\n }\r\n this._tourStopType = value;\r\n return value;\r\n },\r\n get_tweenPosition: function() {\r\n return this._tweenPosition;\r\n },\r\n set_tweenPosition: function(value) {\r\n if (this._tweenPosition !== value) {\r\n this._tweenPosition = Math.max(0, Math.min(1, value));\r\n this.updateTweenPosition();\r\n }\r\n return value;\r\n },\r\n updateTweenPosition: function() {\r\n if (this.get_keyFramed()) {\r\n }\r\n },\r\n copy: function() {\r\n var writer = new XmlTextWriter();\r\n writer._writeProcessingInstruction('xml', \"version='1.0' encoding='UTF-8'\");\r\n this._saveToXml(writer, true);\r\n try {\r\n var xParser = new DOMParser();\r\n var doc = xParser.parseFromString(writer.body, 'text/xml');\r\n var node = Util.selectSingleNode(doc, 'TourStop');\r\n var ts = TourStop._fromXml(this.get_owner(), node);\r\n ts.set_id(Guid.newGuid().toString());\r\n return ts;\r\n }\r\n catch ($e1) {\r\n }\r\n return null;\r\n },\r\n get_owner: function() {\r\n return this._owner;\r\n },\r\n set_owner: function(value) {\r\n this._owner = value;\r\n return value;\r\n },\r\n get__transition: function() {\r\n return this._transition;\r\n },\r\n set__transition: function(value) {\r\n if (this._transition !== value) {\r\n this._transition = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get__transitionTime: function() {\r\n return this._transitionTime;\r\n },\r\n set__transitionTime: function(value) {\r\n if (this._transitionTime !== value) {\r\n this._transitionTime = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get__transitionHoldTime: function() {\r\n return this._transitionHoldTime;\r\n },\r\n set__transitionHoldTime: function(value) {\r\n if (this._transitionHoldTime !== value) {\r\n this._transitionHoldTime = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get__transitionOutTime: function() {\r\n return this._transitionOutTime;\r\n },\r\n set__transitionOutTime: function(value) {\r\n if (this._transitionOutTime !== value) {\r\n this._transitionOutTime = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_nextSlide: function() {\r\n return this._nextSlide;\r\n },\r\n set_nextSlide: function(value) {\r\n this._nextSlide = value;\r\n return value;\r\n },\r\n get_isLinked: function() {\r\n if (this._nextSlide == null || this._nextSlide === 'Next' || !this._nextSlide) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n get_fadeInOverlays: function() {\r\n return this._fadeInOverlays;\r\n },\r\n set_fadeInOverlays: function(value) {\r\n this._fadeInOverlays = value;\r\n return value;\r\n },\r\n get_masterSlide: function() {\r\n return this._masterSlide;\r\n },\r\n set_masterSlide: function(value) {\r\n if (this._masterSlide !== value) {\r\n this._masterSlide = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_id: function() {\r\n return this._id;\r\n },\r\n set_id: function(value) {\r\n this._id = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n return value;\r\n },\r\n toString: function() {\r\n if (this._target != null) {\r\n return this.get_target().get_name();\r\n }\r\n else {\r\n return this._description;\r\n }\r\n },\r\n get_description: function() {\r\n return this._description;\r\n },\r\n set_description: function(value) {\r\n if (this._description !== value) {\r\n this._description = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_name: function() {\r\n if (this._target != null) {\r\n return this._target.get_name();\r\n }\r\n return this._name;\r\n },\r\n set_name: function(value) {\r\n if (this._name !== value) {\r\n this._name = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_duration: function() {\r\n return this._duration;\r\n },\r\n set_duration: function(value) {\r\n if (this._duration !== value) {\r\n this._duration = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_target: function() {\r\n return this._target;\r\n },\r\n set_target: function(value) {\r\n if (this._target !== value) {\r\n this._target = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_endTarget: function() {\r\n return this._endTarget;\r\n },\r\n set_endTarget: function(value) {\r\n if (this._endTarget !== value) {\r\n this._endTarget = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_interpolationType: function() {\r\n return this._interpolationType;\r\n },\r\n set_interpolationType: function(value) {\r\n this._interpolationType = value;\r\n return value;\r\n },\r\n get_hasLocation: function() {\r\n return this._hasTime;\r\n },\r\n set_hasLocation: function(value) {\r\n if (this._hasLocation !== value) {\r\n this._hasLocation = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_hasTime: function() {\r\n return this._hasTime;\r\n },\r\n set_hasTime: function(value) {\r\n if (this._hasTime !== value) {\r\n this._hasTime = this._hasLocation = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_startTime: function() {\r\n return this._startTime;\r\n },\r\n set_startTime: function(value) {\r\n this._startTime = value;\r\n if (!ss.compareDates(this._startTime, value)) {\r\n this._startTime = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_endTime: function() {\r\n return this._endTime;\r\n },\r\n set_endTime: function(value) {\r\n if (!ss.compareDates(this._endTime, value)) {\r\n this._endTime = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n captureSettings: function() {\r\n this._startTime = SpaceTimeController.get_now();\r\n this._actualPlanetScale = Settings.get_current().get_actualPlanetScale();\r\n this._locationAltitude = Settings.get_current().get_locationAltitude();\r\n this._locationLat = Settings.get_current().get_locationLat();\r\n this._locationLng = Settings.get_current().get_locationLng();\r\n this._showClouds = Settings.get_current().get_showClouds();\r\n this._showConstellationBoundries = Settings.get_current().get_showConstellationBoundries();\r\n this._showConstellationFigures = Settings.get_current().get_showConstellationFigures();\r\n this._showConstellationSelection = Settings.get_current().get_showConstellationSelection();\r\n this._showEcliptic = Settings.get_current().get_showEcliptic();\r\n this._showElevationModel = Settings.get_current().get_showElevationModel();\r\n this._showFieldOfView = Settings.get_current().get_showFieldOfView();\r\n this._showGrid = Settings.get_current().get_showGrid();\r\n this._showHorizon = Settings.get_current().get_showHorizon();\r\n this._showHorizonPanorama = Settings.get_current().get_showHorizonPanorama();\r\n this._showMoonsAsPointSource = Settings.get_current().get_showMoonsAsPointSource();\r\n this._showSolarSystem = Settings.get_current().get_showSolarSystem();\r\n this._fovTelescope = Settings.get_current().get_fovTelescope();\r\n this._fovEyepiece = Settings.get_current().get_fovEyepiece();\r\n this._fovCamera = Settings.get_current().get_fovCamera();\r\n this._localHorizonMode = Settings.get_current().get_localHorizonMode();\r\n this._galacticMode = Settings.get_current().get_galacticMode();\r\n this._solarSystemStars = Settings.get_current().get_solarSystemStars();\r\n this._solarSystemMilkyWay = Settings.get_current().get_solarSystemMilkyWay();\r\n this._solarSystemCosmos = Settings.get_current().get_solarSystemCosmos();\r\n this._solarSystemOrbits = Settings.get_current().get_solarSystemOrbits();\r\n this._solarSystemOverlays = Settings.get_current().get_solarSystemOverlays();\r\n this._solarSystemLighting = Settings.get_current().get_solarSystemLighting();\r\n this._solarSystemScale = Settings.get_current().get_solarSystemScale();\r\n this._solarSystemMultiRes = Settings.get_current().get_solarSystemMultiRes();\r\n this._showEquatorialGridText = Settings.get_current().get_showEquatorialGridText();\r\n this._showGalacticGrid = Settings.get_current().get_showGalacticGrid();\r\n this._showGalacticGridText = Settings.get_current().get_showGalacticGridText();\r\n this._showEclipticGrid = Settings.get_current().get_showEclipticGrid();\r\n this._showEclipticGridText = Settings.get_current().get_showEclipticGridText();\r\n this._showEclipticOverviewText = Settings.get_current().get_showEclipticOverviewText();\r\n this._showAltAzGrid = Settings.get_current().get_showAltAzGrid();\r\n this._showAltAzGridText = Settings.get_current().get_showAltAzGridText();\r\n this._showPrecessionChart = Settings.get_current().get_showPrecessionChart();\r\n this._showConstellationPictures = Settings.get_current().get_showConstellationPictures();\r\n this._showConstellationLabels = Settings.get_current().get_showConstellationLabels();\r\n this._solarSystemCMB = Settings.get_current().get_solarSystemCMB();\r\n this._solarSystemMinorPlanets = Settings.get_current().get_solarSystemMinorPlanets();\r\n this._solarSystemPlanets = Settings.get_current().get_solarSystemPlanets();\r\n this._showEarthSky = Settings.get_current().get_showEarthSky();\r\n this._solarSystemMinorOrbits = Settings.get_current().get_solarSystemMinorOrbits();\r\n this._constellationFiguresFilter = Settings.get_current().get_constellationFiguresFilter().clone();\r\n this._constellationBoundariesFilter = Settings.get_current().get_constellationBoundariesFilter().clone();\r\n this._constellationNamesFilter = Settings.get_current().get_constellationNamesFilter().clone();\r\n this._constellationArtFilter = Settings.get_current().get_constellationArtFilter().clone();\r\n this._showSkyOverlays = Settings.get_current().get_showSkyOverlays();\r\n this._showConstellations = Settings.get_current().get_showConstellations();\r\n this._showSkyNode = Settings.get_current().get_showSkyNode();\r\n this._showSkyGrids = Settings.get_current().get_showSkyGrids();\r\n this._showSkyOverlaysIn3d = Settings.get_current().get_showSkyOverlaysIn3d();\r\n this._earthCutawayView = Settings.get_current().get_earthCutawayView();\r\n this._showISSModel = Settings.get_current().get_showISSModel();\r\n this._milkyWayModel = Settings.get_current().get_milkyWayModel();\r\n this._minorPlanetsFilter = Settings.get_current().get_minorPlanetsFilter();\r\n this._planetOrbitsFilter = Settings.get_current().get_planetOrbitsFilter();\r\n },\r\n syncSettings: function() {\r\n Settings.get_globalSettings().set_actualPlanetScale(this._actualPlanetScale);\r\n Settings.get_globalSettings().set_locationAltitude(this._locationAltitude);\r\n Settings.get_globalSettings().set_locationLat(this._locationLat);\r\n Settings.get_globalSettings().set_locationLng(this._locationLng);\r\n Settings.get_globalSettings().set_earthCutawayView(this._earthCutawayView);\r\n Settings.get_globalSettings().set_showConstellationBoundries(this._showConstellationBoundries);\r\n Settings.get_globalSettings().set_showConstellationFigures(this._showConstellationFigures);\r\n Settings.get_globalSettings().set_showConstellationSelection(this._showConstellationSelection);\r\n Settings.get_globalSettings().set_showEcliptic(this._showEcliptic);\r\n Settings.get_globalSettings().set_showElevationModel(this._showElevationModel);\r\n Settings.get_globalSettings().set_showGrid(this._showGrid);\r\n Settings.get_globalSettings().set_showHorizon(this._showHorizon);\r\n Settings.get_globalSettings().set_showSolarSystem(this._showSolarSystem);\r\n Settings.get_globalSettings().set_localHorizonMode(this._localHorizonMode);\r\n Settings.get_globalSettings().set_galacticMode(this._galacticMode);\r\n Settings.get_globalSettings().set_solarSystemStars(this._solarSystemStars);\r\n Settings.get_globalSettings().set_solarSystemMilkyWay(this._solarSystemMilkyWay);\r\n Settings.get_globalSettings().set_solarSystemCosmos(this._solarSystemCosmos);\r\n Settings.get_globalSettings().set_solarSystemCMB(this._solarSystemCMB);\r\n Settings.get_globalSettings().set_solarSystemOrbits(this._solarSystemOrbits);\r\n Settings.get_globalSettings().set_solarSystemMinorOrbits(this._solarSystemMinorOrbits);\r\n Settings.get_globalSettings().set_solarSystemMinorPlanets(this._solarSystemMinorPlanets);\r\n Settings.get_globalSettings().set_solarSystemOverlays(this._solarSystemOverlays);\r\n Settings.get_globalSettings().set_solarSystemLighting(this._solarSystemLighting);\r\n Settings.get_globalSettings().set_showISSModel(this._showISSModel);\r\n Settings.get_globalSettings().set_solarSystemScale(this._solarSystemScale);\r\n Settings.get_globalSettings().set_solarSystemMultiRes(this._solarSystemMultiRes);\r\n Settings.get_globalSettings().set_showEarthSky(this._showEarthSky);\r\n Settings.get_globalSettings().set_minorPlanetsFilter(this._minorPlanetsFilter);\r\n Settings.get_globalSettings().set_planetOrbitsFilter(this._planetOrbitsFilter);\r\n Settings.get_globalSettings().set_showEquatorialGridText(this._showEquatorialGridText);\r\n Settings.get_globalSettings().set_showGalacticGrid(this._showGalacticGrid);\r\n Settings.get_globalSettings().set_showGalacticGridText(this._showGalacticGridText);\r\n Settings.get_globalSettings().set_showEclipticGrid(this._showEclipticGrid);\r\n Settings.get_globalSettings().set_showEclipticGridText(this._showEclipticGridText);\r\n Settings.get_globalSettings().set_showEclipticOverviewText(this._showEclipticOverviewText);\r\n Settings.get_globalSettings().set_showAltAzGrid(this._showAltAzGrid);\r\n Settings.get_globalSettings().set_showAltAzGridText(this._showAltAzGridText);\r\n Settings.get_globalSettings().set_showPrecessionChart(this._showPrecessionChart);\r\n Settings.get_globalSettings().set_showConstellationPictures(this._showConstellationPictures);\r\n Settings.get_globalSettings().set_constellationsEnabled(this._constellationsEnabled);\r\n Settings.get_globalSettings().set_showSkyOverlays(this._showSkyOverlays);\r\n Settings.get_globalSettings().set_constellations(this._showConstellations);\r\n Settings.get_globalSettings().set_showSkyNode(this._showSkyNode);\r\n Settings.get_globalSettings().set_showSkyGrids(this._showSkyGrids);\r\n Settings.get_globalSettings().set_constellationFiguresFilter(this._constellationFiguresFilter.clone());\r\n Settings.get_globalSettings().set_constellationBoundariesFilter(this._constellationBoundariesFilter.clone());\r\n Settings.get_globalSettings().set_constellationNamesFilter(this._constellationNamesFilter.clone());\r\n Settings.get_globalSettings().set_constellationArtFilter(this._constellationArtFilter.clone());\r\n },\r\n get_solarSystemStars: function() {\r\n return this._solarSystemStars;\r\n },\r\n get_solarSystemMultiRes: function() {\r\n return this._solarSystemMultiRes;\r\n },\r\n get_solarSystemMilkyWay: function() {\r\n return this._solarSystemMilkyWay;\r\n },\r\n get_solarSystemCosmos: function() {\r\n return this._solarSystemCosmos;\r\n },\r\n get_solarSystemOrbits: function() {\r\n return this._solarSystemOrbits;\r\n },\r\n get_solarSystemOverlays: function() {\r\n return this._solarSystemOverlays;\r\n },\r\n get_solarSystemLighting: function() {\r\n return this._solarSystemLighting;\r\n },\r\n get_solarSystemScale: function() {\r\n return this._solarSystemScale;\r\n },\r\n get_actualPlanetScale: function() {\r\n return this._actualPlanetScale;\r\n },\r\n get_fovCamera: function() {\r\n return this._fovCamera;\r\n },\r\n get_fovEyepiece: function() {\r\n return this._fovEyepiece;\r\n },\r\n get_fovTelescope: function() {\r\n return this._fovTelescope;\r\n },\r\n get_locationAltitude: function() {\r\n if (this._hasLocation) {\r\n return this._locationAltitude;\r\n }\r\n else {\r\n return Settings.get_current().get_locationAltitude();\r\n }\r\n },\r\n get_locationLat: function() {\r\n if (this._hasLocation) {\r\n return this._locationLat;\r\n }\r\n else {\r\n return Settings.get_current().get_locationLat();\r\n }\r\n },\r\n get_locationLng: function() {\r\n if (this._hasLocation) {\r\n return this._locationLng;\r\n }\r\n else {\r\n return Settings.get_current().get_locationLng();\r\n }\r\n },\r\n get_showClouds: function() {\r\n return this._showClouds;\r\n },\r\n get_showConstellationBoundries: function() {\r\n return this._showConstellationBoundries;\r\n },\r\n get_showConstellationFigures: function() {\r\n return this._showConstellationFigures;\r\n },\r\n get_showConstellationSelection: function() {\r\n return this._showConstellationSelection;\r\n },\r\n get_showEcliptic: function() {\r\n return this._showEcliptic;\r\n },\r\n get_showElevationModel: function() {\r\n return this._showElevationModel;\r\n },\r\n get_showFieldOfView: function() {\r\n return this._showFieldOfView;\r\n },\r\n get_showGrid: function() {\r\n return this._showGrid;\r\n },\r\n get_showHorizon: function() {\r\n return this._showHorizon;\r\n },\r\n get_showHorizonPanorama: function() {\r\n return this._showHorizonPanorama;\r\n },\r\n get_showMoonsAsPointSource: function() {\r\n return this._showMoonsAsPointSource;\r\n },\r\n get_showSolarSystem: function() {\r\n return this._showSolarSystem;\r\n },\r\n get_localHorizonMode: function() {\r\n return this._localHorizonMode;\r\n },\r\n get_galacticMode: function() {\r\n return this._galacticMode;\r\n },\r\n get_thumbnail: function() {\r\n if (this._target != null && this._thumbnail == null) {\r\n return null;\r\n }\r\n return this._thumbnail;\r\n },\r\n set_thumbnail: function(value) {\r\n this._thumbnail = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n return value;\r\n },\r\n get_overlays: function() {\r\n return this._overlays;\r\n },\r\n get_musicTrack: function() {\r\n return this._musicTrack;\r\n },\r\n set_musicTrack: function(value) {\r\n if (this._musicTrack !== value) {\r\n this._musicTrack = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n get_voiceTrack: function() {\r\n return this._voiceTrack;\r\n },\r\n set_voiceTrack: function(value) {\r\n if (this._voiceTrack !== value) {\r\n this._voiceTrack = value;\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n }\r\n return value;\r\n },\r\n addOverlay: function(overlay) {\r\n if (overlay == null) {\r\n return;\r\n }\r\n overlay.set_owner(this);\r\n this._overlays.push(overlay);\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n },\r\n removeOverlay: function(overlay) {\r\n ss.remove(this._overlays, overlay);\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n },\r\n cleanUp: function() {\r\n var $enum1 = ss.enumerate(this.get_overlays());\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.cleanUp();\r\n }\r\n if (this._voiceTrack != null) {\r\n this._voiceTrack.cleanUp();\r\n }\r\n if (this._musicTrack != null) {\r\n this._musicTrack.cleanUp();\r\n }\r\n },\r\n sendToBack: function(target) {\r\n ss.remove(this._overlays, target);\r\n this._overlays.splice(0, 0, target);\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n },\r\n bringToFront: function(target) {\r\n ss.remove(this._overlays, target);\r\n this._overlays.push(target);\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n },\r\n bringForward: function(target) {\r\n var index = this._overlays.indexOf(target);\r\n if (index < this._overlays.length - 1) {\r\n ss.remove(this._overlays, target);\r\n this._overlays.splice(index + 1, 0, target);\r\n }\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n },\r\n sendBackward: function(target) {\r\n var index = this._overlays.indexOf(target);\r\n if (index > 0) {\r\n ss.remove(this._overlays, target);\r\n this._overlays.splice(index - 1, 0, target);\r\n }\r\n if (this._owner != null) {\r\n this._owner.set_tourDirty(true);\r\n }\r\n },\r\n getNextOverlay: function(current) {\r\n if (current == null) {\r\n if (this._overlays.length > 0) {\r\n return this._overlays[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n var index = this._overlays.indexOf(current);\r\n if (index < this._overlays.length - 1) {\r\n return this._overlays[index + 1];\r\n }\r\n else {\r\n return this._overlays[0];\r\n }\r\n },\r\n getPerviousOverlay: function(current) {\r\n if (current == null) {\r\n if (this._overlays.length > 0) {\r\n return this._overlays[0];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n var index = this._overlays.indexOf(current);\r\n if (index > 0) {\r\n return this._overlays[index - 1];\r\n }\r\n else {\r\n return this._overlays[this._overlays.length - 1];\r\n }\r\n },\r\n getOverlayById: function(id) {\r\n var $enum1 = ss.enumerate(this._overlays);\r\n while ($enum1.moveNext()) {\r\n var ol = $enum1.current;\r\n if (ol.id === id) {\r\n return ol;\r\n }\r\n }\r\n return null;\r\n },\r\n get_tourStopThumbnailFilename: function() {\r\n return ss.format('{0}.thumb.png', this._id);\r\n },\r\n _saveToXml: function(xmlWriter, saveContent) {\r\n if (saveContent) {\r\n if (this._thumbnail != null) {\r\n }\r\n }\r\n xmlWriter._writeStartElement('TourStop');\r\n xmlWriter._writeAttributeString('Id', this._id);\r\n xmlWriter._writeAttributeString('Name', this._name);\r\n xmlWriter._writeAttributeString('Description', this._description);\r\n xmlWriter._writeAttributeString('Thumbnail', this._thumbnailString);\r\n xmlWriter._writeAttributeString('Duration', Util.xmlDuration(this._duration));\r\n xmlWriter._writeAttributeString('Master', this._masterSlide.toString());\r\n xmlWriter._writeAttributeString('TransitionType', Enums.toXml('TransitionType', this._transition));\r\n xmlWriter._writeAttributeString('TransitionTime', this._transitionTime.toString());\r\n xmlWriter._writeAttributeString('TransitionOutTime', this._transitionOutTime.toString());\r\n xmlWriter._writeAttributeString('TransitionHoldTime', this._transitionHoldTime.toString());\r\n xmlWriter._writeAttributeString('NextSlide', this._nextSlide);\r\n xmlWriter._writeAttributeString('InterpolationType', Enums.toXml('InterpolationType', this._interpolationType));\r\n xmlWriter._writeAttributeString('HasLocation', this._hasLocation.toString());\r\n if (this._hasLocation) {\r\n xmlWriter._writeAttributeString('LocationAltitude', this._locationAltitude.toString());\r\n xmlWriter._writeAttributeString('LocationLat', this._locationLat.toString());\r\n xmlWriter._writeAttributeString('LocationLng', this._locationLng.toString());\r\n }\r\n xmlWriter._writeAttributeString('HasTime', this._hasTime.toString());\r\n if (this._hasTime) {\r\n xmlWriter._writeAttributeString('StartTime', Util.xmlDate(this._startTime));\r\n xmlWriter._writeAttributeString('EndTime', Util.xmlDate(this._endTime));\r\n }\r\n xmlWriter._writeAttributeString('ActualPlanetScale', this._actualPlanetScale.toString());\r\n xmlWriter._writeAttributeString('ShowClouds', this._showClouds.toString());\r\n xmlWriter._writeAttributeString('EarthCutawayView', this._earthCutawayView.toString());\r\n xmlWriter._writeAttributeString('ShowConstellationBoundries', this._showConstellationBoundries.toString());\r\n xmlWriter._writeAttributeString('ShowConstellationFigures', this._showConstellationFigures.toString());\r\n xmlWriter._writeAttributeString('ShowConstellationSelection', this._showConstellationSelection.toString());\r\n xmlWriter._writeAttributeString('ShowEcliptic', this._showEcliptic.toString());\r\n xmlWriter._writeAttributeString('ShowElevationModel', this._showElevationModel.toString());\r\n this._showFieldOfView = false;\r\n xmlWriter._writeAttributeString('ShowFieldOfView', this._showFieldOfView.toString());\r\n xmlWriter._writeAttributeString('ShowGrid', this._showGrid.toString());\r\n xmlWriter._writeAttributeString('ShowHorizon', this._showHorizon.toString());\r\n xmlWriter._writeAttributeString('ShowHorizonPanorama', this._showHorizonPanorama.toString());\r\n xmlWriter._writeAttributeString('ShowMoonsAsPointSource', this._showMoonsAsPointSource.toString());\r\n xmlWriter._writeAttributeString('ShowSolarSystem', this._showSolarSystem.toString());\r\n xmlWriter._writeAttributeString('FovTelescope', this._fovTelescope.toString());\r\n xmlWriter._writeAttributeString('FovEyepiece', this._fovEyepiece.toString());\r\n xmlWriter._writeAttributeString('FovCamera', this._fovCamera.toString());\r\n xmlWriter._writeAttributeString('LocalHorizonMode', this._localHorizonMode.toString());\r\n xmlWriter._writeAttributeString('GalacticMode', this._galacticMode.toString());\r\n xmlWriter._writeAttributeString('FadeInOverlays', this._fadeInOverlays.toString());\r\n xmlWriter._writeAttributeString('SolarSystemStars', this._solarSystemStars.toString());\r\n xmlWriter._writeAttributeString('SolarSystemMilkyWay', this._solarSystemMilkyWay.toString());\r\n xmlWriter._writeAttributeString('SolarSystemCosmos', this._solarSystemCosmos.toString());\r\n xmlWriter._writeAttributeString('SolarSystemCMB', this._solarSystemCMB.toString());\r\n xmlWriter._writeAttributeString('SolarSystemOrbits', this._solarSystemOrbits.toString());\r\n xmlWriter._writeAttributeString('SolarSystemMinorOrbits', this._solarSystemMinorOrbits.toString());\r\n xmlWriter._writeAttributeString('SolarSystemOverlays', this._solarSystemOverlays.toString());\r\n xmlWriter._writeAttributeString('SolarSystemLighting', this._solarSystemLighting.toString());\r\n xmlWriter._writeAttributeString('ShowISSModel', this._showISSModel.toString());\r\n xmlWriter._writeAttributeString('SolarSystemScale', this._solarSystemScale.toString());\r\n xmlWriter._writeAttributeString('MinorPlanetsFilter', this._minorPlanetsFilter.toString());\r\n xmlWriter._writeAttributeString('PlanetOrbitsFilter', this._planetOrbitsFilter.toString());\r\n xmlWriter._writeAttributeString('SolarSystemMultiRes', this._solarSystemMultiRes.toString());\r\n xmlWriter._writeAttributeString('SolarSystemMinorPlanets', this._solarSystemMinorPlanets.toString());\r\n xmlWriter._writeAttributeString('SolarSystemPlanets', this._solarSystemPlanets.toString());\r\n xmlWriter._writeAttributeString('ShowEarthSky', this._showEarthSky.toString());\r\n xmlWriter._writeAttributeString('ShowEquatorialGridText', this.get_showEquatorialGridText().toString());\r\n xmlWriter._writeAttributeString('ShowGalacticGrid', this.get_showGalacticGrid().toString());\r\n xmlWriter._writeAttributeString('ShowGalacticGridText', this.get_showGalacticGridText().toString());\r\n xmlWriter._writeAttributeString('ShowEclipticGrid', this.get_showEclipticGrid().toString());\r\n xmlWriter._writeAttributeString('ShowEclipticGridText', this.get_showEclipticGridText().toString());\r\n xmlWriter._writeAttributeString('ShowEclipticOverviewText', this.get_showEclipticOverviewText().toString());\r\n xmlWriter._writeAttributeString('ShowAltAzGrid', this.get_showAltAzGrid().toString());\r\n xmlWriter._writeAttributeString('ShowAltAzGridText', this.get_showAltAzGridText().toString());\r\n xmlWriter._writeAttributeString('ShowPrecessionChart', this.get_showPrecessionChart().toString());\r\n xmlWriter._writeAttributeString('ConstellationPictures', this.get_showConstellationPictures().toString());\r\n xmlWriter._writeAttributeString('ConstellationsEnabled', this.get_constellationsEnabled());\r\n xmlWriter._writeAttributeString('ShowConstellationLabels', this.get_showConstellationLabels().toString());\r\n xmlWriter._writeAttributeString('ShowSkyOverlays', this.get_showSkyOverlays().toString());\r\n xmlWriter._writeAttributeString('ShowConstellations', this.get_showConstellations().toString());\r\n xmlWriter._writeAttributeString('ShowSkyNode', this.get_showSkyNode().toString());\r\n xmlWriter._writeAttributeString('ShowSkyGrids', this.get_showSkyGrids().toString());\r\n xmlWriter._writeAttributeString('SkyOverlaysIn3d', this.get_showSkyOverlaysIn3d().toString());\r\n xmlWriter._writeAttributeString('ConstellationFiguresFilter', this._constellationFiguresFilter.toString());\r\n xmlWriter._writeAttributeString('ConstellationBoundariesFilter', this._constellationBoundariesFilter.toString());\r\n xmlWriter._writeAttributeString('ConstellationNamesFilter', this._constellationNamesFilter.toString());\r\n xmlWriter._writeAttributeString('ConstellationArtFilter', this._constellationArtFilter.toString());\r\n this._target._saveToXml(xmlWriter, 'Place');\r\n if (this._endTarget != null) {\r\n this._endTarget._saveToXml(xmlWriter, 'EndTarget');\r\n }\r\n xmlWriter._writeStartElement('Overlays');\r\n var $enum1 = ss.enumerate(this._overlays);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.saveToXml(xmlWriter, false);\r\n }\r\n xmlWriter._writeEndElement();\r\n if (this._musicTrack != null) {\r\n xmlWriter._writeStartElement('MusicTrack');\r\n this._musicTrack.saveToXml(xmlWriter, false);\r\n xmlWriter._writeEndElement();\r\n }\r\n if (this._voiceTrack != null) {\r\n xmlWriter._writeStartElement('VoiceTrack');\r\n this._voiceTrack.saveToXml(xmlWriter, false);\r\n xmlWriter._writeEndElement();\r\n }\r\n this._writeLayerList(xmlWriter);\r\n xmlWriter._writeEndElement();\r\n },\r\n _writeLayerList: function(xmlWriter) {\r\n if (ss.keyCount(this.layers) > 0) {\r\n xmlWriter._writeStartElement('VisibleLayers');\r\n var $enum1 = ss.enumerate(ss.keys(this.layers));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n var info = this.layers[key];\r\n xmlWriter._writeStartElement('Layer');\r\n xmlWriter._writeAttributeString('StartOpacity', info.startOpacity.toString());\r\n xmlWriter._writeAttributeString('EndOpacity', info.endOpacity.toString());\r\n var len = info.startParams.length;\r\n xmlWriter._writeAttributeString('ParamCount', len.toString());\r\n for (var i = 0; i < len; i++) {\r\n xmlWriter._writeAttributeString(ss.format('StartParam{0}', i), info.startParams[i].toString());\r\n xmlWriter._writeAttributeString(ss.format('EndParam{0}', i), info.endParams[i].toString());\r\n }\r\n xmlWriter._writeValue(info.id.toString());\r\n xmlWriter._writeEndElement();\r\n }\r\n xmlWriter._writeEndElement();\r\n }\r\n },\r\n _addFilesToCabinet: function(fc, excludeAudio) {\r\n if (this._thumbnail != null) {\r\n var filename = ss.format('{0}.thumb.png', this._id);\r\n var blob = this._owner.getFileBlob(filename);\r\n fc.addFile(this._owner.get_workingDirectory() + filename, blob);\r\n }\r\n if (!excludeAudio) {\r\n if (this._musicTrack != null) {\r\n this._musicTrack.addFilesToCabinet(fc);\r\n }\r\n if (this._voiceTrack != null) {\r\n this._voiceTrack.addFilesToCabinet(fc);\r\n }\r\n }\r\n var $enum1 = ss.enumerate(this._overlays);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n overlay.addFilesToCabinet(fc);\r\n }\r\n },\r\n getNextDefaultName: function(baseName) {\r\n var suffixId = 1;\r\n var $enum1 = ss.enumerate(this._overlays);\r\n while ($enum1.moveNext()) {\r\n var overlay = $enum1.current;\r\n if (ss.startsWith(overlay.get_name(), baseName)) {\r\n var id = 0;\r\n try {\r\n id = parseInt(overlay.get_name().substr(baseName.length));\r\n }\r\n catch ($e2) {\r\n }\r\n if (id >= suffixId) {\r\n suffixId = id + 1;\r\n }\r\n }\r\n }\r\n return ss.format('{0} {1}', baseName, suffixId);\r\n },\r\n _loadLayerList: function(layersNode) {\r\n var $enum1 = ss.enumerate(layersNode.childNodes);\r\n while ($enum1.moveNext()) {\r\n var layer = $enum1.current;\r\n if (layer.nodeName === 'Layer') {\r\n var info = new LayerInfo();\r\n var id = layer.innerHTML;\r\n info.id = Guid.fromString(id);\r\n info.startOpacity = parseFloat(layer.attributes.getNamedItem('StartOpacity').nodeValue);\r\n info.endOpacity = parseFloat(layer.attributes.getNamedItem('EndOpacity').nodeValue);\r\n var len = 0;\r\n if (layer.attributes.getNamedItem('ParamCount') != null) {\r\n len = parseInt(layer.attributes.getNamedItem('ParamCount').nodeValue);\r\n }\r\n info.startParams = new Array(len);\r\n info.endParams = new Array(len);\r\n info.frameParams = new Array(len);\r\n for (var i = 0; i < len; i++) {\r\n info.startParams[i] = parseFloat(layer.attributes.getNamedItem(ss.format('StartParam{0}', i)).nodeValue);\r\n info.endParams[i] = parseFloat(layer.attributes.getNamedItem(ss.format('EndParam{0}', i)).nodeValue);\r\n info.frameParams[i] = info.startParams[i];\r\n }\r\n this.layers[info.id] = info;\r\n }\r\n }\r\n },\r\n _updateLayerOpacity: function() {\r\n if (!this.get_keyFramed()) {\r\n }\r\n else {\r\n this.updateTweenPosition();\r\n }\r\n },\r\n get_showEquatorialGridText: function() {\r\n return this._showEquatorialGridText;\r\n },\r\n set_showEquatorialGridText: function(value) {\r\n this._showEquatorialGridText = value;\r\n return value;\r\n },\r\n get_showGalacticGrid: function() {\r\n return this._showGalacticGrid;\r\n },\r\n set_showGalacticGrid: function(value) {\r\n this._showGalacticGrid = value;\r\n return value;\r\n },\r\n get_showGalacticGridText: function() {\r\n return this._showGalacticGridText;\r\n },\r\n set_showGalacticGridText: function(value) {\r\n this._showGalacticGridText = value;\r\n return value;\r\n },\r\n get_showEclipticGrid: function() {\r\n return this._showEclipticGrid;\r\n },\r\n set_showEclipticGrid: function(value) {\r\n this._showEclipticGrid = value;\r\n return value;\r\n },\r\n get_showEclipticGridText: function() {\r\n return this._showEclipticGridText;\r\n },\r\n set_showEclipticGridText: function(value) {\r\n this._showEclipticGridText = value;\r\n return value;\r\n },\r\n get_showEclipticOverviewText: function() {\r\n return this._showEclipticOverviewText;\r\n },\r\n set_showEclipticOverviewText: function(value) {\r\n this._showEclipticOverviewText = value;\r\n return value;\r\n },\r\n get_showAltAzGrid: function() {\r\n return this._showAltAzGrid;\r\n },\r\n set_showAltAzGrid: function(value) {\r\n this._showAltAzGrid = value;\r\n return value;\r\n },\r\n get_showAltAzGridText: function() {\r\n return this._showAltAzGridText;\r\n },\r\n set_showAltAzGridText: function(value) {\r\n this._showAltAzGridText = value;\r\n return value;\r\n },\r\n get_showPrecessionChart: function() {\r\n return this._showPrecessionChart;\r\n },\r\n set_showPrecessionChart: function(value) {\r\n this._showPrecessionChart = value;\r\n return value;\r\n },\r\n get_showConstellationPictures: function() {\r\n return this._showConstellationPictures;\r\n },\r\n set_showConstellationPictures: function(value) {\r\n this._showConstellationPictures = value;\r\n return value;\r\n },\r\n get_showConstellationLabels: function() {\r\n return this._showConstellationLabels;\r\n },\r\n set_showConstellationLabels: function(value) {\r\n this._showConstellationLabels = value;\r\n return value;\r\n },\r\n get_solarSystemCMB: function() {\r\n return this._solarSystemCMB;\r\n },\r\n set_solarSystemCMB: function(value) {\r\n this._solarSystemCMB = value;\r\n return value;\r\n },\r\n get_solarSystemMinorPlanets: function() {\r\n return this._solarSystemMinorPlanets;\r\n },\r\n set_solarSystemMinorPlanets: function(value) {\r\n this._solarSystemMinorPlanets = value;\r\n return value;\r\n },\r\n get_solarSystemPlanets: function() {\r\n return this._solarSystemPlanets;\r\n },\r\n set_solarSystemPlanets: function(value) {\r\n this._solarSystemPlanets = value;\r\n return value;\r\n },\r\n get_showEarthSky: function() {\r\n return this._showEarthSky;\r\n },\r\n set_showEarthSky: function(value) {\r\n this._showEarthSky = value;\r\n return value;\r\n },\r\n get_solarSystemMinorOrbits: function() {\r\n return this._solarSystemMinorOrbits;\r\n },\r\n set_solarSystemMinorOrbits: function(value) {\r\n this._solarSystemMinorOrbits = value;\r\n return value;\r\n },\r\n get_constellationsEnabled: function() {\r\n return this._constellationsEnabled;\r\n },\r\n set_constellationsEnabled: function(value) {\r\n this._constellationsEnabled = value;\r\n return value;\r\n },\r\n get_constellationFiguresFilter: function() {\r\n return this._constellationFiguresFilter;\r\n },\r\n set_constellationFiguresFilter: function(value) {\r\n this._constellationFiguresFilter = value;\r\n return value;\r\n },\r\n get_constellationBoundariesFilter: function() {\r\n return this._constellationBoundariesFilter;\r\n },\r\n set_constellationBoundariesFilter: function(value) {\r\n this._constellationBoundariesFilter = value;\r\n return value;\r\n },\r\n get_constellationNamesFilter: function() {\r\n return this._constellationNamesFilter;\r\n },\r\n set_constellationNamesFilter: function(value) {\r\n this._constellationNamesFilter = value;\r\n return value;\r\n },\r\n get_constellationArtFilter: function() {\r\n return this._constellationArtFilter;\r\n },\r\n set_constellationArtFilter: function(value) {\r\n this._constellationArtFilter = value;\r\n return value;\r\n },\r\n get_showSkyOverlays: function() {\r\n return this._showSkyOverlays;\r\n },\r\n set_showSkyOverlays: function(value) {\r\n this._showSkyOverlays = value;\r\n return value;\r\n },\r\n get_showConstellations: function() {\r\n return this._showConstellations;\r\n },\r\n set_showConstellations: function(value) {\r\n this._showConstellations = value;\r\n return value;\r\n },\r\n get_showSkyNode: function() {\r\n return this._showSkyNode;\r\n },\r\n set_showSkyNode: function(value) {\r\n this._showSkyNode = value;\r\n return value;\r\n },\r\n get_showSkyGrids: function() {\r\n return this._showSkyGrids;\r\n },\r\n set_showSkyGrids: function(value) {\r\n this._showSkyGrids = value;\r\n return value;\r\n },\r\n get_showSkyOverlaysIn3d: function() {\r\n return this._showSkyOverlaysIn3d;\r\n },\r\n set_showSkyOverlaysIn3d: function(value) {\r\n this._showSkyOverlaysIn3d = value;\r\n return value;\r\n },\r\n get_earthCutawayView: function() {\r\n return this._earthCutawayView;\r\n },\r\n set_earthCutawayView: function(value) {\r\n this._earthCutawayView = value;\r\n return value;\r\n },\r\n get_showISSModel: function() {\r\n return this._showISSModel;\r\n },\r\n set_showISSModel: function(value) {\r\n this._showISSModel = value;\r\n return value;\r\n },\r\n get_milkyWayModel: function() {\r\n return this._milkyWayModel;\r\n },\r\n set_milkyWayModel: function(value) {\r\n this._milkyWayModel = value;\r\n return value;\r\n },\r\n get_minorPlanetsFilter: function() {\r\n return this._minorPlanetsFilter;\r\n },\r\n set_minorPlanetsFilter: function(value) {\r\n this._minorPlanetsFilter = value;\r\n return value;\r\n },\r\n get_planetOrbitsFilter: function() {\r\n return this._planetOrbitsFilter;\r\n },\r\n set_planetOrbitsFilter: function(value) {\r\n this._planetOrbitsFilter = value;\r\n return value;\r\n },\r\n getSetting: function(type) {\r\n if (type === 17) {\r\n return new SettingParameter(true, this.faderOpacity, !!this.faderOpacity, null);\r\n }\r\n return new SettingParameter(false, 1, false, null);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.LayerInfo\r\n\r\n function LayerInfo() {\r\n this.id = Guid.newGuid();\r\n this.startOpacity = 1;\r\n this.endOpacity = 1;\r\n this.frameOpacity = 1;\r\n this.startParams = new Array(0);\r\n this.endParams = new Array(0);\r\n this.frameParams = new Array(0);\r\n }\r\n var LayerInfo$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.UndoTourStopChange\r\n\r\n function UndoTourStopChange(text, tour) {\r\n this._undoXml = '';\r\n this._redoXml = '';\r\n this._currentIndex = 0;\r\n this._actionText = '';\r\n this._targetTour = null;\r\n this._currentIndex = tour.get_currentTourstopIndex();\r\n this._actionText = text;\r\n this._targetTour = tour;\r\n this._undoXml = TourStop.getXmlText(tour.get_currentTourStop());\r\n this._targetTour.set_tourDirty(true);\r\n }\r\n var UndoTourStopChange$ = {\r\n get_actionText: function() {\r\n return this._actionText;\r\n },\r\n set_actionText: function(value) {\r\n this._actionText = value;\r\n return value;\r\n },\r\n undo: function() {\r\n var tsRedo = this._targetTour.get_tourStops()[this._currentIndex];\r\n var parser = new DOMParser();\r\n var doc = parser.parseFromString(this._undoXml, 'text/xml');\r\n var node = Util.selectSingleNode(doc, 'TourStop');\r\n this._targetTour.get_tourStops()[this._currentIndex] = TourStop._fromXml(this._targetTour, node);\r\n this._targetTour.set_currentTourstopIndex(this._currentIndex);\r\n if (ss.emptyString(this._redoXml)) {\r\n this._redoXml = TourStop.getXmlText(tsRedo);\r\n }\r\n this._targetTour.set_tourDirty(true);\r\n },\r\n redo: function() {\r\n var parser = new DOMParser();\r\n var doc = parser.parseFromString(this._redoXml, 'text/xml');\r\n var node = Util.selectSingleNode(doc, 'TourStop');\r\n this._targetTour.get_tourStops()[this._currentIndex] = TourStop._fromXml(this._targetTour, node);\r\n this._targetTour.set_currentTourstopIndex(this._currentIndex);\r\n this._targetTour.set_tourDirty(true);\r\n },\r\n toString: function() {\r\n return this._actionText;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Undo\r\n\r\n function Undo() {\r\n }\r\n Undo.clear = function() {\r\n Undo._undoStack = new ss.Stack();\r\n Undo._redoStack = new ss.Stack();\r\n };\r\n Undo.push = function(step) {\r\n Undo._undoStack.push(step);\r\n Undo._redoStack = new ss.Stack();\r\n };\r\n Undo.peekActionString = function() {\r\n if (Undo._undoStack.count > 0) {\r\n return Undo._undoStack.peek().toString();\r\n }\r\n else {\r\n return Language.getLocalizedText(551, 'Nothing to Undo');\r\n }\r\n };\r\n Undo.peekRedoActionString = function() {\r\n if (Undo._redoStack.count > 0) {\r\n return Undo._redoStack.peek().toString();\r\n }\r\n else {\r\n return '';\r\n }\r\n };\r\n Undo.peekAction = function() {\r\n return (Undo._undoStack.count > 0);\r\n };\r\n Undo.peekRedoAction = function() {\r\n return (Undo._redoStack.count > 0);\r\n };\r\n Undo.stepBack = function() {\r\n var step = Undo._undoStack.pop();\r\n step.undo();\r\n Undo._redoStack.push(step);\r\n };\r\n Undo.stepForward = function() {\r\n var step = Undo._redoStack.pop();\r\n step.redo();\r\n Undo._undoStack.push(step);\r\n };\r\n var Undo$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.UndoStep\r\n\r\n function UndoStep() {\r\n }\r\n var UndoStep$ = {\r\n undo: function() {\r\n },\r\n redo: function() {\r\n },\r\n toString: function() {\r\n return Language.getLocalizedText(551, 'Nothing to Undo');\r\n }\r\n };\r\n\r\n\r\n // wwtlib.UndoTourSlidelistChange\r\n\r\n function UndoTourSlidelistChange(text, tour) {\r\n this._currentIndex = 0;\r\n this._actionText = '';\r\n this._targetTour = null;\r\n this._undoList = [];\r\n for (var i = 0; i < tour.get_tourStops().length; i++) {\r\n this._undoList.push(tour.get_tourStops()[i]);\r\n }\r\n this._currentIndex = tour.get_currentTourstopIndex();\r\n this._actionText = text;\r\n this._targetTour = tour;\r\n this._targetTour.set_tourDirty(true);\r\n }\r\n var UndoTourSlidelistChange$ = {\r\n get_actionText: function() {\r\n return this._actionText;\r\n },\r\n set_actionText: function(value) {\r\n this._actionText = value;\r\n return value;\r\n },\r\n undo: function() {\r\n this._redoList = this._targetTour.get_tourStops();\r\n this._targetTour.set_tourStops(this._undoList);\r\n this._targetTour.set_currentTourstopIndex(this._currentIndex);\r\n this._targetTour.set_tourDirty(true);\r\n },\r\n redo: function() {\r\n this._undoList = this._targetTour.get_tourStops();\r\n this._targetTour.set_tourStops(this._redoList);\r\n this._targetTour.set_currentTourstopIndex(this._currentIndex);\r\n this._targetTour.set_tourDirty(true);\r\n },\r\n toString: function() {\r\n return this._actionText;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.UndoTourPropertiesChange\r\n\r\n function UndoTourPropertiesChange(text, tour) {\r\n this._actionText = '';\r\n this._targetTour = null;\r\n this._undoDomeMode = false;\r\n this._undoLevel = 0;\r\n this._redoDomeMode = false;\r\n this._redoLevel = 0;\r\n this._undoTitle = tour.get_title();\r\n this._undoAuthor = tour.get_author();\r\n this._undoAuthorEmail = tour.get_authorEmail();\r\n this._undoDescription = tour.get_description();\r\n this._undoAuthorImage = tour.get_authorImage();\r\n this._undoOrganizationUrl = tour.get_organizationUrl();\r\n this._undoOrgName = tour.get_orgName();\r\n this._undoKeywords = tour.get_keywords();\r\n this._undoTaxonomy = tour.get_taxonomy();\r\n this._undoLevel = tour.get_level();\r\n this._actionText = text;\r\n this._targetTour = tour;\r\n this._targetTour.set_tourDirty(true);\r\n }\r\n var UndoTourPropertiesChange$ = {\r\n get_actionText: function() {\r\n return this._actionText;\r\n },\r\n set_actionText: function(value) {\r\n this._actionText = value;\r\n return value;\r\n },\r\n undo: function() {\r\n this._redoTitle = this._targetTour.get_title();\r\n this._redoAuthor = this._targetTour.get_author();\r\n this._redoAuthorEmail = this._targetTour.get_authorEmail();\r\n this._redoDescription = this._targetTour.get_description();\r\n this._redoAuthorImage = this._targetTour.get_authorImage();\r\n this._redoOrganizationUrl = this._targetTour.get_organizationUrl();\r\n this._redoOrgName = this._targetTour.get_orgName();\r\n this._redoKeywords = this._targetTour.get_keywords();\r\n this._redoTaxonomy = this._targetTour.get_taxonomy();\r\n this._redoLevel = this._targetTour.get_level();\r\n this._targetTour.set_title(this._undoTitle);\r\n this._targetTour.set_author(this._undoAuthor);\r\n this._targetTour.set_authorEmail(this._undoAuthorEmail);\r\n this._targetTour.set_description(this._undoDescription);\r\n this._targetTour.set_authorImage(this._undoAuthorImage);\r\n this._targetTour.set_organizationUrl(this._undoOrganizationUrl);\r\n this._targetTour.set_orgName(this._undoOrgName);\r\n this._targetTour.set_keywords(this._undoKeywords);\r\n this._targetTour.set_taxonomy(this._undoTaxonomy);\r\n this._targetTour.set_level(this._undoLevel);\r\n this._targetTour.set_tourDirty(true);\r\n },\r\n redo: function() {\r\n this._targetTour.set_title(this._redoTitle);\r\n this._targetTour.set_author(this._redoAuthor);\r\n this._targetTour.set_authorEmail(this._redoAuthorEmail);\r\n this._targetTour.set_description(this._redoDescription);\r\n this._targetTour.set_authorImage(this._redoAuthorImage);\r\n this._targetTour.set_organizationUrl(this._redoOrganizationUrl);\r\n this._targetTour.set_orgName(this._redoOrgName);\r\n this._targetTour.set_keywords(this._redoKeywords);\r\n this._targetTour.set_taxonomy(this._redoTaxonomy);\r\n this._targetTour.set_level(this._redoLevel);\r\n this._targetTour.set_tourDirty(true);\r\n },\r\n toString: function() {\r\n return this._actionText;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Triangle\r\n\r\n function Triangle() {\r\n this.a = 0;\r\n this.b = 0;\r\n this.c = 0;\r\n this.a = -1;\r\n this.b = -1;\r\n this.c = -1;\r\n }\r\n Triangle.create = function(a, b, c) {\r\n var temp = new Triangle();\r\n temp.a = a;\r\n temp.b = b;\r\n temp.c = c;\r\n return temp;\r\n };\r\n var Triangle$ = {\r\n subDivide: function(triList, vertexList) {\r\n var a1 = Vector3d.lerp(vertexList[this.b].position, vertexList[this.c].position, 0.5);\r\n var b1 = Vector3d.lerp(vertexList[this.c].position, vertexList[this.a].position, 0.5);\r\n var c1 = Vector3d.lerp(vertexList[this.a].position, vertexList[this.b].position, 0.5);\r\n var a1uv = Vector2d.lerp(Vector2d.create(vertexList[this.b].tu, vertexList[this.b].tv), Vector2d.create(vertexList[this.c].tu, vertexList[this.c].tv), 0.5);\r\n var b1uv = Vector2d.lerp(Vector2d.create(vertexList[this.c].tu, vertexList[this.c].tv), Vector2d.create(vertexList[this.a].tu, vertexList[this.a].tv), 0.5);\r\n var c1uv = Vector2d.lerp(Vector2d.create(vertexList[this.a].tu, vertexList[this.a].tv), Vector2d.create(vertexList[this.b].tu, vertexList[this.b].tv), 0.5);\r\n a1.normalize();\r\n b1.normalize();\r\n c1.normalize();\r\n var aIndex = vertexList.length;\r\n var bIndex = vertexList.length + 1;\r\n var cIndex = vertexList.length + 2;\r\n vertexList.push(PositionTexture.createPosRaw(a1, a1uv.x, a1uv.y));\r\n vertexList.push(PositionTexture.createPosRaw(b1, b1uv.x, b1uv.y));\r\n vertexList.push(PositionTexture.createPosRaw(c1, c1uv.x, c1uv.y));\r\n triList.push(Triangle.create(this.a, cIndex, bIndex));\r\n triList.push(Triangle.create(this.b, aIndex, cIndex));\r\n triList.push(Triangle.create(this.c, bIndex, aIndex));\r\n triList.push(Triangle.create(aIndex, bIndex, cIndex));\r\n },\r\n subDivideNoNormalize: function(triList, vertexList) {\r\n var a1 = Vector3d.lerp(vertexList[this.b].position, vertexList[this.c].position, 0.5);\r\n var b1 = Vector3d.lerp(vertexList[this.c].position, vertexList[this.a].position, 0.5);\r\n var c1 = Vector3d.lerp(vertexList[this.a].position, vertexList[this.b].position, 0.5);\r\n var a1uv = Vector2d.lerp(Vector2d.create(vertexList[this.b].tu, vertexList[this.b].tv), Vector2d.create(vertexList[this.c].tu, vertexList[this.c].tv), 0.5);\r\n var b1uv = Vector2d.lerp(Vector2d.create(vertexList[this.c].tu, vertexList[this.c].tv), Vector2d.create(vertexList[this.a].tu, vertexList[this.a].tv), 0.5);\r\n var c1uv = Vector2d.lerp(Vector2d.create(vertexList[this.a].tu, vertexList[this.a].tv), Vector2d.create(vertexList[this.b].tu, vertexList[this.b].tv), 0.5);\r\n var aIndex = vertexList.length;\r\n var bIndex = vertexList.length + 1;\r\n var cIndex = vertexList.length + 2;\r\n vertexList.push(PositionTexture.createPosRaw(a1, a1uv.x, a1uv.y));\r\n vertexList.push(PositionTexture.createPosRaw(b1, b1uv.x, b1uv.y));\r\n vertexList.push(PositionTexture.createPosRaw(c1, c1uv.x, c1uv.y));\r\n triList.push(Triangle.create(this.a, cIndex, bIndex));\r\n triList.push(Triangle.create(this.b, aIndex, cIndex));\r\n triList.push(Triangle.create(this.c, bIndex, aIndex));\r\n triList.push(Triangle.create(aIndex, bIndex, cIndex));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.UiTools\r\n\r\n function UiTools() {\r\n }\r\n UiTools.gamma = function(val, gamma) {\r\n return Math.min(255, ss.truncate(((255 * Math.pow(val / 255, 1 / gamma)) + 0.5)));\r\n };\r\n UiTools.getNamesStringFromArray = function(array) {\r\n var names = '';\r\n var delim = '';\r\n var $enum1 = ss.enumerate(array);\r\n while ($enum1.moveNext()) {\r\n var name = $enum1.current;\r\n names += delim;\r\n names += name;\r\n delim = ';';\r\n }\r\n return names;\r\n };\r\n UiTools.solarSystemToMeters = function(SolarSystemCameraDistance) {\r\n return SolarSystemCameraDistance * 149598000 * 370;\r\n };\r\n UiTools.metersToSolarSystemDistance = function(meters) {\r\n return meters / 370 * 149598000;\r\n };\r\n UiTools.metersToZoom = function(meters) {\r\n return ((meters / 1000 / 370) - 1E-06) / 4 * 9;\r\n };\r\n UiTools.formatDistance = function(distance) {\r\n if (distance < 0.1) {\r\n var km = (distance * 149598000);\r\n if (km < 10) {\r\n var m = ss.truncate((km * 1000));\r\n return ss.format('{0} m', m);\r\n }\r\n else {\r\n km = ss.truncate(km);\r\n return ss.format('{0} km', km);\r\n }\r\n }\r\n else if (distance < (10)) {\r\n var au = ss.truncate((distance * 10)) / 10;\r\n return ss.format('{0} au', au);\r\n }\r\n else if (distance < (63239.6717 / 10)) {\r\n var au = ss.truncate(distance);\r\n return ss.format('{0} au', au);\r\n }\r\n else if (distance < (63239.6717 * 10)) {\r\n var ly = ss.truncate(((distance * 10) / 63239.6717)) / 10;\r\n return ss.format('{0} ly', ly);\r\n }\r\n else if (distance < (63239.6717 * 1000000)) {\r\n var ly = ss.truncate((distance / 63239.6717));\r\n return ss.format('{0} ly', ly);\r\n }\r\n else if (distance < (206264.806 * 10000000)) {\r\n var mpc = ss.truncate(((distance * 10) / (206264.806 * 1000000))) / 10;\r\n return ss.format('{0} Mpc', mpc);\r\n }\r\n else if (distance < (206264.806 * 1000000000)) {\r\n var mpc = ss.truncate((distance / (206264.806 * 1000000)));\r\n return ss.format('{0} Mpc', mpc);\r\n }\r\n else {\r\n var mpc = ss.truncate(((distance * 10) / (206264.806 * 1000000000))) / 10;\r\n return ss.format('{0} Gpc', mpc);\r\n }\r\n };\r\n UiTools.formatDecimalHours = function(dayFraction) {\r\n var today = ss.now();\r\n var ts = today.getTimezoneOffset() / 60;\r\n ts = 0;\r\n var day = (dayFraction - ts) + 0.0083333334;\r\n while (day > 24) {\r\n day -= 24;\r\n }\r\n while (day < 0) {\r\n day += 24;\r\n }\r\n var hours = ss.truncate(day);\r\n var minutes = ss.truncate(((day * 60) - (hours * 60)));\r\n var seconds = ss.truncate(((day * 3600) - ((hours * 3600) + (minutes * 60))));\r\n return ss.format('{0}:{1}', hours, minutes, seconds);\r\n };\r\n UiTools.splitString = function(data, delimiter) {\r\n var output = [];\r\n var nestingLevel = 0;\r\n var current = 0;\r\n var count = 0;\r\n var start = 0;\r\n while (current < data.length) {\r\n if (data.substr(current, 1) === '(') {\r\n nestingLevel++;\r\n }\r\n if (data.substr(current, 1) === ')') {\r\n nestingLevel--;\r\n }\r\n if (current === (data.length - 1)) {\r\n if (data.substr(current, 1) === delimiter) {\r\n output.push(data.substr(start, count));\r\n output.push('');\r\n return output;\r\n }\r\n else {\r\n count++;\r\n }\r\n }\r\n if (current === (data.length - 1) || (data.substr(current, 1) === delimiter && delimiter === '\\t') || (!nestingLevel && data.substr(current, 1) === delimiter)) {\r\n output.push(data.substr(start, count));\r\n start = current + 1;\r\n count = 0;\r\n }\r\n else {\r\n count++;\r\n }\r\n current++;\r\n }\r\n return output;\r\n };\r\n UiTools.split = function(data, delimiters) {\r\n var output = [];\r\n var nestingLevel = 0;\r\n var current = 0;\r\n var count = 0;\r\n var start = 0;\r\n while (current < data.length) {\r\n if (current === (data.length - 1)) {\r\n count++;\r\n }\r\n if (current === (data.length - 1) || delimiters.indexOf(data.substr(current, 1)) > -1) {\r\n output.push(data.substr(start, count));\r\n start = current + 1;\r\n count = 0;\r\n }\r\n else {\r\n count++;\r\n }\r\n current++;\r\n }\r\n return output;\r\n };\r\n UiTools._beep = function() {\r\n };\r\n var UiTools$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Util\r\n\r\n function Util() {\r\n }\r\n Util.splitString = function(target, split) {\r\n var parts = [];\r\n var start = 0;\r\n var end = 0;\r\n for (var i = 0; i < target.length; i++) {\r\n var found = false;\r\n for (var j = 0; j < split.length; j++) {\r\n if (target[i] === split[j]) {\r\n parts.push(target.substring(start, end - start));\r\n found = true;\r\n continue;\r\n }\r\n start = i + 1;\r\n end = i + 1;\r\n }\r\n if (!found) {\r\n end++;\r\n }\r\n }\r\n if (end > start) {\r\n parts.push(target.substring(start, end - start));\r\n }\r\n return parts;\r\n };\r\n Util.stringContains = function(target, chars) {\r\n for (var i = 0; i < chars.length; i++) {\r\n if (target.indexOf(chars[i]) > -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Util.getHashCode = function(target) {\r\n var hash = 0;\r\n if (!target.length) {\r\n return hash;\r\n }\r\n for (var i = 0; i < target.length; i++) {\r\n var c = target.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + c;\r\n }\r\n return hash;\r\n };\r\n Util.compare = function(l, r) {\r\n if (l === r) {\r\n return 0;\r\n }\r\n if (l > r) {\r\n return 1;\r\n }\r\n return -1;\r\n };\r\n Util.logN = function(num, b) {\r\n return Math.log(num) / Math.log(b);\r\n };\r\n Util.parseTimeSpan = function(timespan) {\r\n var val = 0;\r\n var parts = timespan.split(':');\r\n if (parts.length === 3) {\r\n val += parseInt(parts[0]) * 36000000;\r\n val += parseInt(parts[1]) * 600000;\r\n val += ss.truncate((parseFloat(parts[2]) * 1000));\r\n }\r\n return val;\r\n };\r\n Util.xmlDuration = function(duration) {\r\n var s = duration / 1000;\r\n var hours = Math.floor(s / 3600);\r\n var min = Math.floor(s / 60) - (hours * 60);\r\n var sec = s - ((hours * 3600) + min * 60);\r\n return ss.format('{0}:{1}:{2}', hours, min, sec);\r\n };\r\n Util.xmlDate = function(d) {\r\n var hours = d.getHours();\r\n var amPm = 'AM';\r\n if (hours > 12) {\r\n hours -= 12;\r\n amPm = 'PM';\r\n }\r\n return (d.getMonth() + 1).toString() + '/' + d.getDate().toString() + '/' + d.getFullYear().toString() + ' ' + hours.toString() + ':' + d.getMinutes().toString() + ':' + d.getSeconds().toString() + ' ' + amPm;\r\n };\r\n Util.selectSingleNode = function(parent, name) {\r\n var node = null;\r\n var $enum1 = ss.enumerate(parent.childNodes);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (child.nodeName === name) {\r\n node = child;\r\n break;\r\n }\r\n }\r\n return node;\r\n };\r\n Util.getInnerText = function(node) {\r\n if (ss.emptyString(node.text)) {\r\n var cn = node;\r\n return cn.textContent;\r\n }\r\n else {\r\n return node.text;\r\n }\r\n };\r\n Util.getWrappedText = function(ctx, text, width) {\r\n var lines = [];\r\n lines.push(text);\r\n return lines;\r\n };\r\n Util.toHex = function(number) {\r\n var num = Math.max(0, Math.min(ss.truncate(number), 255));\r\n return '0123456789ABCDEF'.substr((num - num % 16) / 16, 1) + '0123456789ABCDEF'.substr(num % 16, 1);\r\n };\r\n Util.fromHex = function(data) {\r\n var val = 0;\r\n switch (data.substr(1, 1).toUpperCase()) {\r\n case 'A':\r\n val += 10;\r\n break;\r\n case 'B':\r\n val += 11;\r\n break;\r\n case 'C':\r\n val += 12;\r\n break;\r\n case 'D':\r\n val += 13;\r\n break;\r\n case 'E':\r\n val += 14;\r\n break;\r\n case 'F':\r\n val += 15;\r\n break;\r\n default:\r\n val += parseInt(data.substr(1, 1));\r\n break;\r\n }\r\n switch (data.substr(0, 1).toUpperCase()) {\r\n case 'A':\r\n val += 10 * 16;\r\n break;\r\n case 'B':\r\n val += 11 * 16;\r\n break;\r\n case 'C':\r\n val += 12 * 16;\r\n break;\r\n case 'D':\r\n val += 13 * 16;\r\n break;\r\n case 'E':\r\n val += 14 * 16;\r\n break;\r\n case 'F':\r\n val += 15 * 16;\r\n break;\r\n default:\r\n val += parseInt(data.substr(0, 1)) * 16;\r\n break;\r\n }\r\n return val;\r\n };\r\n Util._openUrl = function(url) {\r\n window.open(url);\r\n };\r\n Util.log10 = function(num) {\r\n return Math.log(num) / 2.30258509299405;\r\n };\r\n Util.sign = function(num) {\r\n if (num < 0) {\r\n return -1;\r\n }\r\n return 1;\r\n };\r\n var Util$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Rectangle\r\n\r\n function Rectangle() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n Rectangle.create = function(x, y, width, height) {\r\n var temp = new Rectangle();\r\n temp.x = x;\r\n temp.y = y;\r\n temp.width = width;\r\n temp.height = height;\r\n return temp;\r\n };\r\n var Rectangle$ = {\r\n get_left: function() {\r\n return this.x;\r\n },\r\n get_right: function() {\r\n return this.x + this.width;\r\n },\r\n get_top: function() {\r\n return this.y;\r\n },\r\n get_bottom: function() {\r\n return this.y + this.height;\r\n },\r\n contains: function(point) {\r\n return (this._between(point.x, this.x, this.x + this.width) && this._between(point.y, this.y, this.y + this.height));\r\n },\r\n _between: function(n, n1, n2) {\r\n if (n1 > n2) {\r\n return !(n > n1) && !(n < n2);\r\n }\r\n else {\r\n return !(n < n1) && !(n > n2);\r\n }\r\n },\r\n copy: function() {\r\n var temp = new Rectangle();\r\n temp.x = this.x;\r\n temp.y = this.y;\r\n temp.width = this.width;\r\n temp.height = this.height;\r\n return temp;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Guid\r\n\r\n function Guid() {\r\n this._guid = Guid.create();\r\n }\r\n Guid.newGuid = function() {\r\n return new Guid();\r\n };\r\n Guid.fromString = function(id) {\r\n var temp = new Guid();\r\n temp._guid = ss.trim(id);\r\n return temp;\r\n };\r\n Guid.create = function() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });;\r\n };\r\n Guid.createFrom = function(value) {\r\n var str = uuid.v5(value, '1420736a-a637-40a7-813a-ba692e72204e');\r\n return Guid.fromString(str);\r\n };\r\n var Guid$ = {\r\n toString: function() {\r\n return this._guid;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Enums\r\n\r\n function Enums() {\r\n }\r\n Enums.parse = function(enumType, value) {\r\n if (value === 'Default') {\r\n value = 'DefaultV';\r\n }\r\n if (value === '0') {\r\n return 0;\r\n }\r\n var val = value.substr(0, 1).toLowerCase() + value.substr(1);\r\n return this._wwtlib[enumType][val];\r\n };\r\n Enums.toXml = function(enumType, value) {\r\n var x = \"0\"; var p = Object.keys(this._wwtlib[enumType]); for (var i in p)\n { if ( this._wwtlib[enumType][p[i]] == value ) {\n x = p[i]; break; \n}\n };\r\n var val = x;\r\n var enumString = val.substr(0, 1).toUpperCase() + val.substr(1);\r\n if (enumString === 'DefaultV') {\r\n enumString = 'Default';\r\n }\r\n return enumString;\r\n };\r\n var Enums$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Mouse\r\n\r\n function Mouse() {\r\n }\r\n Mouse.offsetX = function(canvas, e) {\r\n var x = 0;\r\n var element = canvas;\r\n var me = e;\r\n if (element.offsetParent != null) {\r\n do {\r\n x += element.offsetLeft;\r\n } while ((element = element.offsetParent) != null);\r\n }\r\n return me.pageX - x;\r\n };\r\n Mouse.offsetY = function(canvas, e) {\r\n var y = 0;\r\n var element = canvas;\r\n var me = e;\r\n if (element.offsetParent != null) {\r\n do {\r\n y += element.offsetTop;\r\n } while ((element = element.offsetParent) != null);\r\n }\r\n return me.pageY - y;\r\n };\r\n\r\n\r\n // wwtlib.Language\r\n\r\n function Language() {\r\n }\r\n Language.getLocalizedText = function(id, text) {\r\n return text;\r\n };\r\n var Language$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Cursor\r\n\r\n function Cursor() {\r\n }\r\n Cursor.get_position = function() {\r\n return new Vector2d();\r\n };\r\n Cursor.get_current = function() {\r\n return document.body.style.cursor;\r\n };\r\n Cursor.set_current = function(value) {\r\n document.body.style.cursor = value;\r\n return value;\r\n };\r\n var Cursor$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Cursors\r\n\r\n function Cursors() {\r\n }\r\n Cursors.get_arrow = function() {\r\n return 'default';\r\n };\r\n Cursors.get_cross = function() {\r\n return 'crosshair';\r\n };\r\n Cursors.get_defaultV = function() {\r\n return 'default';\r\n };\r\n Cursors.get_hand = function() {\r\n return 'grab';\r\n };\r\n Cursors.get_help = function() {\r\n return 'help';\r\n };\r\n Cursors.get_hSplit = function() {\r\n return 'row-resize';\r\n };\r\n Cursors.get_iBeam = function() {\r\n return 'text';\r\n };\r\n Cursors.get_no = function() {\r\n return 'not-allowed';\r\n };\r\n Cursors.get_sizeAll = function() {\r\n return 'help';\r\n };\r\n Cursors.get_sizeNESW = function() {\r\n return 'nwse-resize';\r\n };\r\n Cursors.get_sizeNS = function() {\r\n return 'ns-resize';\r\n };\r\n Cursors.get_sizeNWSE = function() {\r\n return 'nwse-resize';\r\n };\r\n Cursors.get_sizeWE = function() {\r\n return 'ew-resize';\r\n };\r\n Cursors.get_upArrow = function() {\r\n return 'help';\r\n };\r\n Cursors.get_vSplit = function() {\r\n return 'col-resize';\r\n };\r\n Cursors.get_waitCursor = function() {\r\n return 'wait';\r\n };\r\n var Cursors$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.SelectLink\r\n\r\n function SelectLink(id) {\r\n this._return = false;\r\n this._next = true;\r\n this._linkSlide = false;\r\n this._slide = null;\r\n this._ok = false;\r\n if (id != null) {\r\n this.set_id(id);\r\n }\r\n else {\r\n this.set_next(true);\r\n }\r\n }\r\n var SelectLink$ = {\r\n get_returnCaller: function() {\r\n return this._return;\r\n },\r\n set_returnCaller: function(value) {\r\n if (value) {\r\n this._slide = 'Return';\r\n }\r\n this._return = value;\r\n return value;\r\n },\r\n get_next: function() {\r\n return this._next;\r\n },\r\n set_next: function(value) {\r\n if (value) {\r\n this._slide = 'Next';\r\n }\r\n this._next = value;\r\n return value;\r\n },\r\n get_linkToSlide: function() {\r\n return this._linkSlide;\r\n },\r\n set_linkToSlide: function(value) {\r\n if (value) {\r\n this._slide = 'Next';\r\n }\r\n this._linkSlide = value;\r\n return value;\r\n },\r\n get_id: function() {\r\n return this._slide;\r\n },\r\n set_id: function(value) {\r\n this._return = false;\r\n this._next = false;\r\n this._linkSlide = true;\r\n this._slide = value;\r\n return value;\r\n },\r\n get_OK: function() {\r\n return this._ok;\r\n },\r\n set_OK: function(value) {\r\n this._ok = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PopupVolume\r\n\r\n function PopupVolume() {\r\n this.volume = 0;\r\n }\r\n var PopupVolume$ = {\r\n showDialog: function() {\r\n return 1;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PopupColorPicker\r\n\r\n function PopupColorPicker() {\r\n this.volume = 0;\r\n this.location = new Vector2d();\r\n this.color = new Color();\r\n }\r\n var PopupColorPicker$ = {\r\n showDialog: function() {\r\n return 1;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.OverlayProperties\r\n\r\n function OverlayProperties() {\r\n this.volume = 0;\r\n this.location = new Vector2d();\r\n this.overlay = null;\r\n }\r\n var OverlayProperties$ = {\r\n showDialog: function() {\r\n return 1;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.BinaryReader\r\n\r\n function BinaryReader(arraybuf) {\r\n this.position = 0;\r\n this._data = null;\r\n this._data = arraybuf;\r\n }\r\n var BinaryReader$ = {\r\n get_position: function() {\r\n return this.position;\r\n },\r\n seek: function(pos) {\r\n this.position = pos;\r\n },\r\n seekRelative: function(pos) {\r\n this.position += pos;\r\n },\r\n get_length: function() {\r\n return this._data.length;\r\n },\r\n get_endOfStream: function() {\r\n return this.position >= this.get_length();\r\n },\r\n readByte: function() {\r\n var result;\r\n result = this._data[this.position];\r\n this.position += 1;\r\n return result;\r\n },\r\n readSByte: function() {\r\n var result;\r\n result = this._data[this.position];\r\n this.position += 1;\r\n return result;\r\n },\r\n readBytes: function(count) {\r\n var buf = new Array(count);\r\n for (var i = 0; i < count; i++) {\r\n buf[i] = this._data[this.position + i];\r\n }\r\n this.position += count;\r\n return buf;\r\n },\r\n readRemainingI16: function(i16Remaining) {\r\n var data = new Float32Array(i16Remaining);\r\n for (var i = 0; i < i16Remaining; i++) {\r\n data[i] = this.readInt16(true);\r\n }\r\n return data;\r\n },\r\n readByteString: function(count) {\r\n var data = '';\r\n for (var i = 0; i < count; i++) {\r\n data += String.fromCharCode(this._data[this.position + i]);\r\n }\r\n this.position += count;\r\n return data;\r\n },\r\n readSingle: function() {\r\n var tmp = new Uint8Array(4);\r\n tmp[0] = this._data[this.position];\r\n tmp[1] = this._data[this.position + 1];\r\n tmp[2] = this._data[this.position + 2];\r\n tmp[3] = this._data[this.position + 3];\r\n var result = new Float32Array(tmp.buffer, 0, 1)[0];\r\n this.position += 4;\r\n return result;\r\n },\r\n readUInt32: function() {\r\n var result = (this._data[this.position] + (this._data[this.position + 1] << 8) + (this._data[this.position + 2] << 16) + (this._data[this.position + 3] << 24));\r\n this.position += 4;\r\n return result;\r\n },\r\n readUInt16: function() {\r\n var result = (this._data[this.position] + (this._data[this.position + 1] << 8));\r\n this.position += 2;\r\n return result;\r\n },\r\n readUInt16LittleEndian: function() {\r\n var result = ((this._data[this.position] << 8) + this._data[this.position + 1]);\r\n this.position += 2;\r\n return result;\r\n },\r\n readInt16: function(littleEndian) {\r\n var result = (littleEndian) ? this.readUInt16LittleEndian() : this.readUInt16();\r\n if (!!(result & 32768)) {\r\n return (-((result - 1) ^ 65535));\r\n }\r\n return result;\r\n },\r\n readInt32: function() {\r\n var result = this.readUInt32();\r\n if (!!(result & 2147483648)) {\r\n return (-((result - 1) ^ 4294967295));\r\n }\r\n return result;\r\n },\r\n readInt64: function() {\r\n this.position += 8;\r\n return BinaryReader.id++;\r\n },\r\n close: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Bitmap\r\n\r\n function Bitmap() {\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n Bitmap.create = function(width, height) {\r\n height = Texture.fitPowerOfTwo(height);\r\n width = Texture.fitPowerOfTwo(width);\r\n var bmp = new Bitmap();\r\n bmp.height = height;\r\n bmp.width = width;\r\n bmp._buffer = new Uint8Array(width * height * 4);\r\n return bmp;\r\n };\r\n var Bitmap$ = {\r\n setPixel: function(x, y, r, g, b, a) {\r\n var index = (x + y * this.width) * 4;\r\n this._buffer[index++] = r;\r\n this._buffer[index++] = g;\r\n this._buffer[index++] = b;\r\n this._buffer[index++] = a;\r\n },\r\n getTexture: function() {\r\n var tex = Tile.prepDevice.createTexture();\r\n Tile.prepDevice.bindTexture(3553, tex);\r\n Tile.prepDevice.texParameteri(3553, 10242, 33071);\r\n Tile.prepDevice.texParameteri(3553, 10243, 33071);\r\n Tile.prepDevice.texImage2D(3553, 0, 6408, this.width, this.height, 0, 6408, 5121, this._buffer);\r\n Tile.prepDevice.texParameteri(3553, 10241, 9985);\r\n Tile.prepDevice.generateMipmap(3553);\r\n Tile.prepDevice.bindTexture(3553, null);\r\n return tex;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ColorPicker\r\n\r\n function ColorPicker() {\r\n this.callBack = null;\r\n this.color = Colors.get_white();\r\n }\r\n var ColorPicker$ = {\r\n nonMenuClick: function(e) {\r\n },\r\n show: function(e) {\r\n WWTControl.scriptInterface.showColorPicker(this, e);\r\n },\r\n getColorFromClick: function(e) {\r\n var image = document.getElementById('colorhex');\r\n var canvas = document.createElement('canvas');\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(image, 0, 0);\r\n var pixels = ctx.getImageData(e.offsetX, e.offsetY, 1, 1).data;\r\n this.color = Color.fromArgb(pixels[3], pixels[0], pixels[1], pixels[2]);\r\n return this.color;\r\n },\r\n pickColor: function(e) {\r\n this.callBack(this.color);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ContextMenuStrip\r\n\r\n function ContextMenuStrip() {\r\n this.items = [];\r\n }\r\n var ContextMenuStrip$ = {\r\n _dispose: function() {\r\n },\r\n _nonMenuClick: function(e) {\r\n var menu = document.getElementById('contextmenu');\r\n menu.style.display = 'none';\r\n window.removeEventListener('click', ss.bind('_nonMenuClick', this), false);\r\n var popup = document.getElementById('popoutmenu');\r\n while (popup.firstChild != null) {\r\n popup.removeChild(popup.firstChild);\r\n }\r\n popup.style.display = 'none';\r\n },\r\n _menuItemClicked: function(e) {\r\n var me = e.currentTarget;\r\n me.itemTag.click(me.itemTag, new ss.EventArgs());\r\n },\r\n _show: function(position) {\r\n var menu = document.getElementById('contextmenu');\r\n while (menu.firstChild != null) {\r\n menu.removeChild(menu.firstChild);\r\n }\r\n menu.className = 'contextmenu';\r\n menu.style.display = 'block';\r\n menu.style.left = position.x.toString() + 'px';\r\n menu.style.top = position.y.toString() + 'px';\r\n window.addEventListener('click', ss.bind('_nonMenuClick', this), true);\r\n var $enum1 = ss.enumerate(this.items);\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (item.visible) {\r\n var md = document.createElement('div');\r\n if (item.dropDownItems.length > 0) {\r\n md.className = 'contextmenuitem submenu';\r\n }\r\n else {\r\n if (item.checked) {\r\n md.className = 'contextmenuitem checkedmenu';\r\n }\r\n else {\r\n md.className = 'contextmenuitem';\r\n }\r\n }\r\n md.innerText = item.name;\r\n var it = md;\r\n it.itemTag = item;\r\n md.addEventListener('mouseover', ss.bind('_openSubMenu', this), false);\r\n if (item.click != null) {\r\n md.addEventListener('click', ss.bind('_menuItemClicked', this), false);\r\n }\r\n menu.appendChild(md);\r\n }\r\n }\r\n },\r\n _openSubMenu: function(e) {\r\n var me = e.currentTarget;\r\n var child = me.itemTag;\r\n var menu = document.getElementById('popoutmenu');\r\n while (menu.firstChild != null) {\r\n menu.removeChild(menu.firstChild);\r\n }\r\n menu.style.display = 'none';\r\n if (!child.dropDownItems.length) {\r\n return;\r\n }\r\n var position = new Vector2d();\r\n position.x = e.currentTarget.parentNode.offsetLeft + e.currentTarget.parentNode.clientWidth;\r\n position.y = e.currentTarget.parentNode.offsetTop + e.currentTarget.offsetTop;\r\n menu.className = 'contextmenu';\r\n menu.style.display = 'block';\r\n menu.style.left = position.x.toString() + 'px';\r\n menu.style.top = position.y.toString() + 'px';\r\n window.addEventListener('click', ss.bind('_nonMenuClick', this), true);\r\n var $enum1 = ss.enumerate(child.dropDownItems);\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (item.visible) {\r\n var md = document.createElement('div');\r\n md.className = (item.checked) ? 'contextmenuitem checkedmenu' : 'contextmenuitem';\r\n md.innerText = item.name;\r\n var it = md;\r\n it.itemTag = item;\r\n md.addEventListener('click', ss.bind('_menuItemClicked', this), false);\r\n menu.appendChild(md);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ToolStripMenuItem\r\n\r\n function ToolStripMenuItem() {\r\n this.tag = null;\r\n this.dropDownItems = [];\r\n this.checked = false;\r\n this.enabled = true;\r\n this.visible = true;\r\n }\r\n ToolStripMenuItem.create = function(name) {\r\n var tsmi = new ToolStripMenuItem();\r\n tsmi.name = name;\r\n return tsmi;\r\n };\r\n var ToolStripMenuItem$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.TagMe\r\n\r\n function TagMe() {\r\n }\r\n var TagMe$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Dialog\r\n\r\n function Dialog() {\r\n }\r\n var Dialog$ = {\r\n add_showDialogHook: function(value) {\r\n this.__showDialogHook = ss.bindAdd(this.__showDialogHook, value);\r\n },\r\n remove_showDialogHook: function(value) {\r\n this.__showDialogHook = ss.bindSub(this.__showDialogHook, value);\r\n },\r\n show: function(dialogArgs, e) {\r\n if (this.__showDialogHook != null) {\r\n this.__showDialogHook(dialogArgs, e);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Histogram\r\n\r\n function Histogram() {\r\n this.image = null;\r\n this.layer = null;\r\n this.tile = null;\r\n this._dropDown = null;\r\n this._downPosition = 0;\r\n this._lowPosition = 0;\r\n this._highPosition = 255;\r\n this._center = 127;\r\n this._ignoreNextClick = false;\r\n this._dragType = 4;\r\n this._updated = false;\r\n this.selectedCurveStyle = 0;\r\n }\r\n Histogram.updateImage = function(isl, z) {\r\n if (!RenderContext.useGlVersion2) {\r\n var image = ss.safeCast(isl.get_imageSet().get_wcsImage(), FitsImageJs);\r\n var Tile = TileCache.getTile(0, 0, 0, isl.get_imageSet(), null);\r\n Tile.texture2d = image.getBitmap().getTexture();\r\n }\r\n };\r\n Histogram.updateScale = function(isl, scale, low, hi) {\r\n isl.get_imageSet().get_fitsProperties().scaleType = scale;\r\n isl.get_imageSet().get_fitsProperties().lowerCut = low;\r\n isl.get_imageSet().get_fitsProperties().upperCut = hi;\r\n if (!RenderContext.useGlVersion2) {\r\n var image = ss.safeCast(isl.get_imageSet().get_wcsImage(), FitsImageJs);\r\n var Tile = TileCache.getTile(0, 0, 0, isl.get_imageSet(), null);\r\n Tile.texture2d = image.getBitmap().getTexture();\r\n }\r\n };\r\n Histogram.updateColorMapper = function(isl, colorMapperName) {\r\n isl.get_imageSet().get_fitsProperties().colorMapName = colorMapperName;\r\n if (!RenderContext.useGlVersion2) {\r\n var image = ss.safeCast(isl.get_imageSet().get_wcsImage(), FitsImageJs);\r\n var Tile = TileCache.getTile(0, 0, 0, isl.get_imageSet(), null);\r\n Tile.texture2d = image.getBitmap().getTexture();\r\n }\r\n };\r\n var Histogram$ = {\r\n close: function(e) {\r\n var menu = document.getElementById('histogram');\r\n var closeBtn = document.getElementById('histogramClose');\r\n menu.style.display = 'none';\r\n window.removeEventListener('click', ss.bind('close', this), true);\r\n var image = document.getElementById('graph');\r\n image.removeEventListener('mousedown', ss.bind('onPointerDown', this), false);\r\n image.removeEventListener('mousemove', ss.bind('onPointerMove', this), false);\r\n image.removeEventListener('mouseup', ss.bind('onPointerUp', this), false);\r\n this._dropDown.removeEventListener('change', ss.bind('curveStyleSelected', this), false);\r\n this._dropDown.removeEventListener('click', ss.bind('ignoreMe', this), true);\r\n },\r\n show: function(position) {\r\n this.tile = TileCache.getTile(0, 0, 0, this.layer.get_imageSet(), null);\r\n var picker = document.getElementById('histogram');\r\n var closeBtn = document.getElementById('histogramClose');\r\n picker.style.display = 'block';\r\n picker.style.left = position.x.toString() + 'px';\r\n picker.style.top = position.y.toString() + 'px';\r\n this.selectedCurveStyle = this.layer.get_imageSet().get_fitsProperties().scaleType;\r\n this._dropDown = document.getElementById('ScaleTypePicker');\r\n this._dropDown.addEventListener('change', ss.bind('curveStyleSelected', this), false);\r\n this._dropDown.addEventListener('click', ss.bind('ignoreMe', this), true);\r\n var canvas = document.getElementById('graph');\r\n canvas.addEventListener('pointerdown', ss.bind('onPointerDown', this), false);\r\n canvas.addEventListener('pointermove', ss.bind('onPointerMove', this), false);\r\n canvas.addEventListener('pointerup', ss.bind('onPointerUp', this), false);\r\n closeBtn.addEventListener('click', ss.bind('close', this), true);\r\n this.draw();\r\n },\r\n ignoreMe: function(e) {\r\n this._ignoreNextClick = true;\r\n },\r\n curveStyleSelected: function(e) {\r\n this.selectedCurveStyle = this._dropDown.selectedIndex;\r\n this.setUpdateTimer();\r\n this.layer.get_imageSet().get_fitsProperties().scaleType = this.selectedCurveStyle;\r\n this.draw();\r\n this._ignoreNextClick = true;\r\n },\r\n onPointerDown: function(e) {\r\n var canvas = document.getElementById('graph');\r\n var x = Mouse.offsetX(canvas, e);\r\n var y = Mouse.offsetY(canvas, e);\r\n canvas.setPointerCapture(e.pointerId);\r\n if ((Math.abs(x - this._center) < 10) && Math.abs(y - 75) < 10) {\r\n this._dragType = 3;\r\n }\r\n else if (Math.abs(x - this._lowPosition) < 10) {\r\n this._dragType = 0;\r\n }\r\n else if (Math.abs(x - this._highPosition) < 10) {\r\n this._dragType = 1;\r\n }\r\n else {\r\n this._dragType = 2;\r\n this._downPosition = Math.min(255, Math.max(0, x));\r\n this.draw();\r\n }\r\n e.cancelBubble = true;\r\n },\r\n onPointerMove: function(e) {\r\n var canvas = document.getElementById('graph');\r\n var x = Mouse.offsetX(canvas, e);\r\n var y = Mouse.offsetY(canvas, e);\r\n switch (this._dragType) {\r\n case 0:\r\n this._lowPosition = Math.min(255, Math.max(0, x));\r\n break;\r\n case 1:\r\n this._highPosition = Math.min(255, Math.max(0, x));\r\n break;\r\n case 2:\r\n this._lowPosition = this._downPosition;\r\n this._highPosition = Math.min(255, Math.max(0, x));\r\n break;\r\n case 3:\r\n var hWidth = Math.abs(this._highPosition - this._lowPosition) / 2;\r\n var adCenter = Math.min(255 - hWidth, Math.max(hWidth, x));\r\n var moved = this._center - adCenter;\r\n this._lowPosition -= moved;\r\n this._highPosition -= moved;\r\n break;\r\n case 4:\r\n return;\r\n default:\r\n break;\r\n }\r\n this._center = (this._lowPosition + this._highPosition) / 2;\r\n this.draw();\r\n var factor = (this.layer.get_imageSet().get_fitsProperties().maxVal - this.layer.get_imageSet().get_fitsProperties().minVal) / 256;\r\n var low = this.layer.get_imageSet().get_fitsProperties().minVal + (this._lowPosition * factor);\r\n var hi = this.layer.get_imageSet().get_fitsProperties().minVal + (this._highPosition * factor);\r\n this.setUpdateTimer();\r\n this.layer.get_imageSet().get_fitsProperties().upperCut = hi;\r\n this.layer.get_imageSet().get_fitsProperties().lowerCut = low;\r\n this.layer.get_imageSet().get_fitsProperties().scaleType = this.selectedCurveStyle;\r\n e.cancelBubble = true;\r\n },\r\n onPointerUp: function(e) {\r\n e.srcElement.releasePointerCapture(e.pointerId);\r\n if (this._dragType !== 4) {\r\n this._dragType = 4;\r\n this.setUpdateTimer();\r\n this._ignoreNextClick = true;\r\n }\r\n e.cancelBubble = true;\r\n },\r\n setUpdateTimer: function() {\r\n var $this = this;\r\n\r\n if (!RenderContext.useGlVersion2) {\r\n setTimeout(function() {\r\n $this.update();\r\n }, 500);\r\n this._updated = false;\r\n }\r\n },\r\n update: function() {\r\n if (this._updated) {\r\n return;\r\n }\r\n if (ss.canCast(this.image, FitsImageJs)) {\r\n var factor = (this.layer.get_imageSet().get_fitsProperties().maxVal - this.layer.get_imageSet().get_fitsProperties().minVal) / 256;\r\n var low = this.layer.get_imageSet().get_fitsProperties().minVal + (this._lowPosition * factor);\r\n var hi = this.layer.get_imageSet().get_fitsProperties().minVal + (this._highPosition * factor);\r\n this.tile.texture2d = (this.image).getScaledBitmap(low, hi, this.selectedCurveStyle, 0, null).getTexture();\r\n }\r\n this._updated = true;\r\n },\r\n draw: function() {\r\n var canvas = document.getElementById('graph');\r\n var ctx = canvas.getContext('2d');\r\n if (this.image != null) {\r\n this.image.drawHistogram(ctx);\r\n }\r\n var red = 'rgba(255,0,0,255)';\r\n var green = 'rgba(0,255,0,255)';\r\n var blue = 'rgba(0,0,255,255)';\r\n ctx.strokeStyle = red;\r\n ctx.beginPath();\r\n ctx.moveTo(this._lowPosition, 0);\r\n ctx.lineTo(this._lowPosition, 150);\r\n ctx.stroke();\r\n ctx.strokeStyle = green;\r\n ctx.beginPath();\r\n ctx.moveTo(this._highPosition, 0);\r\n ctx.lineTo(this._highPosition, 150);\r\n ctx.stroke();\r\n ctx.strokeStyle = blue;\r\n ctx.beginPath();\r\n ctx.arc(this._center, 75, 10, 0, Math.PI * 2, false);\r\n ctx.closePath();\r\n ctx.stroke();\r\n var Curve = [];\r\n switch (this.selectedCurveStyle) {\r\n case 0:\r\n Curve.length = 0;\r\n Curve.push(Vector2d.create(this._lowPosition, 150));\r\n Curve.push(Vector2d.create(this._highPosition, 0));\r\n break;\r\n case 1:\r\n Curve.length = 0;\r\n var factor = 150 / Math.log(255);\r\n var diff = (this._highPosition - this._lowPosition);\r\n var jump = (diff < 0) ? -1 : 1;\r\n var step = Math.abs(256 / ((!diff) ? 1E-06 : diff));\r\n var val = 1E-06;\r\n for (var i = this._lowPosition; i !== this._highPosition; i += jump) {\r\n Curve.push(Vector2d.create(i, (150 - (Math.log(val) * factor))));\r\n val += step;\r\n }\r\n break;\r\n case 2:\r\n Curve.length = 0;\r\n var factor = 150 / Math.pow(255, 2);\r\n var diff = (this._highPosition - this._lowPosition);\r\n var jump = (diff < 0) ? -1 : 1;\r\n var step = Math.abs(256 / ((!diff) ? 1E-06 : diff));\r\n var val = 1E-06;\r\n for (var i = this._lowPosition; i !== this._highPosition; i += jump) {\r\n Curve.push(Vector2d.create(i, (150 - (Math.pow(val, 2) * factor))));\r\n val += step;\r\n }\r\n break;\r\n case 3:\r\n Curve.length = 0;\r\n var factor = 150 / Math.sqrt(255);\r\n var diff = (this._highPosition - this._lowPosition);\r\n var jump = (diff < 0) ? -1 : 1;\r\n var step = Math.abs(256 / ((!diff) ? 1E-06 : diff));\r\n var val = 1E-06;\r\n for (var i = this._lowPosition; i !== this._highPosition; i += jump) {\r\n Curve.push(Vector2d.create(i, (150 - (Math.sqrt(val) * factor))));\r\n val += step;\r\n }\r\n break;\r\n }\r\n if (Curve.length > 1) {\r\n ctx.beginPath();\r\n ctx.strokeStyle = blue;\r\n ctx.moveTo(Curve[0].x, Curve[0].y);\r\n for (var i = 1; i < Curve.length; i++) {\r\n ctx.lineTo(Curve[i].x, Curve[i].y);\r\n }\r\n ctx.stroke();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SimpleInput\r\n\r\n function SimpleInput(title, label, text, v3) {\r\n this.title = 'Tile';\r\n this.label = 'Enter Text Below';\r\n this.text = '';\r\n this._textElement = null;\r\n this._ignoreNextClick = false;\r\n this.title = title;\r\n this.label = label;\r\n this.text = text;\r\n }\r\n var SimpleInput$ = {\r\n showDialog: function() {\r\n return 1;\r\n },\r\n nonMenuClick: function(e) {\r\n if (!this._ignoreNextClick) {\r\n this._close();\r\n }\r\n this._ignoreNextClick = false;\r\n },\r\n show: function(position, callback) {\r\n var simpleInputElement = document.getElementById('simpleinput');\r\n var modalElement = document.getElementById('simplemodal');\r\n modalElement.style.display = 'block';\r\n simpleInputElement.style.display = 'block';\r\n simpleInputElement.style.marginLeft = position.x.toString() + 'px';\r\n simpleInputElement.style.marginTop = position.y.toString() + 'px';\r\n this._textElement = document.getElementById('inputtext');\r\n this._textElement.value = this.text;\r\n var titleDiv = document.getElementById('simpletitle');\r\n var labelDiv = document.getElementById('inputlabel');\r\n titleDiv.innerText = this.title;\r\n labelDiv.innerText = this.label;\r\n this._textElement.addEventListener('change', ss.bind('textChanged', this), false);\r\n this._textElement.addEventListener('click', ss.bind('ignoreMe', this), true);\r\n var okButton = document.getElementById('simpleinputok');\r\n var cancelButton = document.getElementById('simpleinputcancel');\r\n okButton.addEventListener('click', ss.bind('okClicked', this), false);\r\n cancelButton.addEventListener('click', ss.bind('cancelClicked', this), false);\r\n this._okCallback = callback;\r\n },\r\n okClicked: function(e) {\r\n this._close();\r\n if (this._okCallback != null) {\r\n this._okCallback();\r\n }\r\n },\r\n cancelClicked: function(e) {\r\n this._close();\r\n },\r\n _close: function() {\r\n var simpleInputElement = document.getElementById('simplemodal');\r\n simpleInputElement.style.display = 'none';\r\n this._textElement.removeEventListener('change', ss.bind('textChanged', this), false);\r\n var okButton = document.getElementById('simpleinputok');\r\n var cancelButton = document.getElementById('simpleinputcancel');\r\n okButton.removeEventListener('click', ss.bind('okClicked', this), false);\r\n cancelButton.removeEventListener('click', ss.bind('cancelClicked', this), false);\r\n },\r\n ignoreMe: function(e) {\r\n this._ignoreNextClick = true;\r\n },\r\n textChanged: function(e) {\r\n this.text = this._textElement.value;\r\n this._ignoreNextClick = true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.XmlTextWriter\r\n\r\n function XmlTextWriter() {\r\n this.body = \"\\r\\n\";\r\n this.formatting = 1;\r\n this._elementStack = new ss.Stack();\r\n this._pending = false;\r\n this._currentName = '';\r\n this._attributes = {};\r\n this._value = '';\r\n }\r\n var XmlTextWriter$ = {\r\n _pushNewElement: function(name) {\r\n this._writePending(false);\r\n this._elementStack.push(name);\r\n this._pending = true;\r\n this._currentName = name;\r\n },\r\n _writePending: function(fullClose) {\r\n var closed = true;\r\n if (this._pending) {\r\n for (var i = 1; i < this._elementStack.count; i++) {\r\n this.body += ' ';\r\n }\r\n this.body += '<' + this._currentName;\r\n if (ss.keyCount(this._attributes) > 0) {\r\n var $enum1 = ss.enumerate(ss.keys(this._attributes));\r\n while ($enum1.moveNext()) {\r\n var key = $enum1.current;\r\n this.body += ss.format(' {0}=\"{1}\"', key, this._attributes[key]);\r\n }\r\n }\r\n if (!ss.emptyString(this._value)) {\r\n this.body += '>';\r\n closed = false;\r\n if (!ss.emptyString(this._value)) {\r\n this.body += this._value;\r\n }\r\n }\r\n else {\r\n if (fullClose) {\r\n this.body += ' />\\r\\n';\r\n closed = true;\r\n }\r\n else {\r\n this.body += '>\\r\\n';\r\n }\r\n }\r\n this._pending = false;\r\n this._currentName = '';\r\n this._value = '';\r\n this._attributes = {};\r\n return closed;\r\n }\r\n return false;\r\n },\r\n _writeProcessingInstruction: function(v1, v2) {\r\n },\r\n _writeStartElement: function(name) {\r\n this._pushNewElement(name);\r\n },\r\n _writeAttributeString: function(key, value) {\r\n if (value != null) {\r\n this._attributes[key] = ss.replaceString(value.toString(), '&', '&');\r\n }\r\n else {\r\n this._attributes[key] = '';\r\n }\r\n },\r\n _writeEndElement: function() {\r\n if (!this._writePending(true)) {\r\n for (var i = 1; i < this._elementStack.count; i++) {\r\n this.body += ' ';\r\n }\r\n this.body += ss.format('\\r\\n', this._elementStack.pop());\r\n }\r\n else {\r\n this._elementStack.pop();\r\n }\r\n },\r\n _writeString: function(text) {\r\n this._value = ss.replaceString(text, '&', '&');\r\n },\r\n _writeFullEndElement: function() {\r\n this._writePending(false);\r\n for (var i = 1; i < this._elementStack.count; i++) {\r\n this.body += ' ';\r\n }\r\n this.body += ss.format('\\r\\n', this._elementStack.pop());\r\n },\r\n _close: function() {\r\n },\r\n _writeElementString: function(name, value) {\r\n this._writeStartElement(name);\r\n this._writeValue(ss.replaceString(value, '&', '&'));\r\n this._writeEndElement();\r\n },\r\n _writeValue: function(val) {\r\n this._value = ss.replaceString(val, '&', '&');\r\n },\r\n _writeCData: function(htmlDescription) {\r\n this._value = ss.format('', htmlDescription);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VizLayer\r\n\r\n function VizLayer() {\r\n this.table = [];\r\n this.items = [];\r\n this._imageReady = false;\r\n this._dateColumn = 0;\r\n this._latColumn = 1;\r\n this._lngColumn = 2;\r\n this._depthColumn = 3;\r\n this._magColumn = 4;\r\n }\r\n var VizLayer$ = {\r\n load: function(data) {\r\n var $this = this;\r\n\r\n var lines = data.split('\\r\\n');\r\n this._starProfile = document.createElement('img');\r\n this._starProfile.addEventListener('load', function(e) {\r\n $this._imageReady = true;\r\n }, false);\r\n this._starProfile.src = URLHelpers.singleton.engineAssetUrl('StarProfileAlpha.png');\r\n var gotHeader = false;\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var line = $enum1.current;\r\n if (gotHeader) {\r\n this.table.push(line.split('\\t'));\r\n }\r\n else {\r\n this.header = line.split('\\t');\r\n gotHeader = true;\r\n }\r\n }\r\n },\r\n prepare: function() {\r\n this._worldList = new Array(this.table.length);\r\n this._transformedList = new Array(this.table.length);\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this.table);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n var item = new DataItem();\r\n item.eventTime = ss.date(row[this._dateColumn]);\r\n var radius = (6371000 - parseFloat(row[this._depthColumn]) * 1000) / 6371000;\r\n item.location = Coordinates.geoTo3dRad(parseFloat(row[this._latColumn]), parseFloat(row[this._lngColumn]) + 180, radius);\r\n item.tranformed = new Vector3d();\r\n item.size = Math.pow(2, parseFloat(row[this._magColumn])) / 50;\r\n this._worldList[index] = item.location;\r\n this._transformedList[index] = item.tranformed;\r\n this.items.push(item);\r\n index++;\r\n }\r\n },\r\n draw: function(renderContext) {\r\n if (!this._imageReady) {\r\n return;\r\n }\r\n renderContext.device.save();\r\n renderContext.WVP.projectArrayToScreen(this._worldList, this._transformedList);\r\n var ctx = renderContext.device;\r\n ctx.globalAlpha = 0.4;\r\n var width = renderContext.width;\r\n var height = renderContext.height;\r\n var viewPoint = Vector3d.makeCopy(renderContext.get_viewPoint());\r\n var scaleFactor = renderContext.get_fovScale() / 100;\r\n var $enum1 = ss.enumerate(this.items);\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (item.tranformed.z < 1) {\r\n var x = item.tranformed.x;\r\n var y = item.tranformed.y;\r\n var size = 4 * item.size / scaleFactor;\r\n var half = size / 2;\r\n if (x > -half && x < width + half && y > -half && y < height + half) {\r\n ctx.drawImage(this._starProfile, x - size / 2, y - size / 2, size, size);\r\n }\r\n }\r\n }\r\n renderContext.device.restore();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.DataItem\r\n\r\n function DataItem() {\r\n this.size = 0;\r\n }\r\n var DataItem$ = {\r\n getColor: function() {\r\n return 'Red';\r\n }\r\n };\r\n\r\n\r\n // wwtlib.WebFile\r\n\r\n function WebFile(url) {\r\n this._state = 0;\r\n this.responseType = '';\r\n this._triedOnce = false;\r\n this._url = url;\r\n }\r\n var WebFile$ = {\r\n send: function() {\r\n var version = navigator.appVersion;\r\n if (version.indexOf('MSIE 8') > -1 || version.indexOf('MSIE 9') > -1) {\r\n this._ieCrossDomain();\r\n }\r\n else {\r\n this._CORS();\r\n }\r\n this.set_state(0);\r\n },\r\n get_message: function() {\r\n return this._message;\r\n },\r\n get_state: function() {\r\n return this._state;\r\n },\r\n set_state: function(value) {\r\n this._state = value;\r\n if (this.onStateChange != null) {\r\n this.onStateChange();\r\n }\r\n return value;\r\n },\r\n _loadData: function(textReceived) {\r\n this._data = textReceived;\r\n this.set_state(1);\r\n },\r\n _loadBlob: function(blob) {\r\n this._blobdata = blob;\r\n this.set_state(1);\r\n },\r\n _error: function() {\r\n this._message = ss.format('Error encountered loading {0}', this._url);\r\n this.set_state(2);\r\n },\r\n _timeOut: function() {\r\n this._message = ss.format('Timeout encountered loading {0}', this._url);\r\n this.set_state(2);\r\n },\r\n _ieCrossDomain: function() {\r\n var $this = this;\r\n\r\n this._xdr = new XDomainRequest();\r\n this._xdr.onload = function() {\r\n $this._loadData($this._xdr.responseText);\r\n };\r\n this._xdr.onTimeout = ss.bind('_error', this);\r\n this._xdr.onError = ss.bind('_timeOut', this);\r\n this._xdr.open('get', this._url);\r\n this._xdr.send();\r\n },\r\n _CORS: function() {\r\n var $this = this;\r\n\r\n this._xhr = new XMLHttpRequest();\r\n try {\r\n this._xhr.open('GET', this._url);\r\n if (this.responseType != null) {\r\n this._xhr.responseType = this.responseType;\r\n }\r\n this._xhr.onreadystatechange = function() {\r\n if ($this._xhr.readyState === 4) {\r\n if (!$this._xhr.status) {\r\n if (!$this._triedOnce) {\r\n $this._triedOnce = true;\r\n $this._xhr.onreadystatechange = null;\r\n var new_url = URLHelpers.singleton.activateProxy($this._url);\r\n if (new_url != null) {\r\n $this._url = new_url;\r\n $this._CORS();\r\n }\r\n else {\r\n $this._message = $this._xhr.statusText;\r\n $this.set_state(2);\r\n }\r\n }\r\n }\r\n else {\r\n if ($this._xhr.status >= 400) {\r\n $this._message = $this._xhr.statusText;\r\n $this.set_state(2);\r\n }\r\n else {\r\n if (!$this.responseType) {\r\n $this._loadData($this._xhr.responseText);\r\n }\r\n else {\r\n $this._loadBlob($this._xhr.response);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n this._xhr.send();\r\n }\r\n catch (err) {\r\n this._message = err.message;\r\n this.set_state(2);\r\n throw err;\r\n }\r\n },\r\n getText: function() {\r\n return this._data;\r\n },\r\n getBlob: function() {\r\n return this._blobdata;\r\n },\r\n getXml: function() {\r\n var xParser = new DOMParser();\r\n return xParser.parseFromString(this._data, 'text/xml');\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FolderDownloadAction\r\n\r\n function FolderDownloadAction(action, loadChildFolders) {\r\n this.loadChildFolders = false;\r\n this._numLoadingFolders = 0;\r\n this._onComplete = action;\r\n this.loadChildFolders = loadChildFolders;\r\n }\r\n var FolderDownloadAction$ = {\r\n _folderLoaded: function() {\r\n this._numLoadingFolders--;\r\n if (!this._numLoadingFolders) {\r\n this._onComplete();\r\n }\r\n },\r\n startingNewFolderLoad: function(folder) {\r\n var $this = this;\r\n\r\n this._numLoadingFolders++;\r\n folder.childLoadCallback(function() {\r\n Wtml.loadImagesets(folder, $this);\r\n $this._folderLoaded();\r\n });\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Wtml\r\n\r\n function Wtml() {\r\n }\r\n Wtml.getWtmlFile = function(url, complete, loadChildFolders) {\r\n if (loadChildFolders == null) {\r\n loadChildFolders = false;\r\n }\r\n var folder = new Folder();\r\n folder.set_url(url);\r\n var folderDownloadAction = new FolderDownloadAction(complete, loadChildFolders);\r\n folderDownloadAction.startingNewFolderLoad(folder);\r\n return folder;\r\n };\r\n Wtml.loadImagesets = function(folder, folderDownloadAction) {\r\n var children = folder.get_children();\r\n var $enum1 = ss.enumerate(children);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (ss.canCast(child, Imageset)) {\r\n var imageSet = child;\r\n WWTControl.addImageSetToRepository(imageSet);\r\n }\r\n if (ss.canCast(child, Place)) {\r\n var place = child;\r\n if (place.get_studyImageset() != null) {\r\n WWTControl.addImageSetToRepository(place.get_studyImageset());\r\n }\r\n if (place.get_backgroundImageset() != null) {\r\n WWTControl.addImageSetToRepository(place.get_backgroundImageset());\r\n }\r\n }\r\n if (ss.canCast(child, Folder) && folderDownloadAction.loadChildFolders) {\r\n folderDownloadAction.startingNewFolderLoad((child));\r\n }\r\n }\r\n if (!ss.emptyString(WWTControl.imageSetName)) {\r\n var name = WWTControl.imageSetName.toLowerCase();\r\n var $enum2 = ss.enumerate(WWTControl.getImageSets());\r\n while ($enum2.moveNext()) {\r\n var imageset = $enum2.current;\r\n if (imageset.get_name().toLowerCase() === name) {\r\n WWTControl.singleton.renderContext.set_backgroundImageset(imageset);\r\n }\r\n }\r\n }\r\n };\r\n var Wtml$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.WWTControl\r\n\r\n function WWTControl() {\r\n this.uiController = null;\r\n this._annotations = [];\r\n this._hoverText = '';\r\n this._hoverTextPoint = new Vector2d();\r\n this._lastMouseMove = new Date(1900, 1, 0, 0, 0, 0, 0);\r\n this.layers = [];\r\n this._frameCount = 0;\r\n this._zoomMax = 360;\r\n this._zoomMaxSolarSystem = 10000000000000000;\r\n this._zoomMin = 0.001373291015625;\r\n this._zoomMinSolarSystem = 1E-08;\r\n this.constellation = 'UMA';\r\n this._fadePoints = null;\r\n this.fader = BlendState.create(true, 2000);\r\n this._crossFadeFrame = false;\r\n this._crossFadeTexture = null;\r\n this._sprite = new Sprite2d();\r\n this.renderType = 2;\r\n this._milkyWayBackground = null;\r\n this._beginZoom = 1;\r\n this._dragging = false;\r\n this._mouseDown = false;\r\n this._isPinching = false;\r\n this._lastX = 0;\r\n this._lastY = 0;\r\n this._pointerIds = new Array(2);\r\n this._pinchingZoomRect = new Array(2);\r\n this._moved = false;\r\n this._foregroundCanvas = null;\r\n this._fgDevice = null;\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n this.sandboxMode = false;\r\n this._solarSystemTrack = 65536;\r\n this._moving = false;\r\n this._targetStudyImageset = null;\r\n this._targetBackgroundImageset = null;\r\n this.tour = null;\r\n this.tourEdit = null;\r\n this._crossHairs = null;\r\n }\r\n WWTControl.addImageSetToRepository = function(imagesetToAdd) {\r\n var $enum1 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_imageSetID() === imagesetToAdd.get_imageSetID()) {\r\n return;\r\n }\r\n }\r\n WWTControl.imageSets.push(imagesetToAdd);\r\n };\r\n WWTControl.getImageSets = function() {\r\n return WWTControl.imageSets;\r\n };\r\n WWTControl.get_renderNeeded = function() {\r\n return WWTControl._renderNeeded;\r\n };\r\n WWTControl.set_renderNeeded = function(value) {\r\n WWTControl._renderNeeded = true;\r\n return value;\r\n };\r\n WWTControl.initControl = function(DivId) {\r\n return WWTControl.initControl2(DivId, true);\r\n };\r\n WWTControl.initControlParam = function(DivId, webgl_ignored) {\r\n return WWTControl.initControl2(DivId, true);\r\n };\r\n WWTControl.initControl2 = function(DivId, startRenderLoop) {\r\n return WWTControl.initControl6(DivId, startRenderLoop, 0, 0, 360, 'Sky');\r\n };\r\n WWTControl.initControl6 = function(DivId, startRenderLoop, startLat, startLng, startZoom, startMode) {\r\n if (WWTControl.singleton.renderContext.device == null) {\r\n WWTControl.scriptInterface = new ScriptInterface();\r\n WWTControl.scriptInterface.settings = Settings.get_current();\r\n var canvas = WWTControl._createCanvasElement(DivId);\r\n var gl = canvas.getContext('webgl2');\r\n if (gl != null) {\r\n RenderContext.useGlVersion2 = true;\r\n }\r\n else {\r\n console.warn('This browser does not support WebGL 2.0. Some features will work suboptimally. To get the full AAS WWT experience, consider using the latest version of Chrome, Firefox or Edge. In case you would like to use Safari, we recommend that you enable WebGL 2.0');\r\n gl = canvas.getContext('webgl');\r\n }\r\n if (gl == null) {\r\n gl = canvas.getContext('experimental-webgl');\r\n }\r\n if (gl == null) {\r\n var ctx = canvas.getContext('2d');\r\n WWTControl.singleton.renderContext.device = ctx;\r\n }\r\n else {\r\n Tile.prepDevice = gl;\r\n WWTControl.singleton.renderContext.gl = gl;\r\n RenderContext.useGl = true;\r\n }\r\n WWTControl.singleton.canvas = canvas;\r\n WWTControl.singleton.renderContext.width = canvas.width;\r\n WWTControl.singleton.renderContext.height = canvas.height;\r\n WWTControl.singleton.setup(canvas, startLat, startLng, startZoom);\r\n if (startMode === 'earth') {\r\n WWTControl.singleton.renderContext.set_backgroundImageset(Imageset.create('Blue Marble', URLHelpers.singleton.coreStaticUrl('wwtweb/tiles.aspx?q={1},{2},{3},bm200407'), 0, 3, 3, 101, 0, 7, 256, 180, '.png', false, '', 0, 0, 0, false, URLHelpers.singleton.coreStaticUrl('wwtweb/thumbnail.aspx?name=bm200407'), true, false, 0, 0, 0, '', '', '', '', 6371000, 'Earth'));\r\n }\r\n else {\r\n WWTControl.singleton.renderContext.set_backgroundImageset(Imageset.create('DSS', URLHelpers.singleton.coreStaticUrl('wwtweb/dss.aspx?q={1},{2},{3}'), 2, 3, 3, 100, 0, 12, 256, 180, '.png', false, '', 0, 0, 0, false, URLHelpers.singleton.coreStaticUrl('thumbnails/DSS.png'), true, false, 0, 0, 0, '', '', '', '', 1, 'Sky'));\r\n }\r\n }\r\n WWTControl.singleton.renderContext.viewCamera.lng += 0;\r\n WWTControl.singleton.renderContext._initGL();\r\n if (startRenderLoop) {\r\n WWTControl.singleton.render();\r\n }\r\n return WWTControl.scriptInterface;\r\n };\r\n WWTControl._createCanvasElement = function(DivId) {\r\n var div = document.getElementById(DivId);\r\n var canvas = document.createElement('canvas');\r\n canvas.height = div.clientHeight;\r\n canvas.width = div.clientWidth;\r\n div.appendChild(canvas);\r\n return canvas;\r\n };\r\n WWTControl.useUserLocation = function() {\r\n navigator.geolocation.getCurrentPosition(WWTControl._getLocation, WWTControl._getLocationError);\r\n };\r\n WWTControl._getLocation = function(pos) {\r\n if (!!pos.coords.latitude) {\r\n Settings.get_globalSettings().set_locationLat(pos.coords.latitude);\r\n }\r\n if (!!pos.coords.longitude) {\r\n Settings.get_globalSettings().set_locationLng(pos.coords.longitude);\r\n }\r\n if (!!pos.coords.altitude) {\r\n Settings.get_globalSettings().set_locationAltitude(pos.coords.altitude);\r\n }\r\n };\r\n WWTControl._getLocationError = function(pos) {\r\n if (pos != null && pos.coords != null) {\r\n var lat = pos.coords.latitude;\r\n var lng = pos.coords.longitude;\r\n }\r\n };\r\n WWTControl.setBackgroundImageName = function(name) {\r\n WWTControl.imageSetName = name;\r\n };\r\n WWTControl.setForegroundImageName = function(name) {\r\n WWTControl.imageSetName = name;\r\n };\r\n WWTControl.showLayers = function(show) {\r\n WWTControl.showDataLayers = show;\r\n };\r\n var WWTControl$ = {\r\n _addAnnotation: function(annotation) {\r\n this._annotations.push(annotation);\r\n Annotation.batchDirty = true;\r\n },\r\n _removeAnnotation: function(annotation) {\r\n ss.remove(this._annotations, annotation);\r\n Annotation.batchDirty = true;\r\n },\r\n _clearAnnotations: function() {\r\n this._annotations.length = 0;\r\n Annotation.batchDirty = true;\r\n },\r\n _annotationclicked: function(ra, dec, x, y) {\r\n if (this._annotations != null && this._annotations.length > 0) {\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._annotations);\r\n while ($enum1.moveNext()) {\r\n var note = $enum1.current;\r\n if (note.hitTest(this.renderContext, ra, dec, x, y)) {\r\n WWTControl.scriptInterface._fireAnnotationclicked(ra, dec, note.get_id());\r\n return true;\r\n }\r\n index++;\r\n }\r\n }\r\n return false;\r\n },\r\n _annotationHover: function(ra, dec, x, y) {\r\n if (this._annotations != null && this._annotations.length > 0) {\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._annotations);\r\n while ($enum1.moveNext()) {\r\n var note = $enum1.current;\r\n if (note.hitTest(this.renderContext, ra, dec, x, y)) {\r\n this._hoverText = note.get_label();\r\n this._hoverTextPoint = Vector2d.create(x, y);\r\n return true;\r\n }\r\n index++;\r\n }\r\n }\r\n return false;\r\n },\r\n get_zoomMax: function() {\r\n if (this.renderContext.get_backgroundImageset() != null && this.renderContext.get_backgroundImageset().get_dataSetType() === 4) {\r\n return this._zoomMaxSolarSystem;\r\n }\r\n else {\r\n return this._zoomMax;\r\n }\r\n },\r\n set_zoomMax: function(value) {\r\n this._zoomMax = value;\r\n return value;\r\n },\r\n setSolarSystemMaxZoom: function(value) {\r\n this._zoomMaxSolarSystem = value;\r\n },\r\n get_zoomMin: function() {\r\n if (this.renderContext.get_backgroundImageset() != null && this.renderContext.get_backgroundImageset().get_dataSetType() === 4) {\r\n return this._zoomMinSolarSystem;\r\n }\r\n else {\r\n return this._zoomMin;\r\n }\r\n },\r\n set_zoomMin: function(value) {\r\n this._zoomMin = value;\r\n return value;\r\n },\r\n setSolarSystemMinZoom: function(value) {\r\n this._zoomMinSolarSystem = value;\r\n },\r\n _notifyMoveComplete: function() {\r\n },\r\n get_crossFadeFrame: function() {\r\n return this._crossFadeFrame;\r\n },\r\n set_crossFadeFrame: function(value) {\r\n if (value && this._crossFadeFrame !== value) {\r\n if (this._crossFadeTexture != null) {\r\n }\r\n this._crossFadeTexture = this.renderContext._getScreenTexture();\r\n }\r\n this._crossFadeFrame = value;\r\n if (!value) {\r\n if (this._crossFadeTexture != null) {\r\n this._crossFadeTexture = null;\r\n }\r\n }\r\n return value;\r\n },\r\n _fadeFrame: function() {\r\n if (this.renderContext.gl != null) {\r\n var sp = Settings.get_active().getSetting(17);\r\n if ((sp.opacity > 0)) {\r\n var color = Color._fromArgbColor(255 - UiTools.gamma(255 - ss.truncate((sp.opacity * 255)), 1 / 2.2), Colors.get_black());\r\n if (!(sp.opacity > 0)) {\r\n color = Color._fromArgbColor(255 - UiTools.gamma(255 - ss.truncate((sp.opacity * 255)), 1 / 2.2), Colors.get_black());\r\n }\r\n if (this._crossFadeFrame) {\r\n color = Color._fromArgbColor(UiTools.gamma(ss.truncate((sp.opacity * 255)), 1 / 2.2), Colors.get_white());\r\n }\r\n else {\r\n if (this._crossFadeTexture != null) {\r\n this._crossFadeTexture = null;\r\n }\r\n }\r\n if (this._fadePoints == null) {\r\n this._fadePoints = new Array(4);\r\n for (var i = 0; i < 4; i++) {\r\n this._fadePoints[i] = new PositionColoredTextured();\r\n }\r\n }\r\n this._fadePoints[0].position.x = -this.renderContext.width / 2;\r\n this._fadePoints[0].position.y = this.renderContext.height / 2;\r\n this._fadePoints[0].position.z = 1347;\r\n this._fadePoints[0].tu = 0;\r\n this._fadePoints[0].tv = 1;\r\n this._fadePoints[0].color = color;\r\n this._fadePoints[1].position.x = -this.renderContext.width / 2;\r\n this._fadePoints[1].position.y = -this.renderContext.height / 2;\r\n this._fadePoints[1].position.z = 1347;\r\n this._fadePoints[1].tu = 0;\r\n this._fadePoints[1].tv = 0;\r\n this._fadePoints[1].color = color;\r\n this._fadePoints[2].position.x = this.renderContext.width / 2;\r\n this._fadePoints[2].position.y = this.renderContext.height / 2;\r\n this._fadePoints[2].position.z = 1347;\r\n this._fadePoints[2].tu = 1;\r\n this._fadePoints[2].tv = 1;\r\n this._fadePoints[2].color = color;\r\n this._fadePoints[3].position.x = this.renderContext.width / 2;\r\n this._fadePoints[3].position.y = -this.renderContext.height / 2;\r\n this._fadePoints[3].position.z = 1347;\r\n this._fadePoints[3].tu = 1;\r\n this._fadePoints[3].tv = 0;\r\n this._fadePoints[3].color = color;\r\n this._sprite.draw(this.renderContext, this._fadePoints, 4, this._crossFadeTexture, true, 1);\r\n }\r\n }\r\n },\r\n render: function() {\r\n var $this = this;\r\n\r\n this.renderOneFrame();\r\n setTimeout(function() {\r\n $this.render();\r\n }, 10);\r\n },\r\n renderOneFrame: function() {\r\n if (this.renderContext.get_backgroundImageset() != null) {\r\n this.renderType = this.renderContext.get_backgroundImageset().get_dataSetType();\r\n }\r\n else {\r\n this.renderType = 2;\r\n }\r\n var sizeChange = false;\r\n if (this.canvas.width !== this.canvas.parentNode.clientWidth) {\r\n this.canvas.width = this.canvas.parentNode.clientWidth;\r\n sizeChange = true;\r\n }\r\n if (this.canvas.height !== this.canvas.parentNode.clientHeight) {\r\n this.canvas.height = this.canvas.parentNode.clientHeight;\r\n sizeChange = true;\r\n }\r\n if (sizeChange && this.explorer != null) {\r\n this.explorer.refresh();\r\n }\r\n if (this.canvas.width < 1 || this.canvas.height < 1) {\r\n return;\r\n }\r\n if (sizeChange) {\r\n this._crossHairs = null;\r\n }\r\n Tile.lastDeepestLevel = Tile.deepestLevel;\r\n RenderTriangle.width = this.renderContext.width = this.canvas.width;\r\n RenderTriangle.height = this.renderContext.height = this.canvas.height;\r\n Tile.tilesInView = 0;\r\n Tile.tilesTouched = 0;\r\n Tile.deepestLevel = 0;\r\n if (this.get__mover() != null) {\r\n SpaceTimeController.set_now(this.get__mover().get_currentDateTime());\r\n Planets.updatePlanetLocations(this.get_solarSystemMode());\r\n if (this.get__mover() != null) {\r\n var newCam = this.get__mover().get_currentPosition();\r\n this.renderContext.targetCamera = newCam.copy();\r\n this.renderContext.viewCamera = newCam.copy();\r\n if (this.renderContext.space && Settings.get_active().get_galacticMode()) {\r\n var gPoint = Coordinates.j2000toGalactic(newCam.get_RA() * 15, newCam.get_dec());\r\n this.renderContext.targetAlt = this.renderContext.alt = gPoint[1];\r\n this.renderContext.targetAz = this.renderContext.az = gPoint[0];\r\n }\r\n else if (this.renderContext.space && Settings.get_active().get_localHorizonMode()) {\r\n var currentAltAz = Coordinates.equitorialToHorizon(Coordinates.fromRaDec(newCam.get_RA(), newCam.get_dec()), SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n this.renderContext.targetAlt = this.renderContext.alt = currentAltAz.get_alt();\r\n this.renderContext.targetAz = this.renderContext.az = currentAltAz.get_az();\r\n }\r\n if (this.get__mover().get_complete()) {\r\n WWTControl.scriptInterface._fireArrived(this.get__mover().get_currentPosition().get_RA(), this.get__mover().get_currentPosition().get_dec(), WWTControl.singleton.renderContext.viewCamera.zoom);\r\n this.set__mover(null);\r\n this._notifyMoveComplete();\r\n }\r\n }\r\n }\r\n else {\r\n SpaceTimeController.updateClock();\r\n Planets.updatePlanetLocations(this.get_solarSystemMode());\r\n this._updateViewParameters();\r\n }\r\n this.renderContext.clear();\r\n if (this.renderType === 4) {\r\n if (this._solarSystemTrack < 20) {\r\n var radius = Planets.getAdjustedPlanetRadius(this._solarSystemTrack);\r\n var distance = this.renderContext.get_solarSystemCameraDistance();\r\n var camAngle = this.renderContext.get_fovLocal();\r\n }\r\n if (this._trackingObject == null) {\r\n }\r\n this.renderContext.setupMatricesSolarSystem(true);\r\n var zoom = this.renderContext.viewCamera.zoom;\r\n var milkyWayBlend = Math.min(1, Math.max(0, (Math.log(zoom) - 8.4)) / 4.2);\r\n var milkyWayBlendIn = Math.min(1, Math.max(0, (Math.log(zoom) - 17.9)) / 2.3);\r\n var matOldMW = this.renderContext.get_world();\r\n var matLocalMW = this.renderContext.get_world().clone();\r\n matLocalMW._multiply(Matrix3d._scaling(100000, 100000, 100000));\r\n matLocalMW._multiply(Matrix3d._rotationX(23.5 / 180 * Math.PI));\r\n matLocalMW._multiply(Matrix3d.translation(this.renderContext.cameraPosition));\r\n this.renderContext.set_world(matLocalMW);\r\n this.renderContext.set_worldBase(matLocalMW);\r\n this.renderContext.space = true;\r\n this.renderContext.makeFrustum();\r\n var lighting = this.renderContext.lighting;\r\n this.renderContext.lighting = false;\r\n if (Settings.get_active().get_solarSystemMilkyWay()) {\r\n if (milkyWayBlend < 1) {\r\n if (this._milkyWayBackground == null) {\r\n this._milkyWayBackground = this.getImagesetByName('Digitized Sky Survey (Color)');\r\n }\r\n if (this._milkyWayBackground != null) {\r\n RenderTriangle.cullInside = true;\r\n var c = (1 - milkyWayBlend) / 2;\r\n this.renderContext.drawImageSet(this._milkyWayBackground, c * 100);\r\n RenderTriangle.cullInside = false;\r\n }\r\n }\r\n }\r\n this._drawSkyOverlays();\r\n this.renderContext.lighting = lighting;\r\n this.renderContext.space = false;\r\n this.renderContext.set_world(matOldMW);\r\n this.renderContext.set_worldBase(matOldMW);\r\n this.renderContext.makeFrustum();\r\n var oldCamera = this.renderContext.cameraPosition;\r\n var matOld = this.renderContext.get_world();\r\n var matLocal = this.renderContext.get_world();\r\n matLocal._multiply(Matrix3d.translation(this.renderContext.viewCamera.viewTarget));\r\n this.renderContext.cameraPosition = Vector3d.subtractVectors(this.renderContext.cameraPosition, this.renderContext.viewCamera.viewTarget);\r\n this.renderContext.set_world(matLocal);\r\n this.renderContext.makeFrustum();\r\n if (Settings.get_active().get_solarSystemCosmos()) {\r\n Grids.drawCosmos3D(this.renderContext, 1);\r\n }\r\n if (Settings.get_active().get_solarSystemMilkyWay() && milkyWayBlendIn > 0) {\r\n Grids.drawGalaxyImage(this.renderContext, milkyWayBlendIn);\r\n }\r\n if (Settings.get_active().get_solarSystemStars()) {\r\n Grids.drawStars3D(this.renderContext, 1);\r\n }\r\n matLocal = matOld;\r\n var pnt = this.renderContext.viewCamera.viewTarget;\r\n var vt = Vector3d.create(-pnt.x, -pnt.y, -pnt.z);\r\n this.renderContext.cameraPosition = oldCamera;\r\n matLocal._multiply(Matrix3d.translation(vt));\r\n this.renderContext.set_world(matLocal);\r\n this.renderContext.makeFrustum();\r\n LayerManager._draw(this.renderContext, 1, true, 'Sky', true, false);\r\n this.renderContext.set_world(matOld);\r\n this.renderContext.makeFrustum();\r\n if (this.renderContext.get_solarSystemCameraDistance() < 15000) {\r\n this.renderContext.setupMatricesSolarSystem(false);\r\n if (Settings.get_active().get_solarSystemMinorPlanets()) {\r\n MinorPlanets.drawMPC3D(this.renderContext, 1, this.renderContext.viewCamera.viewTarget);\r\n }\r\n if (Settings.get_active().get_solarSystemPlanets()) {\r\n Planets.drawPlanets3D(this.renderContext, 1, this.renderContext.viewCamera.viewTarget);\r\n }\r\n }\r\n }\r\n else {\r\n if (!this.renderType || this.renderType === 1) {\r\n this.renderContext._setupMatricesLand3d();\r\n }\r\n else {\r\n this.renderContext.setupMatricesSpace3d(this.renderContext.width, this.renderContext.height);\r\n }\r\n this.renderContext.drawImageSet(this.renderContext.get_backgroundImageset(), 100);\r\n if (this.renderContext.get_foregroundImageset() != null) {\r\n if (this.renderContext.get_foregroundImageset().get_dataSetType() !== this.renderContext.get_backgroundImageset().get_dataSetType()) {\r\n this.renderContext.set_foregroundImageset(null);\r\n }\r\n else {\r\n if (this.renderContext.viewCamera.opacity !== 100 && this.renderContext.gl == null) {\r\n if (this._foregroundCanvas.width !== this.renderContext.width || this._foregroundCanvas.height !== this.renderContext.height) {\r\n this._foregroundCanvas.width = ss.truncate(this.renderContext.width);\r\n this._foregroundCanvas.height = ss.truncate(this.renderContext.height);\r\n }\r\n var saveDevice = this.renderContext.device;\r\n this._fgDevice.clearRect(0, 0, this.renderContext.width, this.renderContext.height);\r\n this.renderContext.device = this._fgDevice;\r\n this.renderContext.drawImageSet(this.renderContext.get_foregroundImageset(), 100);\r\n this.renderContext.device = saveDevice;\r\n this.renderContext.device.save();\r\n this.renderContext.device.globalAlpha = this.renderContext.viewCamera.opacity / 100;\r\n this.renderContext.device.drawImage(this._foregroundCanvas, 0, 0);\r\n this.renderContext.device.restore();\r\n }\r\n else {\r\n this.renderContext.drawImageSet(this.renderContext.get_foregroundImageset(), this.renderContext.viewCamera.opacity);\r\n }\r\n }\r\n }\r\n if (this.renderType === 2) {\r\n var $enum1 = ss.enumerate(this.renderContext.get_catalogHipsImagesets());\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_hipsProperties().get_catalogSpreadSheetLayer().enabled && imageset.get_hipsProperties().get_catalogSpreadSheetLayer().lastVersion === imageset.get_hipsProperties().get_catalogSpreadSheetLayer().get_version()) {\r\n this.renderContext.drawImageSet(imageset, 100);\r\n }\r\n }\r\n }\r\n if (this.renderType === 2 && Settings.get_active().get_showSolarSystem()) {\r\n Planets.drawPlanets(this.renderContext, 1);\r\n this.constellation = Constellations.containment.findConstellationForPoint(this.renderContext.viewCamera.get_RA(), this.renderContext.viewCamera.get_dec());\r\n this._drawSkyOverlays();\r\n }\r\n if (this.get_planetLike() || this.get_space()) {\r\n if (!this.get_space()) {\r\n var angle = Coordinates.mstFromUTC2(SpaceTimeController.get_now(), 0) / 180 * Math.PI;\r\n this.renderContext.set_worldBaseNonRotating(Matrix3d.multiplyMatrix(Matrix3d._rotationY(angle), this.renderContext.get_worldBase()));\r\n if (this._targetBackgroundImageset != null) {\r\n this.renderContext.set_nominalRadius(this._targetBackgroundImageset.get_meanRadius());\r\n }\r\n }\r\n else {\r\n this.renderContext.set_worldBaseNonRotating(this.renderContext.get_world());\r\n if (this._targetBackgroundImageset != null) {\r\n this.renderContext.set_nominalRadius(this._targetBackgroundImageset.get_meanRadius());\r\n }\r\n }\r\n var referenceFrame = this.getCurrentReferenceFrame();\r\n LayerManager._draw(this.renderContext, 1, this.get_space(), referenceFrame, true, this.get_space());\r\n }\r\n }\r\n var worldSave = this.renderContext.get_world();\r\n var viewSave = this.renderContext.get_view();\r\n var projSave = this.renderContext.get_projection();\r\n if (Settings.get_current().get_showCrosshairs()) {\r\n this._drawCrosshairs(this.renderContext);\r\n }\r\n if (this.uiController != null) {\r\n this.uiController.render(this.renderContext);\r\n }\r\n else {\r\n var index = 0;\r\n Annotation.prepBatch(this.renderContext);\r\n var $enum2 = ss.enumerate(this._annotations);\r\n while ($enum2.moveNext()) {\r\n var item = $enum2.current;\r\n item.draw(this.renderContext);\r\n index++;\r\n }\r\n Annotation.drawBatch(this.renderContext);\r\n if ((ss.now() - this._lastMouseMove) > 400) {\r\n var raDecDown = this.getCoordinatesForScreenPoint(this._hoverTextPoint.x, this._hoverTextPoint.y);\r\n this._annotationHover(raDecDown.x, raDecDown.y, this._hoverTextPoint.x, this._hoverTextPoint.y);\r\n this._lastMouseMove = new Date(2100, 1, 1);\r\n }\r\n if (!ss.emptyString(this._hoverText)) {\r\n this._drawHoverText(this.renderContext);\r\n }\r\n }\r\n this.renderContext.setupMatricesOverlays();\r\n this._fadeFrame();\r\n this._frameCount++;\r\n TileCache.decimateQueue();\r\n TileCache.processQueue(this.renderContext);\r\n Tile.currentRenderGeneration++;\r\n if (!TourPlayer.get_playing()) {\r\n this.set_crossFadeFrame(false);\r\n }\r\n this.renderContext.set_world(worldSave);\r\n this.renderContext.set_view(viewSave);\r\n this.renderContext.set_projection(projSave);\r\n var now = ss.now();\r\n var ms = now - this._lastUpdate;\r\n if (ms > 1000) {\r\n this._lastUpdate = now;\r\n this._frameCount = 0;\r\n RenderTriangle.trianglesRendered = 0;\r\n RenderTriangle.trianglesCulled = 0;\r\n }\r\n },\r\n getCurrentReferenceFrame: function() {\r\n if (this.renderContext.get_backgroundImageset() == null) {\r\n return 'Sun';\r\n }\r\n if (!ss.emptyString(this.renderContext.get_backgroundImageset().get_referenceFrame())) {\r\n return this.renderContext.get_backgroundImageset().get_referenceFrame();\r\n }\r\n if (!this.renderContext.get_backgroundImageset().get_dataSetType()) {\r\n return 'Earth';\r\n }\r\n if (this.renderContext.get_backgroundImageset().get_name() === 'Visible Imagery' && this.renderContext.get_backgroundImageset().get_url().toLowerCase().indexOf('mars') > -1) {\r\n this.renderContext.get_backgroundImageset().set_referenceFrame('Mars');\r\n return this.renderContext.get_backgroundImageset().get_referenceFrame();\r\n }\r\n if (this.renderContext.get_backgroundImageset().get_dataSetType() === 1) {\r\n var $enum1 = ss.enumerate(WWTControl.solarSystemObjectsNames);\r\n while ($enum1.moveNext()) {\r\n var name = $enum1.current;\r\n if (this.renderContext.get_backgroundImageset().get_name().toLowerCase().indexOf(name.toLowerCase()) > -1) {\r\n this.renderContext.get_backgroundImageset().set_referenceFrame(name);\r\n return name;\r\n }\r\n }\r\n }\r\n if (this.renderContext.get_backgroundImageset().get_dataSetType() === 2) {\r\n return 'Sky';\r\n }\r\n return '';\r\n },\r\n get_planetLike: function() {\r\n if (this.renderContext.get_backgroundImageset() != null) {\r\n return !this.renderContext.get_backgroundImageset().get_dataSetType() || this.renderContext.get_backgroundImageset().get_dataSetType() === 1;\r\n }\r\n else {\r\n return true;\r\n }\r\n },\r\n get_space: function() {\r\n if (this.renderContext.get_backgroundImageset() != null) {\r\n return this.renderContext.get_backgroundImageset().get_dataSetType() === 2;\r\n }\r\n else {\r\n return true;\r\n }\r\n },\r\n _drawSkyOverlays: function() {\r\n if (Settings.get_active().get_showConstellationPictures()) {\r\n Constellations.drawArtwork(this.renderContext);\r\n }\r\n if (Settings.get_active().get_showConstellationFigures()) {\r\n if (WWTControl.constellationsFigures == null) {\r\n WWTControl.constellationsFigures = Constellations.create('Constellations', URLHelpers.singleton.engineAssetUrl('figures.txt'), false, false, false);\r\n }\r\n WWTControl.constellationsFigures.draw(this.renderContext, false, 'UMA', false);\r\n }\r\n if (Settings.get_active().get_showEclipticGrid()) {\r\n Grids.drawEclipticGrid(this.renderContext, 1, Colors.get_green());\r\n if (Settings.get_active().get_showEclipticGridText()) {\r\n Grids.drawEclipticGridText(this.renderContext, 1, Colors.get_green());\r\n }\r\n }\r\n if (Settings.get_active().get_showGalacticGrid()) {\r\n Grids.drawGalacticGrid(this.renderContext, 1, Colors.get_cyan());\r\n if (Settings.get_active().get_showGalacticGridText()) {\r\n Grids.drawGalacticGridText(this.renderContext, 1, Colors.get_cyan());\r\n }\r\n }\r\n if (Settings.get_active().get_showAltAzGrid()) {\r\n Grids.drawAltAzGrid(this.renderContext, 1, Colors.get_magenta());\r\n if (Settings.get_active().get_showAltAzGridText()) {\r\n Grids.drawAltAzGridText(this.renderContext, 1, Colors.get_magenta());\r\n }\r\n }\r\n if (Settings.get_active().get_showPrecessionChart()) {\r\n Grids.drawPrecessionChart(this.renderContext, 1, Colors.get_orange());\r\n }\r\n if (Settings.get_active().get_showEcliptic()) {\r\n Grids.drawEcliptic(this.renderContext, 1, Colors.get_blue());\r\n if (Settings.get_active().get_showEclipticOverviewText()) {\r\n Grids.drawEclipticText(this.renderContext, 1, Colors.get_blue());\r\n }\r\n }\r\n if (Settings.get_active().get_showGrid()) {\r\n Grids.drawEquitorialGrid(this.renderContext, 1, Colors.get_white());\r\n if (Settings.get_active().get_showEquatorialGridText()) {\r\n Grids.drawEquitorialGridText(this.renderContext, 1, Colors.get_white());\r\n }\r\n }\r\n if (Settings.get_active().get_showConstellationBoundries()) {\r\n if (WWTControl.constellationsBoundries == null) {\r\n WWTControl.constellationsBoundries = Constellations.create('Constellations', URLHelpers.singleton.engineAssetUrl('constellations.txt'), true, false, false);\r\n }\r\n WWTControl.constellationsBoundries.draw(this.renderContext, Settings.get_active().get_showConstellationSelection(), this.constellation, false);\r\n }\r\n if (Settings.get_active().get_showConstellationLabels()) {\r\n Constellations.drawConstellationNames(this.renderContext, 1, Colors.get_yellow());\r\n }\r\n },\r\n _drawHoverText: function(RenderContext) {\r\n if (RenderContext.gl == null) {\r\n var ctx = RenderContext.device;\r\n ctx.save();\r\n ctx.fillStyle = 'White';\r\n ctx.font = '15px Arial';\r\n ctx.fillText(this._hoverText, this._hoverTextPoint.x, this._hoverTextPoint.y);\r\n ctx.restore();\r\n }\r\n },\r\n rAtoViewLng: function(ra) {\r\n return (((180 - (ra / 24 * 360) - 180) + 540) % 360) - 180;\r\n },\r\n _updateViewParameters: function() {\r\n if (this.renderContext.space && this._tracking && this._trackingObject != null) {\r\n if (Settings.get_active().get_galacticMode() && this.renderContext.space) {\r\n var gPoint = Coordinates.j2000toGalactic(this._trackingObject.get_RA() * 15, this._trackingObject.get_dec());\r\n this.renderContext.targetAlt = this.renderContext.alt = gPoint[1];\r\n this.renderContext.targetAz = this.renderContext.az = gPoint[0];\r\n }\r\n else if (this.renderContext.space && Settings.get_active().get_localHorizonMode()) {\r\n var currentAltAz = Coordinates.equitorialToHorizon(Coordinates.fromRaDec(this._trackingObject.get_RA(), this._trackingObject.get_dec()), SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n this.renderContext.targetAlt = currentAltAz.get_alt();\r\n this.renderContext.targetAz = currentAltAz.get_az();\r\n }\r\n else {\r\n this.renderContext.viewCamera.lng = this.renderContext.targetCamera.lng = this.rAtoViewLng(this._trackingObject.get_RA());\r\n this.renderContext.viewCamera.lat = this.renderContext.targetCamera.lat = this._trackingObject.get_dec();\r\n }\r\n }\r\n else if (!this.get_solarSystemMode()) {\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n }\r\n var oneMinusDragCoefficient = 1 - 0.8;\r\n var dc = 0.8;\r\n if (!this._tracking) {\r\n var minDelta = (this.renderContext.viewCamera.zoom / 4000);\r\n if (this.renderContext.viewCamera.zoom > 360) {\r\n minDelta = (360 / 40000);\r\n }\r\n if (this.renderContext.space && (Settings.get_active().get_localHorizonMode() || Settings.get_active().get_galacticMode())) {\r\n if ((((Math.abs(this.renderContext.targetAlt - this.renderContext.alt) >= minDelta) | (Math.abs(this.renderContext.targetAz - this.renderContext.az) >= minDelta)) === 1)) {\r\n this.renderContext.alt += (this.renderContext.targetAlt - this.renderContext.alt) / 10;\r\n if (Math.abs(this.renderContext.targetAz - this.renderContext.az) > 170) {\r\n if (this.renderContext.targetAz > this.renderContext.az) {\r\n this.renderContext.az += (this.renderContext.targetAz - (360 + this.renderContext.az)) / 10;\r\n }\r\n else {\r\n this.renderContext.az += ((360 + this.renderContext.targetAz) - this.renderContext.az) / 10;\r\n }\r\n }\r\n else {\r\n this.renderContext.az += (this.renderContext.targetAz - this.renderContext.az) / 10;\r\n }\r\n this.renderContext.az = ((this.renderContext.az + 720) % 360);\r\n }\r\n }\r\n else {\r\n if ((((Math.abs(this.renderContext.targetCamera.lat - this.renderContext.viewCamera.lat) >= minDelta) | (Math.abs(this.renderContext.targetCamera.lng - this.renderContext.viewCamera.lng) >= minDelta)) === 1)) {\r\n this.renderContext.viewCamera.lat += (this.renderContext.targetCamera.lat - this.renderContext.viewCamera.lat) / 10;\r\n if (Math.abs(this.renderContext.targetCamera.lng - this.renderContext.viewCamera.lng) > 170) {\r\n if (this.renderContext.targetCamera.lng > this.renderContext.viewCamera.lng) {\r\n this.renderContext.viewCamera.lng += (this.renderContext.targetCamera.lng - (360 + this.renderContext.viewCamera.lng)) / 10;\r\n }\r\n else {\r\n this.renderContext.viewCamera.lng += ((360 + this.renderContext.targetCamera.lng) - this.renderContext.viewCamera.lng) / 10;\r\n }\r\n }\r\n else {\r\n this.renderContext.viewCamera.lng += (this.renderContext.targetCamera.lng - this.renderContext.viewCamera.lng) / 10;\r\n }\r\n this.renderContext.viewCamera.lng = ((this.renderContext.viewCamera.lng + 720) % 360);\r\n }\r\n else {\r\n if (this.renderContext.viewCamera.lat !== this.renderContext.targetCamera.lat || this.renderContext.viewCamera.lng !== this.renderContext.targetCamera.lng) {\r\n this.renderContext.viewCamera.lat = this.renderContext.targetCamera.lat;\r\n this.renderContext.viewCamera.lng = this.renderContext.targetCamera.lng;\r\n }\r\n }\r\n }\r\n }\r\n this.renderContext.viewCamera.zoom = dc * this.renderContext.viewCamera.zoom + oneMinusDragCoefficient * this.renderContext.targetCamera.zoom;\r\n this.renderContext.viewCamera.rotation = dc * this.renderContext.viewCamera.rotation + oneMinusDragCoefficient * this.renderContext.targetCamera.rotation;\r\n this.renderContext.viewCamera.angle = dc * this.renderContext.viewCamera.angle + oneMinusDragCoefficient * this.renderContext.targetCamera.angle;\r\n },\r\n move: function(x, y) {\r\n var angle = Math.atan2(y, x);\r\n var distance = Math.sqrt(x * x + y * y);\r\n if (this.get_solarSystemMode() || this.get_planetLike()) {\r\n x = Math.cos(angle + this.renderContext.viewCamera.rotation) * distance;\r\n y = Math.sin(angle + this.renderContext.viewCamera.rotation) * distance;\r\n }\r\n else {\r\n x = Math.cos(angle - this.renderContext.viewCamera.rotation) * distance;\r\n y = Math.sin(angle - this.renderContext.viewCamera.rotation) * distance;\r\n }\r\n var scaleY = this.renderContext.get_fovScale() / 3600;\r\n if (this.renderContext.get_backgroundImageset().get_dataSetType() === 4) {\r\n scaleY = 0.06;\r\n }\r\n var scaleX = scaleY / Math.max(0.2, Math.cos(this.renderContext.viewCamera.lat / 180 * Math.PI));\r\n if (!this.renderContext.get_backgroundImageset().get_dataSetType() || this.renderContext.get_backgroundImageset().get_dataSetType() === 1 || this.renderContext.get_backgroundImageset().get_dataSetType() === 4) {\r\n scaleX *= 6.3;\r\n scaleY *= 6.3;\r\n }\r\n if (this.renderContext.space && (Settings.get_active().get_galacticMode() || Settings.get_active().get_localHorizonMode())) {\r\n x = (Settings.get_active().get_localHorizonMode()) ? -x : x;\r\n this.renderContext.targetAz += x * scaleX;\r\n this.renderContext.targetAz = ((this.renderContext.targetAz + 720) % 360);\r\n this.renderContext.targetAlt += y * scaleY;\r\n if (this.renderContext.targetAlt > 90) {\r\n this.renderContext.targetAlt = 90;\r\n }\r\n if (this.renderContext.targetAlt < -90) {\r\n this.renderContext.targetAlt = -90;\r\n }\r\n }\r\n else {\r\n this.renderContext.targetCamera.lng -= x * scaleX;\r\n this.renderContext.targetCamera.lng = ((this.renderContext.targetCamera.lng + 720) % 360);\r\n this.renderContext.targetCamera.lat += y * scaleY;\r\n if (this.renderContext.targetCamera.lat > 90) {\r\n this.renderContext.targetCamera.lat = 90;\r\n }\r\n if (this.renderContext.targetCamera.lat < -90) {\r\n this.renderContext.targetCamera.lat = -90;\r\n }\r\n }\r\n if (!Settings.get_globalSettings().get_smoothPan()) {\r\n this.renderContext.viewCamera = this.renderContext.targetCamera.copy();\r\n }\r\n if (!!x && !!y) {\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n }\r\n },\r\n zoom: function(factor) {\r\n this.renderContext.targetCamera.zoom *= factor;\r\n if (this.renderContext.targetCamera.zoom > this.get_zoomMax()) {\r\n this.renderContext.targetCamera.zoom = this.get_zoomMax();\r\n }\r\n if (!Settings.get_globalSettings().get_smoothPan()) {\r\n this.renderContext.viewCamera = this.renderContext.targetCamera.copy();\r\n }\r\n },\r\n onGestureStart: function(e) {\r\n this._mouseDown = false;\r\n this._beginZoom = this.renderContext.viewCamera.zoom;\r\n },\r\n onGestureChange: function(e) {\r\n var g = e;\r\n this._mouseDown = false;\r\n this.renderContext.targetCamera.zoom = this.renderContext.viewCamera.zoom = Math.min(360, this._beginZoom * (1 / g.scale));\r\n },\r\n onGestureEnd: function(e) {\r\n var g = e;\r\n this._mouseDown = false;\r\n },\r\n onTouchStart: function(e) {\r\n var ev = e;\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this._lastX = ev.targetTouches[0].pageX;\r\n this._lastY = ev.targetTouches[0].pageY;\r\n if (ev.targetTouches.length === 2) {\r\n this._isPinching = true;\r\n return;\r\n }\r\n if (this.uiController != null) {\r\n var ee = new WWTElementEvent(this._lastX, this._lastY);\r\n if (this.uiController.mouseDown(this, ee)) {\r\n this._mouseDown = false;\r\n this._dragging = false;\r\n return;\r\n }\r\n }\r\n this._mouseDown = true;\r\n },\r\n onTouchMove: function(e) {\r\n var ev = e;\r\n if (this._isPinching) {\r\n var t0 = ev.touches[0];\r\n var t1 = ev.touches[1];\r\n var newRect = new Array(2);\r\n newRect[0] = Vector2d.create(t0.pageX, t0.pageY);\r\n newRect[1] = Vector2d.create(t1.pageX, t1.pageY);\r\n if (this._pinchingZoomRect[0] != null && this._pinchingZoomRect[1] != null) {\r\n var oldDist = this.getDistance(this._pinchingZoomRect[0], this._pinchingZoomRect[1]);\r\n var newDist = this.getDistance(newRect[0], newRect[1]);\r\n var ratio = oldDist / newDist;\r\n this.zoom(ratio);\r\n }\r\n this._pinchingZoomRect = newRect;\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n return;\r\n }\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (this._mouseDown) {\r\n this._dragging = true;\r\n var curX = ev.targetTouches[0].pageX - this._lastX;\r\n var curY = ev.targetTouches[0].pageY - this._lastY;\r\n this.move(curX, curY);\r\n this._lastX = ev.targetTouches[0].pageX;\r\n this._lastY = ev.targetTouches[0].pageY;\r\n }\r\n else {\r\n if (this.uiController != null) {\r\n if (this.uiController.mouseMove(this, e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n }\r\n }\r\n },\r\n onTouchEnd: function(e) {\r\n var ev = e;\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this._pinchingZoomRect[0] = null;\r\n this._pinchingZoomRect[1] = null;\r\n if (this._isPinching) {\r\n if (ev.touches.length < 2) {\r\n this._isPinching = false;\r\n }\r\n return;\r\n }\r\n if (this.uiController != null) {\r\n var ee = new WWTElementEvent(this._lastX, this._lastY);\r\n if (this.uiController.mouseUp(this, ee)) {\r\n this._mouseDown = false;\r\n this._dragging = false;\r\n return;\r\n }\r\n }\r\n this._mouseDown = false;\r\n this._dragging = false;\r\n },\r\n onPointerDown: function(e) {\r\n var pe = e;\r\n var index = 0;\r\n var evt = arguments[0], cnv = arguments[0].target; if (cnv.setPointerCapture) {cnv.setPointerCapture(evt.pointerId);} else if (cnv.msSetPointerCapture) { cnv.msSetPointerCapture(evt.pointerId); };\r\n if (this._pointerIds[0] === pe.pointerId) {\r\n index = 0;\r\n }\r\n else if (this._pointerIds[1] === pe.pointerId) {\r\n index = 1;\r\n }\r\n else if (!this._pointerIds[0]) {\r\n index = 0;\r\n }\r\n else if (!this._pointerIds[1]) {\r\n index = 1;\r\n }\r\n else {\r\n return;\r\n }\r\n this._pointerIds[index] = pe.pointerId;\r\n this._pinchingZoomRect[index] = Vector2d.create(e.offsetX, e.offsetY);\r\n },\r\n onPointerMove: function(e) {\r\n var pe = e;\r\n var index = 0;\r\n if (this._pointerIds[0] === pe.pointerId) {\r\n index = 0;\r\n }\r\n else if (this._pointerIds[1] === pe.pointerId) {\r\n index = 1;\r\n }\r\n else {\r\n return;\r\n }\r\n if (this._pinchingZoomRect[0] != null && this._pinchingZoomRect[1] != null) {\r\n var oldDist = this.getDistance(this._pinchingZoomRect[0], this._pinchingZoomRect[1]);\r\n var newRect = Vector2d.create(e.offsetX, e.offsetY);\r\n var newDist0 = this.getDistance(newRect, this._pinchingZoomRect[0]);\r\n var ratio0 = oldDist / newDist0;\r\n var abslog0 = Math.abs(Math.log(ratio0));\r\n if (!isFinite(abslog0)) {\r\n abslog0 = 1000;\r\n }\r\n var newDist1 = this.getDistance(newRect, this._pinchingZoomRect[1]);\r\n var ratio1 = oldDist / newDist1;\r\n var abslog1 = Math.abs(Math.log(ratio1));\r\n if (!isFinite(abslog1)) {\r\n abslog1 = 1000;\r\n }\r\n if (abslog1 < abslog0) {\r\n this._pinchingZoomRect[0] = newRect;\r\n this.zoom(ratio1);\r\n }\r\n else {\r\n this._pinchingZoomRect[1] = newRect;\r\n this.zoom(ratio0);\r\n }\r\n }\r\n else {\r\n this._pinchingZoomRect[index] = Vector2d.create(e.offsetX, e.offsetY);\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n },\r\n onPointerUp: function(e) {\r\n var pe = e;\r\n if (this._pointerIds[0] === pe.pointerId) {\r\n this._pointerIds[0] = 0;\r\n this._pinchingZoomRect[0] = null;\r\n }\r\n if (this._pointerIds[1] === pe.pointerId) {\r\n this._pointerIds[1] = 0;\r\n this._pinchingZoomRect[1] = null;\r\n }\r\n },\r\n onMouseDown: function(e) {\r\n document.addEventListener('mousemove', ss.bind('onMouseMove', this), false);\r\n document.addEventListener('mouseup', ss.bind('onMouseUp', this), false);\r\n if (this.uiController != null) {\r\n if (this.uiController.mouseDown(this, e)) {\r\n return;\r\n }\r\n }\r\n this._mouseDown = true;\r\n this._lastX = Mouse.offsetX(this.canvas, e);\r\n this._lastY = Mouse.offsetY(this.canvas, e);\r\n },\r\n onMouseMove: function(e) {\r\n this._lastMouseMove = ss.now();\r\n this._hoverTextPoint = Vector2d.create(Mouse.offsetX(this.canvas, e), Mouse.offsetY(this.canvas, e));\r\n this._hoverText = '';\r\n if (this._mouseDown) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moved = true;\r\n if (e.ctrlKey) {\r\n this._tilt(Mouse.offsetX(this.canvas, e) - this._lastX, Mouse.offsetY(this.canvas, e) - this._lastY);\r\n }\r\n else {\r\n this.move(Mouse.offsetX(this.canvas, e) - this._lastX, Mouse.offsetY(this.canvas, e) - this._lastY);\r\n }\r\n this._lastX = Mouse.offsetX(this.canvas, e);\r\n this._lastY = Mouse.offsetY(this.canvas, e);\r\n }\r\n else {\r\n if (this.uiController != null) {\r\n if (this.uiController.mouseMove(this, e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n }\r\n }\r\n },\r\n onMouseUp: function(e) {\r\n document.removeEventListener('mousemove', ss.bind('onMouseMove', this), false);\r\n document.removeEventListener('mouseup', ss.bind('onMouseUp', this), false);\r\n if (this.uiController != null) {\r\n if (this.uiController.mouseUp(this, e)) {\r\n this._mouseDown = false;\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n if (this._mouseDown && !this._moved) {\r\n var raDecDown = this.getCoordinatesForScreenPoint(Mouse.offsetX(this.canvas, e), Mouse.offsetY(this.canvas, e));\r\n if (!this._annotationclicked(raDecDown.x, raDecDown.y, Mouse.offsetX(this.canvas, e), Mouse.offsetY(this.canvas, e))) {\r\n WWTControl.scriptInterface._fireClick(raDecDown.x, raDecDown.y);\r\n }\r\n }\r\n this._mouseDown = false;\r\n this._moved = false;\r\n },\r\n onMouseWheel: function(e) {\r\n var ev = e;\r\n var delta;\r\n if (!!ev.deltaY) {\r\n delta = -ev.deltaY;\r\n }\r\n else if (!!ev.detail) {\r\n delta = ev.detail * -1;\r\n }\r\n else {\r\n delta = ev.wheelDelta;\r\n }\r\n if (delta > 0) {\r\n this.zoom(0.9);\r\n }\r\n else {\r\n this.zoom(1.1);\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n },\r\n onDoubleClick: function(e) {\r\n WWTControl.showDataLayers = true;\r\n },\r\n onKeyDown: function(e) {\r\n if (this.uiController != null) {\r\n this.uiController.keyDown(this, e);\r\n }\r\n },\r\n getDistance: function(a, b) {\r\n var x;\r\n var y;\r\n x = a.x - b.x;\r\n y = a.y - b.y;\r\n return Math.sqrt(x * x + y * y);\r\n },\r\n onContextMenu: function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n },\r\n _tilt: function(x, y) {\r\n this.renderContext.targetCamera.rotation += x * 0.001;\r\n this.renderContext.targetCamera.angle += y * 0.001;\r\n if (this.renderContext.targetCamera.angle < -1.52) {\r\n this.renderContext.targetCamera.angle = -1.52;\r\n }\r\n if (this.renderContext.targetCamera.angle > 0) {\r\n this.renderContext.targetCamera.angle = 0;\r\n }\r\n },\r\n getCoordinatesForScreenPoint: function(x, y) {\r\n var result;\r\n var PickRayDir;\r\n var pt = Vector2d.create(x, y);\r\n PickRayDir = this.transformPickPointToWorldSpace(pt, this.renderContext.width, this.renderContext.height);\r\n result = Coordinates.cartesianToSphericalSky(PickRayDir);\r\n return result;\r\n },\r\n transformPickPointToWorldSpace: function(ptCursor, backBufferWidth, backBufferHeight) {\r\n var vPickRayOrig;\r\n var vPickRayDir;\r\n var v = new Vector3d();\r\n v.x = (((2 * ptCursor.x) / backBufferWidth) - 1) / this.renderContext.get_projection().get_m11();\r\n v.y = (((2 * ptCursor.y) / backBufferHeight) - 1) / this.renderContext.get_projection().get_m22();\r\n v.z = 1;\r\n var m = Matrix3d.multiplyMatrix(this.renderContext.get_view(), this.renderContext.get_world());\r\n m.invert();\r\n vPickRayDir = new Vector3d();\r\n vPickRayOrig = new Vector3d();\r\n vPickRayDir.x = v.x * m.get_m11() + v.y * m.get_m21() + v.z * m.get_m31();\r\n vPickRayDir.y = v.x * m.get_m12() + v.y * m.get_m22() + v.z * m.get_m32();\r\n vPickRayDir.z = v.x * m.get_m13() + v.y * m.get_m23() + v.z * m.get_m33();\r\n vPickRayDir.normalize();\r\n return vPickRayDir;\r\n },\r\n setup: function(canvas, startLat, startLng, startZoom) {\r\n window.addEventListener('contextmenu', ss.bind('onContextMenu', this), false);\r\n document.body.addEventListener('keydown', ss.bind('onKeyDown', this), false);\r\n canvas.addEventListener('dblclick', ss.bind('onDoubleClick', this), false);\r\n canvas.addEventListener('mousedown', ss.bind('onMouseDown', this), false);\r\n canvas.addEventListener('wheel', ss.bind('onMouseWheel', this), false);\r\n canvas.addEventListener('mousewheel', ss.bind('onMouseWheel', this), false);\r\n canvas.addEventListener('DOMMouseScroll', ss.bind('onMouseWheel', this), false);\r\n canvas.addEventListener('touchstart', ss.bind('onTouchStart', this), false);\r\n canvas.addEventListener('touchmove', ss.bind('onTouchMove', this), false);\r\n canvas.addEventListener('touchend', ss.bind('onTouchEnd', this), false);\r\n canvas.addEventListener('gesturechange', ss.bind('onGestureChange', this), false);\r\n canvas.addEventListener('gesturestart', ss.bind('onGestureStart', this), false);\r\n canvas.addEventListener('gestureend', ss.bind('onGestureEnd', this), false);\r\n canvas.addEventListener('pointerdown', ss.bind('onPointerDown', this), false);\r\n canvas.addEventListener('pointermove', ss.bind('onPointerMove', this), false);\r\n canvas.addEventListener('pointerup', ss.bind('onPointerUp', this), false);\r\n this.renderContext.viewCamera.lat = startLat;\r\n this.renderContext.viewCamera.lng = startLng;\r\n this.renderContext.viewCamera.zoom = startZoom;\r\n this.renderContext.targetCamera = this.renderContext.viewCamera.copy();\r\n if (this.renderContext.gl == null) {\r\n this._foregroundCanvas = document.createElement('canvas');\r\n this._foregroundCanvas.width = canvas.width;\r\n this._foregroundCanvas.height = canvas.height;\r\n this._fgDevice = this._foregroundCanvas.getContext('2d');\r\n }\r\n Wtml.getWtmlFile(URLHelpers.singleton.engineAssetUrl('builtin-image-sets.wtml'), ss.bind('_setupComplete', this), true);\r\n },\r\n _setupComplete: function() {\r\n WWTControl.scriptInterface._fireReady();\r\n },\r\n gotoRADecZoom: function(ra, dec, zoom, instant, roll) {\r\n ra = DoubleUtilities.clamp(ra, 0, 24);\r\n dec = DoubleUtilities.clamp(dec, -90, 90);\r\n zoom = DoubleUtilities.clamp(zoom, this.get_zoomMin(), this.get_zoomMax());\r\n var rotation = (roll == null) ? WWTControl.singleton.renderContext.viewCamera.rotation : roll;\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n this.gotoTargetFull(false, instant, CameraParameters.create(dec, WWTControl.singleton.renderContext.rAtoViewLng(ra), zoom, rotation, WWTControl.singleton.renderContext.viewCamera.angle, WWTControl.singleton.renderContext.viewCamera.opacity), WWTControl.singleton.renderContext.get_foregroundImageset(), WWTControl.singleton.renderContext.get_backgroundImageset());\r\n },\r\n get_solarSystemMode: function() {\r\n if (this.renderContext.get_backgroundImageset() == null) {\r\n return false;\r\n }\r\n return this.renderContext.get_backgroundImageset().get_dataSetType() === 4;\r\n },\r\n gotoTarget: function(place, noZoom, instant, trackObject) {\r\n if (place == null) {\r\n return;\r\n }\r\n if ((trackObject && this.get_solarSystemMode())) {\r\n if ((place.get_classification() === 536870912 && place.get_type() !== 4) || (place.get_classification() === 1) || (place.get_classification() === 1048576) && place.get_distance() > 0) {\r\n var target = 65536;\r\n if (place.get_classification() === 1 || place.get_classification() === 1048576) {\r\n target = 20;\r\n }\r\n else {\r\n try {\r\n if (place.get_target() !== 65536) {\r\n target = place.get_target();\r\n }\r\n else {\r\n target = Planets.getPlanetIDFromName(place.get_name());\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n if (target !== 65536) {\r\n this._trackingObject = place;\r\n if (target === this._solarSystemTrack && !(place.get_classification() === 1 || place.get_classification() === 1048576)) {\r\n this.gotoTarget3(place.get_camParams(), noZoom, instant);\r\n return;\r\n }\r\n var jumpTime = 4;\r\n if (target === 20) {\r\n jumpTime = 17;\r\n }\r\n else {\r\n jumpTime += 13 * (101 - Settings.get_active().get_solarSystemScale()) / 100;\r\n }\r\n if (instant) {\r\n jumpTime = 1;\r\n }\r\n var camTo = this.renderContext.viewCamera.copy();\r\n camTo.targetReferenceFrame = '';\r\n camTo.target = target;\r\n var zoom = 10;\r\n if (target === 20) {\r\n if (place.get_classification() === 1048576) {\r\n zoom = 1404946007758;\r\n }\r\n else {\r\n zoom = 63239.6717 * 100;\r\n }\r\n var vect = Coordinates.raDecTo3dAu(place.get_RA(), place.get_dec(), place.get_distance());\r\n var ecliptic = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow()) / 180 * Math.PI;\r\n vect.rotateX(ecliptic);\r\n camTo.viewTarget = Vector3d.negate(camTo.viewTarget);\r\n }\r\n else {\r\n camTo.viewTarget = Planets.getPlanet3dLocationJD(target, SpaceTimeController.getJNowForFutureTime(jumpTime));\r\n switch (target) {\r\n case 0:\r\n zoom = 0.6;\r\n break;\r\n case 1:\r\n zoom = 0.0004;\r\n break;\r\n case 2:\r\n zoom = 0.0004;\r\n break;\r\n case 3:\r\n zoom = 0.0004;\r\n break;\r\n case 4:\r\n zoom = 0.007;\r\n break;\r\n case 5:\r\n zoom = 0.007;\r\n break;\r\n case 6:\r\n zoom = 0.004;\r\n break;\r\n case 7:\r\n zoom = 0.004;\r\n break;\r\n case 8:\r\n zoom = 0.0004;\r\n break;\r\n case 9:\r\n zoom = 0.0004;\r\n break;\r\n case 10:\r\n zoom = 0.0004;\r\n break;\r\n case 11:\r\n zoom = 0.0004;\r\n break;\r\n case 12:\r\n zoom = 0.0004;\r\n break;\r\n case 13:\r\n zoom = 0.0004;\r\n break;\r\n case 19:\r\n zoom = 0.0004;\r\n break;\r\n case 20:\r\n zoom = 10;\r\n break;\r\n default:\r\n break;\r\n }\r\n zoom = zoom * Settings.get_active().get_solarSystemScale();\r\n }\r\n var fromParams = this.renderContext.viewCamera.copy();\r\n if (this._solarSystemTrack === 20 && !ss.emptyString(this.renderContext.get_trackingFrame())) {\r\n fromParams = this.renderContext.customTrackingParams;\r\n this.renderContext.set_trackingFrame('');\r\n }\r\n camTo.zoom = zoom;\r\n var toVector = camTo.viewTarget;\r\n toVector.subtract(fromParams.viewTarget);\r\n if (place.get_classification() === 1) {\r\n toVector = Vector3d.negate(toVector);\r\n }\r\n if (!!toVector.length()) {\r\n var raDec = toVector.toRaDec();\r\n if (target === 20) {\r\n camTo.lat = -raDec.y;\r\n }\r\n else {\r\n camTo.lat = raDec.y;\r\n }\r\n camTo.lng = raDec.x * 15 - 90;\r\n }\r\n else {\r\n camTo.lat = this.renderContext.viewCamera.lat;\r\n camTo.lng = this.renderContext.viewCamera.lng;\r\n }\r\n if (target !== 20) {\r\n camTo.viewTarget = Planets.getPlanetTargetPoint(target, camTo.lat, camTo.lng, SpaceTimeController.getJNowForFutureTime(jumpTime));\r\n }\r\n var solarMover = new ViewMoverKenBurnsStyle(fromParams, camTo, jumpTime, SpaceTimeController.get_now(), SpaceTimeController.getTimeForFutureTime(jumpTime), 3);\r\n solarMover.fastDirectionMove = true;\r\n this.set__mover(solarMover);\r\n return;\r\n }\r\n }\r\n }\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n var camParams = place.get_camParams().copy();\r\n if (this.renderContext.get_backgroundImageset() != null && place.get_type() !== this.renderContext.get_backgroundImageset().get_dataSetType()) {\r\n this.renderContext.targetCamera = place.get_camParams().copy();\r\n this.renderContext.viewCamera = this.renderContext.targetCamera.copy();\r\n this.renderContext.set_backgroundImageset(this.getDefaultImageset(place.get_type(), 3));\r\n instant = true;\r\n }\r\n else if (this.get_solarSystemMode() && place.get_target() !== this._solarSystemTrack) {\r\n this.renderContext.targetCamera = place.get_camParams().copy();\r\n this.renderContext.viewCamera = this.renderContext.targetCamera.copy();\r\n this._solarSystemTrack = place.get_target();\r\n instant = true;\r\n }\r\n if (place.get_classification() === 128) {\r\n camParams.zoom = this.get_zoomMax();\r\n this.gotoTargetFull(false, instant, camParams, null, null);\r\n }\r\n else {\r\n this._solarSystemTrack = place.get_target();\r\n this.gotoTargetFull(noZoom, instant, camParams, place.get_studyImageset(), place.get_backgroundImageset());\r\n if (trackObject) {\r\n this._tracking = true;\r\n this._trackingObject = place;\r\n }\r\n }\r\n },\r\n gotoTarget3: function(camParams, noZoom, instant) {\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n this.gotoTargetFull(noZoom, instant, camParams, this.renderContext.get_foregroundImageset(), this.renderContext.get_backgroundImageset());\r\n },\r\n gotoTargetFull: function(noZoom, instant, cameraParams, studyImageSet, backgroundImageSet) {\r\n WWTControl.set_renderNeeded(true);\r\n this._tracking = false;\r\n this._trackingObject = null;\r\n this._targetStudyImageset = studyImageSet;\r\n this._targetBackgroundImageset = backgroundImageSet;\r\n if (noZoom) {\r\n cameraParams.zoom = this.renderContext.viewCamera.zoom;\r\n cameraParams.angle = this.renderContext.viewCamera.angle;\r\n cameraParams.rotation = this.renderContext.viewCamera.rotation;\r\n }\r\n else {\r\n if (cameraParams.zoom === -1 || !cameraParams.zoom) {\r\n if (this.renderContext.space) {\r\n cameraParams.zoom = 1.40625;\r\n }\r\n else {\r\n cameraParams.zoom = 0.09;\r\n }\r\n }\r\n }\r\n if (instant || (Math.abs(this.renderContext.viewCamera.lat - cameraParams.lat) < 1E-12 && Math.abs(this.renderContext.viewCamera.lng - cameraParams.lng) < 1E-12 && Math.abs(this.renderContext.viewCamera.zoom - cameraParams.zoom) < 1E-12 && Math.abs(this.renderContext.viewCamera.rotation - cameraParams.rotation) < 1E-12)) {\r\n this.set__mover(null);\r\n this.renderContext.targetCamera = cameraParams.copy();\r\n this.renderContext.viewCamera = this.renderContext.targetCamera.copy();\r\n if (this.renderContext.space && Settings.get_active().get_galacticMode()) {\r\n var gPoint = Coordinates.j2000toGalactic(this.renderContext.viewCamera.get_RA() * 15, this.renderContext.viewCamera.get_dec());\r\n this.renderContext.targetAlt = this.renderContext.alt = gPoint[1];\r\n this.renderContext.targetAz = this.renderContext.az = gPoint[0];\r\n }\r\n else if (this.renderContext.space && Settings.get_active().get_localHorizonMode()) {\r\n var currentAltAz = Coordinates.equitorialToHorizon(Coordinates.fromRaDec(this.renderContext.viewCamera.get_RA(), this.renderContext.viewCamera.get_dec()), SpaceTimeController.get_location(), SpaceTimeController.get_now());\r\n this.renderContext.targetAlt = this.renderContext.alt = currentAltAz.get_alt();\r\n this.renderContext.targetAz = this.renderContext.az = currentAltAz.get_az();\r\n }\r\n this._mover_Midpoint();\r\n }\r\n else {\r\n this.set__mover(ViewMoverSlew.create(this.renderContext.viewCamera, cameraParams));\r\n WWTControl.set_renderNeeded(true);\r\n this.get__mover().set_midpoint(ss.bind('_mover_Midpoint', this));\r\n }\r\n },\r\n _freezeView: function() {\r\n this.renderContext.viewCamera = this.renderContext.targetCamera.copy();\r\n this.set__mover(null);\r\n },\r\n get__mover: function() {\r\n return this.renderContext.viewMover;\r\n },\r\n set__mover: function(value) {\r\n this.renderContext.viewMover = value;\r\n WWTControl.set_renderNeeded(true);\r\n return value;\r\n },\r\n fadeInImageSet: function(newImageSet) {\r\n if (this.renderContext.get_backgroundImageset() != null && newImageSet.get_dataSetType() !== this.renderContext.get_backgroundImageset().get_dataSetType()) {\r\n TileCache.purgeQueue();\r\n TileCache.clearCache();\r\n }\r\n this.renderContext.set_backgroundImageset(newImageSet);\r\n },\r\n _mover_Midpoint: function() {\r\n if ((this._targetStudyImageset != null && this.renderContext.get_foregroundImageset() == null) || (this.renderContext.get_foregroundImageset() != null && !this.renderContext.get_foregroundImageset().equals(this._targetStudyImageset))) {\r\n this.renderContext.set_foregroundImageset(this._targetStudyImageset);\r\n }\r\n if (this.renderContext.get_backgroundImageset() != null && (this._targetBackgroundImageset != null && !this.renderContext.get_backgroundImageset().equals(this._targetBackgroundImageset))) {\r\n if (this._targetBackgroundImageset != null && this._targetBackgroundImageset.get_generic()) {\r\n this.fadeInImageSet(this._getRealImagesetFromGeneric(this._targetBackgroundImageset));\r\n }\r\n else {\r\n this.fadeInImageSet(this._targetBackgroundImageset);\r\n }\r\n }\r\n },\r\n getDefaultImageset: function(imageSetType, bandPass) {\r\n var $enum1 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_defaultSet() && imageset.get_bandPass() === bandPass && imageset.get_dataSetType() === imageSetType) {\r\n return imageset;\r\n }\r\n }\r\n var $enum2 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum2.moveNext()) {\r\n var imageset = $enum2.current;\r\n if (imageset.get_bandPass() === bandPass && imageset.get_dataSetType() === imageSetType) {\r\n return imageset;\r\n }\r\n }\r\n var $enum3 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum3.moveNext()) {\r\n var imageset = $enum3.current;\r\n if (imageset.get_dataSetType() === imageSetType) {\r\n return imageset;\r\n }\r\n }\r\n return WWTControl.imageSets[0];\r\n },\r\n _getRealImagesetFromGeneric: function(generic) {\r\n var $enum1 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_defaultSet() && imageset.get_bandPass() === generic.get_bandPass() && imageset.get_dataSetType() === generic.get_dataSetType()) {\r\n return imageset;\r\n }\r\n }\r\n var $enum2 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum2.moveNext()) {\r\n var imageset = $enum2.current;\r\n if (imageset.get_bandPass() === generic.get_bandPass() && imageset.get_dataSetType() === generic.get_dataSetType()) {\r\n return imageset;\r\n }\r\n }\r\n return WWTControl.imageSets[0];\r\n },\r\n _hideUI: function(p) {\r\n },\r\n createTour: function(name) {\r\n if (ss.canCast(this.uiController, TourPlayer)) {\r\n var player = this.uiController;\r\n player.stop(false);\r\n }\r\n this.tour = new TourDocument();\r\n this.tour.set_title(name);\r\n this.setupTour();\r\n this.tour.set_editMode(true);\r\n return this.tour;\r\n },\r\n setupTour: function() {\r\n this.tourEdit = new TourEditTab();\r\n this.tourEdit.set_tour(this.tour);\r\n this.tour.set_currentTourstopIndex(0);\r\n this.tour.set_editMode(false);\r\n this.uiController = this.tourEdit.tourEditorUI;\r\n },\r\n loadTour: function(url) {\r\n var $this = this;\r\n\r\n if (ss.canCast(this.uiController, TourPlayer)) {\r\n var player = this.uiController;\r\n player.stop(false);\r\n }\r\n this.tour = TourDocument.fromUrl(url, function() {\r\n $this.setupTour();\r\n var player = new TourPlayer();\r\n player.set_tour($this.tour);\r\n WWTControl.singleton.uiController = player;\r\n WWTControl.scriptInterface._fireTourReady();\r\n });\r\n },\r\n playTour: function(url) {\r\n var $this = this;\r\n\r\n if (ss.canCast(this.uiController, TourPlayer)) {\r\n var player = this.uiController;\r\n player.stop(false);\r\n }\r\n this.tour = TourDocument.fromUrl(url, function() {\r\n $this.setupTour();\r\n $this.tourEdit.playNow(true);\r\n WWTControl.scriptInterface._fireTourReady();\r\n });\r\n },\r\n playCurrentTour: function() {\r\n if (ss.canCast(this.uiController, TourPlayer)) {\r\n var player = this.uiController;\r\n player.play();\r\n }\r\n },\r\n pauseCurrentTour: function() {\r\n if (ss.canCast(this.uiController, TourPlayer)) {\r\n var player = this.uiController;\r\n player.pauseTour();\r\n }\r\n },\r\n stopCurrentTour: function() {\r\n if (ss.canCast(this.uiController, TourPlayer)) {\r\n var player = this.uiController;\r\n player.stop(false);\r\n }\r\n },\r\n _closeTour: function() {\r\n },\r\n getImagesetByName: function(name) {\r\n var $enum1 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_name().toLowerCase().indexOf(name.toLowerCase()) > -1) {\r\n return imageset;\r\n }\r\n }\r\n return null;\r\n },\r\n getImageSetByUrl: function(url) {\r\n var $enum1 = ss.enumerate(WWTControl.imageSets);\r\n while ($enum1.moveNext()) {\r\n var imageset = $enum1.current;\r\n if (imageset.get_url() === url) {\r\n return imageset;\r\n }\r\n }\r\n return null;\r\n },\r\n setBackgroundImageByName: function(name) {\r\n var newBackground = this.getImagesetByName(name);\r\n if (newBackground != null) {\r\n this.renderContext.set_backgroundImageset(newBackground);\r\n }\r\n },\r\n setForegroundImageByName: function(name) {\r\n var newForeground = this.getImagesetByName(name);\r\n if (newForeground != null) {\r\n this.renderContext.set_foregroundImageset(newForeground);\r\n }\r\n },\r\n addCatalogHips: function(catalogHips) {\r\n this.renderContext.addCatalogHips(catalogHips, null);\r\n },\r\n addCatalogHipsByName: function(name) {\r\n this.addCatalogHipsByNameWithCallback(name, null);\r\n },\r\n addCatalogHipsByNameWithCallback: function(name, onLoad) {\r\n var catalogHips = this.getImagesetByName(name);\r\n if (catalogHips != null) {\r\n this.renderContext.addCatalogHips(catalogHips, onLoad);\r\n }\r\n },\r\n removeCatalogHipsByName: function(name) {\r\n var catalogHips = this.getImagesetByName(name);\r\n if (catalogHips != null) {\r\n this.renderContext.removeCatalogHips(catalogHips);\r\n }\r\n },\r\n getCatalogHipsByName: function(name) {\r\n return this.renderContext.getCatalogHipsByName(name);\r\n },\r\n getCatalogHipsDataInView: function(name, limit, onComplete) {\r\n var catalogHips = this.getImagesetByName(name);\r\n if (catalogHips != null) {\r\n this.renderContext.getCatalogHipsDataInView(catalogHips, limit, onComplete);\r\n }\r\n },\r\n setCutsForFits: function(imagesetName, min, max) {\r\n var imageset = this.getImagesetByName(imagesetName);\r\n if (imageset != null && imageset.get_fitsProperties() != null) {\r\n imageset.get_fitsProperties().lowerCut = min;\r\n imageset.get_fitsProperties().upperCut = max;\r\n }\r\n else {\r\n console.log(imagesetName + ' not found');\r\n }\r\n },\r\n setColorMapForFits: function(imagesetName, colorMapName) {\r\n var imageset = this.getImagesetByName(imagesetName);\r\n if (imageset != null && imageset.get_fitsProperties() != null) {\r\n imageset.get_fitsProperties().colorMapName = colorMapName;\r\n }\r\n else {\r\n console.log(imagesetName + ' not found');\r\n }\r\n },\r\n setScaleTypeForFits: function(imagesetName, scaleType) {\r\n var imageset = this.getImagesetByName(imagesetName);\r\n if (imageset != null && imageset.get_fitsProperties() != null) {\r\n imageset.get_fitsProperties().scaleType = scaleType;\r\n }\r\n else {\r\n console.log(imagesetName + ' not found');\r\n }\r\n },\r\n _drawCrosshairs: function(context) {\r\n if (context.gl == null) {\r\n var ctx = context.device;\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.strokeStyle = Settings.get_current().get_crosshairsColor();\r\n ctx.lineWidth = 2;\r\n var x = context.width / 2, y = context.height / 2;\r\n var halfLength = 5;\r\n ctx.moveTo(x, y + halfLength);\r\n ctx.lineTo(x, y - halfLength);\r\n ctx.moveTo(x + halfLength, y);\r\n ctx.lineTo(x - halfLength, y);\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n else {\r\n if (this._crossHairs == null) {\r\n var halfHeight = 0.03;\r\n var halfWidth = halfHeight * context.height / context.width;\r\n this._crossHairs = new SimpleLineList();\r\n this._crossHairs.set_depthBuffered(false);\r\n this._crossHairs.pure2D = true;\r\n this._crossHairs.addLine(Vector3d.create(-halfWidth, 0, 0), Vector3d.create(halfWidth, 0, 0));\r\n this._crossHairs.addLine(Vector3d.create(0, -halfHeight, 0), Vector3d.create(0, halfHeight, 0));\r\n }\r\n this._crossHairs.drawLines(context, 1, Colors.get_white());\r\n }\r\n },\r\n captureThumbnail: function(blobReady) {\r\n this.renderOneFrame();\r\n var image = document.createElement('img');\r\n image.addEventListener('load', function(e) {\r\n var imageAspect = (image.width) / image.height;\r\n var clientAspect = 96 / 45;\r\n var cw = 96;\r\n var ch = 45;\r\n if (imageAspect < clientAspect) {\r\n ch = ss.truncate((cw / imageAspect));\r\n }\r\n else {\r\n cw = ss.truncate((ch * imageAspect));\r\n }\r\n var cx = (96 - cw) / 2;\r\n var cy = (45 - ch) / 2;\r\n var temp = document.createElement('canvas');\r\n temp.height = 45;\r\n temp.width = 96;\r\n var ctx = temp.getContext('2d');\r\n ctx.drawImage(image, cx, cy, cw, ch);\r\n if ( typeof temp.msToBlob == 'function') { var blob = temp.msToBlob(); blobReady(blob); } else { temp.toBlob(blobReady, 'image/jpeg'); };\r\n }, false);\r\n image.src = WWTControl.singleton.canvas.toDataURL();\r\n },\r\n clampZooms: function(rc) {\r\n rc.viewCamera.zoom = DoubleUtilities.clamp(rc.viewCamera.zoom, this.get_zoomMin(), this.get_zoomMax());\r\n rc.targetCamera.zoom = DoubleUtilities.clamp(rc.targetCamera.zoom, this.get_zoomMin(), this.get_zoomMax());\r\n }\r\n };\r\n\r\n\r\n // wwtlib.WWTElementEvent\r\n\r\n function WWTElementEvent(x, y) {\r\n this.offsetX = 0;\r\n this.offsetY = 0;\r\n this.offsetX = x;\r\n this.offsetY = y;\r\n }\r\n var WWTElementEvent$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.Coordinates\r\n\r\n function Coordinates(ascention, declination) {\r\n this._ascention = 0;\r\n this._declination = 0;\r\n this._ascention = ascention + (Math.PI * 80) % (Math.PI * 2);\r\n this._declination = declination;\r\n }\r\n Coordinates.geoTo3d = function(lat, lng) {\r\n return Vector3d.create(Math.cos(lng * Coordinates.RC) * Math.cos(lat * Coordinates.RC) * 1, Math.sin(lat * Coordinates.RC) * 1, Math.sin(lng * Coordinates.RC) * Math.cos(lat * Coordinates.RC) * 1);\r\n };\r\n Coordinates.geoTo3dDouble = function(lat, lng) {\r\n return Vector3d.create(Math.cos(lng * Coordinates.RC) * Math.cos(lat * Coordinates.RC) * 1, Math.sin(lat * Coordinates.RC) * 1, Math.sin(lng * Coordinates.RC) * Math.cos(lat * Coordinates.RC) * 1);\r\n };\r\n Coordinates.geoTo3dRad = function(lat, lng, radius) {\r\n return Vector3d.create(Math.cos(lng * Coordinates.RC) * Math.cos(lat * Coordinates.RC) * radius, Math.sin(lat * Coordinates.RC) * radius, Math.sin(lng * Coordinates.RC) * Math.cos(lat * Coordinates.RC) * radius);\r\n };\r\n Coordinates.raDecTo3d = function(ra, dec) {\r\n return Vector3d.create(Math.cos(ra * Coordinates.RCRA) * Math.cos(dec * Coordinates.RC) * 1, Math.sin(dec * Coordinates.RC) * 1, Math.sin(ra * Coordinates.RCRA) * Math.cos(dec * Coordinates.RC) * 1);\r\n };\r\n Coordinates.raDecTo3dAu = function(ra, dec, au) {\r\n return Vector3d.create(Math.cos(ra * Coordinates.RCRA) * Math.cos(dec * Coordinates.RC) * au, Math.sin(dec * Coordinates.RC) * au, Math.sin(ra * Coordinates.RCRA) * Math.cos(dec * Coordinates.RC) * au);\r\n };\r\n Coordinates.raDecTo3dMat = function(ra, dec, mat) {\r\n return Vector3d._transformCoordinate(Vector3d.create((Math.cos(ra * Coordinates.RCRA) * Math.cos(dec * Coordinates.RC) * 1), (Math.sin(dec * Coordinates.RC) * 1), (Math.sin(ra * Coordinates.RCRA) * Math.cos(dec * Coordinates.RC) * 1)), mat);\r\n };\r\n Coordinates.raDecTo3dPointRad = function(point, radius) {\r\n point.set_dec(-point.get_dec());\r\n return Vector3d.create((Math.cos(point.get_RA() * Coordinates.RCRA) * Math.cos(point.get_dec() * Coordinates.RC) * radius), (Math.sin(point.get_dec() * Coordinates.RC) * radius), (Math.sin(point.get_RA() * Coordinates.RCRA) * Math.cos(point.get_dec() * Coordinates.RC) * radius));\r\n };\r\n Coordinates.sterographicTo3d = function(x, y, radius, standardLat, meridean, falseEasting, falseNorthing, scale, north) {\r\n var lat = 90;\r\n var lng = 0;\r\n x -= falseEasting;\r\n y -= falseNorthing;\r\n if (!!x || !!y) {\r\n var re = (1 + Math.sin(Math.abs(standardLat) / 180 * Math.PI)) * 6371000 / scale;\r\n var rere = re * re;\r\n var c1 = 180 / Math.PI;\r\n if (!x) {\r\n lng = (90 * y < 0) ? -1 : 1;\r\n }\r\n else {\r\n lng = Math.atan2(y, x) * c1;\r\n }\r\n var len = (x * x) + (y * y);\r\n lat = (rere - len) / (rere + len);\r\n lat = Math.asin(lat) * c1;\r\n if (!north) {\r\n lat = -lat;\r\n lng = -lng;\r\n meridean = -meridean;\r\n }\r\n }\r\n return Coordinates.geoTo3dRad(lat, 90 + lng + meridean, radius);\r\n };\r\n Coordinates.equitorialToHorizon = function(equitorial, location, utc) {\r\n var hourAngle = Coordinates.mstFromUTC2(utc, location.get_lng()) - (equitorial.get_RA() * 15);\r\n if (hourAngle < 0) {\r\n hourAngle += 360;\r\n }\r\n var ha = hourAngle * Coordinates.RC;\r\n var dec = equitorial.get_dec() * Coordinates.RC;\r\n var lat = location.get_lat() * Coordinates.RC;\r\n var sinAlt = Math.sin(dec) * Math.sin(lat) + Math.cos(dec) * Math.cos(lat) * Math.cos(ha);\r\n var altitude = Math.asin(sinAlt);\r\n var cosAzimith = (Math.sin(dec) - Math.sin(altitude) * Math.sin(lat)) / (Math.cos(altitude) * Math.cos(lat));\r\n var azimuth = Math.acos(cosAzimith);\r\n var altAz = new Coordinates(azimuth, altitude);\r\n if (Math.sin(ha) > 0) {\r\n altAz.set_az((360 - altAz.get_az()));\r\n }\r\n return altAz;\r\n };\r\n Coordinates.horizonToEquitorial = function(altAz, location, utc) {\r\n var hourAngle = Coordinates.mstFromUTC2(utc, location.get_lng());\r\n var haLocal;\r\n var declination;\r\n var raDec = Coordinates._altAzToRaDec(altAz.get_alt() * Coordinates.RC, altAz.get_az() * Coordinates.RC, location.get_lat() * Coordinates.RC);\r\n haLocal = raDec.x;\r\n declination = raDec.y;\r\n var ha = (haLocal / Coordinates.RC);\r\n hourAngle += ha;\r\n if (hourAngle < 0) {\r\n hourAngle += 360;\r\n }\r\n if (hourAngle > 360) {\r\n hourAngle -= 360;\r\n }\r\n return Coordinates.fromRaDec(hourAngle / 15, declination / Coordinates.RC);\r\n };\r\n Coordinates._altAzToRaDec = function(Altitude, Azimuth, Latitude) {\r\n var hrAngle = 0;\r\n var dec = 0;\r\n Azimuth = Math.PI - Azimuth;\r\n if (Azimuth < 0) {\r\n Azimuth += Math.PI * 2;\r\n }\r\n hrAngle = Math.atan2(Math.sin(Azimuth), Math.cos(Azimuth) * Math.sin(Latitude) + Math.tan(Altitude) * Math.cos(Latitude));\r\n if (hrAngle < 0) {\r\n hrAngle += Math.PI * 2;\r\n }\r\n dec = Math.asin(Math.sin(Latitude) * Math.sin(Altitude) - Math.cos(Latitude) * Math.cos(Altitude) * Math.cos(Azimuth));\r\n return Vector2d.create(hrAngle, dec);\r\n };\r\n Coordinates.mstFromUTC2 = function(utc, lng) {\r\n var year = utc.getUTCFullYear();\r\n var month = utc.getUTCMonth() + 1;\r\n var day = utc.getUTCDate();\r\n var hour = utc.getUTCHours();\r\n var minute = utc.getUTCMinutes();\r\n var second = utc.getUTCSeconds() + utc.getUTCMilliseconds() / 1000;\r\n if (month === 1 || month === 2) {\r\n year -= 1;\r\n month += 12;\r\n }\r\n var a = ss.truncate((year / 100));\r\n var b = 2 - a + Math.floor((a / 4));\r\n var c = Math.floor(365.25 * year);\r\n var d = Math.floor(30.6001 * (month + 1));\r\n var julianDays;\r\n var julianCenturies;\r\n var mst;\r\n julianDays = b + c + d - 730550.5 + day + (hour + minute / 60 + second / 3600) / 24;\r\n julianCenturies = julianDays / 36525;\r\n mst = 280.46061837 + 360.98564736629 * julianDays + 0.000387933 * julianCenturies * julianCenturies - julianCenturies * julianCenturies * julianCenturies / 38710000 + lng;\r\n if (mst > 0) {\r\n while (mst > 360) {\r\n mst = mst - 360;\r\n }\r\n }\r\n else {\r\n while (mst < 0) {\r\n mst = mst + 360;\r\n }\r\n }\r\n return mst;\r\n };\r\n Coordinates.cartesianToSpherical = function(vector) {\r\n var ascention;\r\n var declination;\r\n var radius = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\r\n var XZ = Math.sqrt(vector.x * vector.x + vector.z * vector.z);\r\n declination = Math.asin(vector.y / radius);\r\n if (0 < vector.x) {\r\n ascention = Math.asin(vector.z / XZ);\r\n }\r\n else if (0 > vector.x) {\r\n ascention = Math.PI - Math.asin(vector.z / XZ);\r\n }\r\n else {\r\n ascention = 0;\r\n }\r\n return new Coordinates(ascention, declination);\r\n };\r\n Coordinates.cartesianToSpherical2 = function(vector) {\r\n var rho = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\r\n var longitude = Math.atan2(vector.z, vector.x);\r\n var latitude = Math.asin(vector.y / rho);\r\n return new Coordinates(longitude, latitude);\r\n };\r\n Coordinates.cartesianToSphericalSky = function(vector) {\r\n var rho = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\r\n var ra = Math.atan2(vector.z, vector.x);\r\n var dec = Math.asin(-vector.y / rho);\r\n return Vector2d.create(ra / Math.PI * 12, dec / Math.PI * 180);\r\n };\r\n Coordinates.cartesianToLatLng = function(vector) {\r\n var rho = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\r\n var longitude = Math.atan2(vector.z, vector.x);\r\n var latitude = Math.asin(vector.y / rho);\r\n return Vector2d.create(longitude * 180 / Math.PI, latitude * 180 / Math.PI);\r\n };\r\n Coordinates.cartesianToSpherical3 = function(vector) {\r\n var rho = Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\r\n var longitude = Math.atan2(vector.z, vector.x);\r\n var latitude = Math.asin(vector.y / rho);\r\n return new Coordinates(longitude, latitude);\r\n };\r\n Coordinates.sign = function(target) {\r\n return (target < 0) ? -1 : 1;\r\n };\r\n Coordinates.formatDMSSign = function(angle, sign) {\r\n try {\r\n angle += (Coordinates.sign(angle) * 0.0001388888888889);\r\n var degrees = ss.truncate(angle);\r\n var minutes = ((angle - ss.truncate(angle)) * 60);\r\n var seconds = ((minutes - ss.truncate(minutes)) * 60);\r\n if (sign) {\r\n var signString = (angle > 0) ? '+' : '-';\r\n return ss.format('{3}{0:00;00}:{1:00}:{2:00}', degrees, Math.abs(ss.truncate(minutes)), Math.abs(ss.truncate(seconds)), signString);\r\n }\r\n else {\r\n return ss.format('{0:00}:{1:00}:{2:00}', degrees, Math.abs(ss.truncate(minutes)), Math.abs(ss.truncate(seconds)));\r\n }\r\n }\r\n catch ($e1) {\r\n return '';\r\n }\r\n };\r\n Coordinates.twoPlaces = function(val) {\r\n var num = val.toString();\r\n if (num.length < 2) {\r\n num = '0' + num;\r\n }\r\n return num;\r\n };\r\n Coordinates.formatDMS = function(angle) {\r\n try {\r\n angle += (((angle < 0) ? -1 : 1) * 0.0001388888888889);\r\n var degrees = Math.abs(ss.truncate(angle));\r\n var minutes = ((angle - ss.truncate(angle)) * 60);\r\n var seconds = ((minutes - ss.truncate(minutes)) * 60);\r\n var sign = (angle < 0) ? '-' : '';\r\n return ss.format('{3}{0}:{1}:{2}', Math.abs(degrees), Coordinates.twoPlaces(Math.abs(ss.truncate(minutes))), Coordinates.twoPlaces(Math.abs(ss.truncate(seconds))), sign);\r\n }\r\n catch ($e1) {\r\n return '';\r\n }\r\n };\r\n Coordinates.formatDMSWide = function(angle) {\r\n try {\r\n angle += (Coordinates.sign(angle) * 0.0001388888888889);\r\n var degrees = Math.abs(ss.truncate(angle));\r\n var minutes = ((angle - ss.truncate(angle)) * 60);\r\n var seconds = ((minutes - ss.truncate(minutes)) * 60);\r\n var sign = (angle < 0) ? '-' : '';\r\n return ss.format('{3}{0:00} : {1:00} : {2:00}', degrees, Math.abs(ss.truncate(minutes)), Math.abs(ss.truncate(seconds)), sign);\r\n }\r\n catch ($e1) {\r\n return '';\r\n }\r\n };\r\n Coordinates.formatHMS = function(angle) {\r\n try {\r\n angle += (Coordinates.sign(angle) * 0.0001388888888889);\r\n var degrees = ss.truncate(angle);\r\n var minutes = ((angle - ss.truncate(angle)) * 60);\r\n var seconds = ((minutes - ss.truncate(minutes)) * 60);\r\n return ss.format('{0:00}h{1:00}m{2:00}s', degrees, Math.abs(ss.truncate(minutes)), Math.abs(ss.truncate(seconds)));\r\n }\r\n catch ($e1) {\r\n return '';\r\n }\r\n };\r\n Coordinates.parseRA = function(data, degrees) {\r\n data = ss.trim(data).toLowerCase();\r\n if (data.indexOf('d') > -1 || data.indexOf('\\u00b0') > -1) {\r\n degrees = true;\r\n }\r\n if (data.indexOf('h') > -1 || data.indexOf(':') > -1) {\r\n degrees = false;\r\n }\r\n var ra = Coordinates.parse(data) / ((degrees) ? 15 : 1);\r\n return Math.max(Math.min(ra, 24), 0);\r\n };\r\n Coordinates.parseDec = function(data) {\r\n var dec = Coordinates.parse(data);\r\n return Math.max(Math.min(dec, 90), -90);\r\n };\r\n Coordinates.parse = function(data) {\r\n try {\r\n data = ss.trim(data).toLowerCase();\r\n data = ss.replaceString(ss.replaceString(ss.replaceString(ss.replaceString(ss.replaceString(ss.replaceString(data, 'd ', 'd'), 'h ', 'h'), 'm ', 'm'), 's ', 's'), \"' \", \"'\"), '\" ', '\"');\r\n if (Util.stringContains(data, [ ':', ' ', 'd', 'h', 'm', 's', \"'\", '\"', '\\u00b0' ])) {\r\n var hours = 0;\r\n var minutes = 0;\r\n var seconds = 0;\r\n var sign = 0;\r\n var parts = Util.splitString(data, [ ':', ' ', 'd', 'h', 'm', 's', \"'\", '\"', '\\u00b0' ]);\r\n if (parts.length > 0) {\r\n if (!ss.emptyString(parts[0])) {\r\n hours = Math.abs(parseFloat(parts[0]));\r\n sign = (parseFloat(parts[0]) < 0) ? -1 : 1;\r\n if (parts[0].indexOf('-') > -1) {\r\n sign = -1;\r\n }\r\n }\r\n }\r\n if (parts.length > 1) {\r\n if (!ss.emptyString(parts[1])) {\r\n minutes = parseFloat(parts[1]);\r\n }\r\n }\r\n if (parts.length > 2) {\r\n if (!ss.emptyString(parts[2])) {\r\n seconds = parseFloat(parts[2]);\r\n }\r\n }\r\n if (!sign) {\r\n sign = 1;\r\n }\r\n return sign * (hours + minutes / 60 + seconds / 3600);\r\n }\r\n else {\r\n var val = 0;\r\n try {\r\n val = parseFloat(data);\r\n }\r\n catch ($e1) {\r\n val = 0;\r\n }\r\n return val;\r\n }\r\n }\r\n catch ($e2) {\r\n return 0;\r\n }\r\n };\r\n Coordinates.fromRaDec = function(ra, dec) {\r\n return new Coordinates((ra - 12) * 15 * Coordinates.RC, dec * Coordinates.RC);\r\n };\r\n Coordinates.fromLatLng = function(lat, lng) {\r\n return new Coordinates(lng * Coordinates.RC, lat * Coordinates.RC);\r\n };\r\n Coordinates.dmsToDegrees = function(Degrees, Minutes, Seconds) {\r\n return Degrees + Minutes / 60 + Seconds / 3600;\r\n };\r\n Coordinates.degreesToRadians = function(Degrees) {\r\n return Degrees * 0.0174532925199433;\r\n };\r\n Coordinates.radiansToDegrees = function(Radians) {\r\n return Radians * 57.2957795130823;\r\n };\r\n Coordinates.radiansToHours = function(Radians) {\r\n return Radians * 3.81971863420549;\r\n };\r\n Coordinates.hoursToRadians = function(Hours) {\r\n return Hours * 0.261799387799149;\r\n };\r\n Coordinates.hoursToDegrees = function(Hours) {\r\n return Hours * 15;\r\n };\r\n Coordinates.degreesToHours = function(Degrees) {\r\n return Degrees / 15;\r\n };\r\n Coordinates.PI = function() {\r\n return 3.14159265358979;\r\n };\r\n Coordinates.mapTo0To360Range = function(Degrees) {\r\n var Value = Degrees;\r\n while (Value < 0) {\r\n Value += 360;\r\n }\r\n while (Value > 360) {\r\n Value -= 360;\r\n }\r\n return Value;\r\n };\r\n Coordinates.mapTo0To24Range = function(HourAngle) {\r\n var Value = HourAngle;\r\n while (Value < 0) {\r\n Value += 24;\r\n }\r\n while (Value > 24) {\r\n Value -= 24;\r\n }\r\n return Value;\r\n };\r\n Coordinates.meanObliquityOfEcliptic = function(JD) {\r\n var U = (JD - 2451545) / 3652500;\r\n var Usquared = U * U;\r\n var Ucubed = Usquared * U;\r\n var U4 = Ucubed * U;\r\n var U5 = U4 * U;\r\n var U6 = U5 * U;\r\n var U7 = U6 * U;\r\n var U8 = U7 * U;\r\n var U9 = U8 * U;\r\n var U10 = U9 * U;\r\n return Coordinates.dmsToDegrees(23, 26, 21.448) - Coordinates.dmsToDegrees(0, 0, 4680.93) * U - Coordinates.dmsToDegrees(0, 0, 1.55) * Usquared + Coordinates.dmsToDegrees(0, 0, 1999.25) * Ucubed - Coordinates.dmsToDegrees(0, 0, 51.38) * U4 - Coordinates.dmsToDegrees(0, 0, 249.67) * U5 - Coordinates.dmsToDegrees(0, 0, 39.05) * U6 + Coordinates.dmsToDegrees(0, 0, 7.12) * U7 + Coordinates.dmsToDegrees(0, 0, 27.87) * U8 + Coordinates.dmsToDegrees(0, 0, 5.79) * U9 + Coordinates.dmsToDegrees(0, 0, 2.45) * U10;\r\n };\r\n Coordinates.j2000toGalactic = function(J2000RA, J2000DEC) {\r\n var J2000pos = [ Math.cos(J2000RA / 180 * Math.PI) * Math.cos(J2000DEC / 180 * Math.PI), Math.sin(J2000RA / 180 * Math.PI) * Math.cos(J2000DEC / 180 * Math.PI), Math.sin(J2000DEC / 180 * Math.PI) ];\r\n if (Coordinates._rotationMatrix == null) {\r\n Coordinates._rotationMatrix = new Array(3);\r\n Coordinates._rotationMatrix[0] = [ -0.0548755604, -0.8734370902, -0.4838350155 ];\r\n Coordinates._rotationMatrix[1] = [ 0.4941094279, -0.44482963, 0.7469822445 ];\r\n Coordinates._rotationMatrix[2] = [ -0.867666149, -0.1980763734, 0.4559837762 ];\r\n }\r\n var Galacticpos = new Array(3);\r\n for (var i = 0; i < 3; i++) {\r\n Galacticpos[i] = J2000pos[0] * Coordinates._rotationMatrix[i][0] + J2000pos[1] * Coordinates._rotationMatrix[i][1] + J2000pos[2] * Coordinates._rotationMatrix[i][2];\r\n }\r\n var GalacticL2 = Math.atan2(Galacticpos[1], Galacticpos[0]);\r\n if (GalacticL2 < 0) {\r\n GalacticL2 = GalacticL2 + 2 * Math.PI;\r\n }\r\n if (GalacticL2 > 2 * Math.PI) {\r\n GalacticL2 = GalacticL2 - 2 * Math.PI;\r\n }\r\n var GalacticB2 = Math.atan2(Galacticpos[2], Math.sqrt(Galacticpos[0] * Galacticpos[0] + Galacticpos[1] * Galacticpos[1]));\r\n return [ GalacticL2 / Math.PI * 180, GalacticB2 / Math.PI * 180 ];\r\n };\r\n Coordinates.galacticTo3dDouble = function(l, b) {\r\n var result = Coordinates.galactictoJ2000(l, b);\r\n return Coordinates.raDecTo3dAu(result[0] / 15, result[1], 1);\r\n };\r\n Coordinates.galactictoJ2000 = function(GalacticL2, GalacticB2) {\r\n var Galacticpos = [ Math.cos(GalacticL2 / 180 * Math.PI) * Math.cos(GalacticB2 / 180 * Math.PI), Math.sin(GalacticL2 / 180 * Math.PI) * Math.cos(GalacticB2 / 180 * Math.PI), Math.sin(GalacticB2 / 180 * Math.PI) ];\r\n if (Coordinates._rotationMatrix == null) {\r\n Coordinates._rotationMatrix = new Array(3);\r\n Coordinates._rotationMatrix[0] = [ -0.0548755604, -0.8734370902, -0.4838350155 ];\r\n Coordinates._rotationMatrix[1] = [ 0.4941094279, -0.44482963, 0.7469822445 ];\r\n Coordinates._rotationMatrix[2] = [ -0.867666149, -0.1980763734, 0.4559837762 ];\r\n }\r\n var J2000pos = new Array(3);\r\n for (var i = 0; i < 3; i++) {\r\n J2000pos[i] = Galacticpos[0] * Coordinates._rotationMatrix[0][i] + Galacticpos[1] * Coordinates._rotationMatrix[1][i] + Galacticpos[2] * Coordinates._rotationMatrix[2][i];\r\n }\r\n var J2000RA = Math.atan2(J2000pos[1], J2000pos[0]);\r\n if (J2000RA < 0) {\r\n J2000RA = J2000RA + 2 * Math.PI;\r\n }\r\n if (J2000RA > 2 * Math.PI) {\r\n J2000RA = J2000RA - 2 * Math.PI;\r\n }\r\n var J2000DEC = Math.atan2(J2000pos[2], Math.sqrt(J2000pos[0] * J2000pos[0] + J2000pos[1] * J2000pos[1]));\r\n return [ J2000RA / Math.PI * 180, J2000DEC / Math.PI * 180 ];\r\n };\r\n var Coordinates$ = {\r\n distance: function(pointB) {\r\n var y = this.get_lat();\r\n var x = this.get_lng() * Math.cos(y * Coordinates.RC);\r\n var y1 = pointB.get_lat();\r\n var x1 = pointB.get_lng() * Math.cos(y1 * Coordinates.RC);\r\n return Math.sqrt((y - y1) * (y - y1) + (x - x1) * (x - x1));\r\n },\r\n distance3d: function(pointB) {\r\n var pnt1 = Coordinates.geoTo3dDouble(pointB.get_lat(), pointB.get_lng());\r\n var pnt2 = Coordinates.geoTo3dDouble(this.get_lat(), this.get_lng());\r\n var pntDiff = Vector3d.subtractVectors(pnt1, pnt2);\r\n return pntDiff.length() / Coordinates.RC;\r\n },\r\n angle: function(pointB) {\r\n var y = this.get_lat();\r\n var x = this.get_lng() * Math.cos(y * Coordinates.RC);\r\n var y1 = pointB.get_lat();\r\n var x1 = pointB.get_lng() * Math.cos(y1 * Coordinates.RC);\r\n return Math.atan2((y1 - y), (x1 - x));\r\n },\r\n get_RA: function() {\r\n return (((this._ascention / Math.PI) * 12) + 12) % 24;\r\n },\r\n set_RA: function(value) {\r\n this._ascention = (value / 12) * Math.PI;\r\n return value;\r\n },\r\n get_dec: function() {\r\n return this._declination / Coordinates.RC;\r\n },\r\n set_dec: function(value) {\r\n this._declination = value * Coordinates.RC;\r\n return value;\r\n },\r\n get_lat: function() {\r\n return this._declination / Coordinates.RC;\r\n },\r\n set_lat: function(value) {\r\n this._declination = value * Coordinates.RC;\r\n return value;\r\n },\r\n get_lng: function() {\r\n var lng = this._ascention / Coordinates.RC;\r\n if (lng <= 180) {\r\n return lng;\r\n }\r\n else {\r\n return (-180 + (180 - lng));\r\n }\r\n },\r\n set_lng: function(value) {\r\n this._ascention = ((value * Coordinates.RC) + (Math.PI * 2) % (Math.PI * 2));\r\n return value;\r\n },\r\n get_alt: function() {\r\n return this._declination / Coordinates.RC;\r\n },\r\n set_alt: function(value) {\r\n this._declination = value * Coordinates.RC;\r\n return value;\r\n },\r\n get_az: function() {\r\n return this._ascention / Coordinates.RC;\r\n },\r\n set_az: function(value) {\r\n this._ascention = value * Coordinates.RC;\r\n return value;\r\n },\r\n toString: function() {\r\n return ss.format('Lat: {0}, Lng: {1}', this.get_lat(), this.get_lng());\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Fxyf\r\n\r\n function Fxyf() {\r\n this.fx = 0;\r\n this.fy = 0;\r\n this.face = 0;\r\n HealpixTables.call(this);\r\n }\r\n Fxyf.create = function(x, y, f) {\r\n var temp = new Fxyf();\r\n temp.fx = x;\r\n temp.fy = y;\r\n temp.face = f;\r\n return temp;\r\n };\r\n Fxyf._fromHploc$1 = function(loc) {\r\n var temp = new Fxyf();\r\n var z = loc.z, phi = loc.phi;\r\n var za = Math.abs(z);\r\n var tt = HealpixUtils.fmodulo((phi * Fxyf._inv_halfpi$1), 4);\r\n if (za <= Fxyf._twothird$1) {\r\n var temp1 = 0.5 + tt;\r\n var temp2 = z * 0.75;\r\n var jp = temp1 - temp2;\r\n var jm = temp1 + temp2;\r\n var ifp = jp;\r\n var ifm = jm;\r\n var face_num = (ifp === ifm) ? (ifp | 4) : ((ifp < ifm) ? ifp : (ifm + 8));\r\n temp.fx = HealpixUtils.fmodulo(jm, 1);\r\n temp.fy = 1 - HealpixUtils.fmodulo(jp, 1);\r\n temp.face = face_num;\r\n }\r\n else {\r\n var ntt = Math.min(3, ss.truncate(tt));\r\n var tp = tt - ntt;\r\n var tmp;\r\n if ((za < 0.99) || (!loc.have_sth)) {\r\n tmp = Math.sqrt(3 * (1 - za));\r\n }\r\n else {\r\n tmp = loc.sth / Math.sqrt((1 + za) / 3);\r\n }\r\n var jp = tp * tmp;\r\n var jm = (1 - tp) * tmp;\r\n if (jp >= 1) {\r\n jp = 1;\r\n }\r\n if (jm >= 1) {\r\n jm = 1;\r\n }\r\n if (z >= 0) {\r\n temp.fx = 1 - jm;\r\n temp.fy = 1 - jp;\r\n temp.face = ntt;\r\n }\r\n else {\r\n temp.fx = jp;\r\n temp.fy = jm;\r\n temp.face = ntt + 8;\r\n }\r\n }\r\n return temp;\r\n };\r\n Fxyf.fromVector = function(v) {\r\n return Fxyf._fromHploc$1(Hploc.create(v));\r\n };\r\n var Fxyf$ = {\r\n toHploc: function() {\r\n var loc = new Hploc();\r\n var jr = HealpixTables.jrll[this.face] - this.fx - this.fy;\r\n var nr;\r\n var tmp;\r\n if (jr < 1) {\r\n nr = jr;\r\n tmp = nr * nr / 3;\r\n loc.z = 1 - tmp;\r\n if (loc.z > 0.99) {\r\n loc.sth = Math.sqrt(tmp * (2 - tmp));\r\n loc.have_sth = true;\r\n }\r\n }\r\n else if (jr > 3) {\r\n nr = 4 - jr;\r\n tmp = nr * nr / 3;\r\n loc.z = tmp - 1;\r\n if (loc.z < -0.99) {\r\n loc.sth = Math.sqrt(tmp * (2 - tmp));\r\n loc.have_sth = true;\r\n }\r\n }\r\n else {\r\n nr = 1;\r\n loc.z = (2 - jr) * 2 / 3;\r\n }\r\n tmp = HealpixTables.jpll[this.face] * nr + this.fx - this.fy;\r\n if (tmp < 0) {\r\n tmp += 8;\r\n }\r\n if (tmp >= 8) {\r\n tmp -= 8;\r\n }\r\n loc.phi = (nr < 1E-15) ? 0 : (0.5 * Fxyf._halfpi$1 * tmp) / nr;\r\n return loc;\r\n },\r\n toVec3: function() {\r\n return this.toHploc().toVec3();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.HealpixTile\r\n\r\n function HealpixTile(level, x, y, dataset, parent) {\r\n this.ipix = 0;\r\n this.indexBuffer = new Array(4);\r\n this._vertexList$1 = null;\r\n this._nside$1 = 0;\r\n this._tileIndex$1 = 0;\r\n this._face$1 = 0;\r\n this._faceX$1 = 0;\r\n this._faceY$1 = 0;\r\n this._step$1 = 0;\r\n this._subDivided$1 = false;\r\n this._catalogRows$1 = [];\r\n Tile.call(this);\r\n this.level = level;\r\n this.tileX = x;\r\n this.tileY = y;\r\n this.dataset = dataset;\r\n Tile.demEnabled = false;\r\n if (!level) {\r\n this._nside$1 = 4;\r\n }\r\n else {\r\n this._nside$1 = Math.pow(2, level + 1);\r\n }\r\n if (parent == null) {\r\n this._face$1 = x * 4 + y;\r\n this.ipix = this._face$1;\r\n }\r\n else {\r\n this.parent = parent;\r\n var parentTile = parent;\r\n this._face$1 = parentTile._face$1;\r\n this._tileIndex$1 = parentTile._tileIndex$1 * 4 + y * 2 + x;\r\n this.ipix = this._face$1 * this._nside$1 * this._nside$1 / 4 + this._tileIndex$1;\r\n this._faceX$1 = parentTile._faceX$1 * 2 + x;\r\n this._faceY$1 = parentTile._faceY$1 * 2 + y;\r\n }\r\n this.isCatalogTile = ss.keyExists(dataset.get_hipsProperties().get_properties(), 'dataproduct_type') && dataset.get_hipsProperties().get_properties()['dataproduct_type'].toLowerCase() === 'catalog';\r\n this._computeBoundingSphere$1();\r\n }\r\n var HealpixTile$ = {\r\n get_URL: function() {\r\n if (this._url$1 == null) {\r\n this._url$1 = this._getUrl$1(this.dataset, this.level, this.tileX, this.tileY);\r\n return this._url$1;\r\n }\r\n else {\r\n return this._url$1;\r\n }\r\n },\r\n _computeBoundingSphere$1: function() {\r\n this._setStep$1();\r\n this.createGeometry(null);\r\n var pointList = new Array(this._vertexList$1.length);\r\n for (var i = 0; i < this._vertexList$1.length; i++) {\r\n pointList[i] = this._vertexList$1[i].position;\r\n }\r\n this._calcSphere$1(pointList);\r\n this._setCorners$1();\r\n },\r\n createGeometry: function(renderContext) {\r\n if (this._vertexList$1 != null) {\r\n return true;\r\n }\r\n this._vertexList$1 = [];\r\n this._populateVertexList$1(this._vertexList$1, this._step$1);\r\n if (ss.keyExists(this.dataset.get_hipsProperties().get_properties(), 'hips_frame') && this.dataset.get_hipsProperties().get_properties()['hips_frame'] === 'galactic') {\r\n for (var i = 0; i < this._vertexList$1.length; i++) {\r\n var vert = this._vertexList$1[i];\r\n HealpixTile._galacticMatrix$1.multiplyVector(vert.position);\r\n }\r\n }\r\n this.triangleCount = this._step$1 * this._step$1 / 2;\r\n var ui16array = new Uint16Array(3 * this.triangleCount);\r\n var indexArray = ui16array;\r\n if (!this._subDivided$1) {\r\n try {\r\n this._vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this._vertexBuffer);\r\n var f32array = new Float32Array(this._vertexList$1.length * 5);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._vertexList$1);\r\n while ($enum1.moveNext()) {\r\n var vert = $enum1.current;\r\n index = this.addVertex(buffer, index, vert);\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n index = 0;\r\n var offset = this._vertexList$1.length / (4 * this._step$1);\r\n this._setIndexBufferForQuadrant$1(indexArray, 0, 1);\r\n if (this._step$1 > 1) {\r\n this._setIndexBufferForQuadrant$1(indexArray, 0, 0);\r\n this._setIndexBufferForQuadrant$1(indexArray, 1, 1);\r\n this._setIndexBufferForQuadrant$1(indexArray, 1, 0);\r\n }\r\n }\r\n catch (exception) {\r\n }\r\n }\r\n return true;\r\n },\r\n _setIndexBufferForQuadrant$1: function(indexArray, x, y) {\r\n var index = 0;\r\n for (var i = x * this._step$1 / 2; i < (this._step$1 / 2) * (x + 1); i++) {\r\n for (var j = y * this._step$1 / 2; j < (this._step$1 / 2) * (y + 1); j++) {\r\n indexArray[index++] = (i * (this._step$1 + 1) + j);\r\n indexArray[index++] = (1 + i * (this._step$1 + 1) + j);\r\n indexArray[index++] = (this._step$1 + 1 + i * (this._step$1 + 1) + j);\r\n indexArray[index++] = (1 + i * (this._step$1 + 1) + j);\r\n indexArray[index++] = (this._step$1 + 1 + i * (this._step$1 + 1) + j);\r\n indexArray[index++] = (this._step$1 + 2 + i * (this._step$1 + 1) + j);\r\n }\r\n }\r\n this._processIndexBuffer$1(indexArray, x * 2 + y);\r\n },\r\n _getUrl$1: function(dataset, level, x, y) {\r\n var extension = this._getHipsFileExtension$1();\r\n var tileTextureIndex = -1;\r\n if (!level) {\r\n tileTextureIndex = this._face$1;\r\n }\r\n else {\r\n tileTextureIndex = this._face$1 * this._nside$1 * this._nside$1 / 4 + this._tileIndex$1;\r\n }\r\n var sb = new ss.StringBuilder();\r\n var subDirIndex = Math.floor(tileTextureIndex / 10000) * 10000;\r\n return ss.format(dataset.get_url(), level.toString(), subDirIndex.toString(), tileTextureIndex.toString() + extension);\r\n },\r\n _getHipsFileExtension$1: function() {\r\n if (this.dataset.get_extension().toLowerCase().indexOf('png') > -1) {\r\n return '.png';\r\n }\r\n if (this.dataset.get_extension().toLowerCase().indexOf('jpeg') > -1 || this.dataset.get_extension().toLowerCase().indexOf('jpg') > -1) {\r\n return '.jpg';\r\n }\r\n if (this.dataset.get_extension().toLowerCase().indexOf('tsv') > -1) {\r\n return '.tsv';\r\n }\r\n if (this.dataset.get_extension().toLowerCase().indexOf('fits') > -1) {\r\n return '.fits';\r\n }\r\n return '.jpg';\r\n },\r\n isTileBigEnough: function(renderContext) {\r\n if (this.dataset.get_dataSetType() === 1) {\r\n var arcPixels = (180 / (Math.pow(2, this.level) * 4));\r\n return (renderContext.get_fovScale() < arcPixels);\r\n }\r\n else {\r\n var arcPixels = (3600 / (Math.pow(2, this.level) * 4));\r\n return (renderContext.get_fovScale() < arcPixels);\r\n }\r\n },\r\n _boundaries$1: function(x, y, step) {\r\n var nside = step * Math.pow(2, this.level);\r\n var points = new Array(4);\r\n var xyf = Xyf.create(x + this._faceX$1 * step, y + this._faceY$1 * step, this._face$1);\r\n var dc = 0.5 / nside;\r\n var xc = (xyf.ix + 0.5) / nside;\r\n var yc = (xyf.iy + 0.5) / nside;\r\n points[0] = Fxyf.create(xc + dc, yc + dc, xyf.face).toVec3();\r\n points[1] = Fxyf.create(xc - dc, yc + dc, xyf.face).toVec3();\r\n points[2] = Fxyf.create(xc - dc, yc - dc, xyf.face).toVec3();\r\n points[3] = Fxyf.create(xc + dc, yc - dc, xyf.face).toVec3();\r\n return points;\r\n },\r\n _setCorners$1: function() {\r\n var xyf = Xyf.create(this.tileX, this.tileY, this._face$1);\r\n var dc = 0.5 / this._nside$1;\r\n var xc = (xyf.ix + 0.5) / this._nside$1;\r\n var yc = (xyf.iy + 0.5) / this._nside$1;\r\n this.topLeft = Fxyf.create(xc + dc, yc + dc, xyf.face).toVec3();\r\n this.bottomLeft = Fxyf.create(xc - dc, yc + dc, xyf.face).toVec3();\r\n this.bottomRight = Fxyf.create(xc - dc, yc - dc, xyf.face).toVec3();\r\n this.topRight = Fxyf.create(xc + dc, yc - dc, xyf.face).toVec3();\r\n },\r\n draw3D: function(renderContext, opacity) {\r\n if (this.isCatalogTile) {\r\n this.drawCatalogTile(renderContext, opacity);\r\n return true;\r\n }\r\n this.renderedGeneration = Tile.currentRenderGeneration;\r\n Tile.tilesTouched++;\r\n this.inViewFrustum = true;\r\n var onlyDrawChildren = false;\r\n if (!this.readyToRender) {\r\n if (!this.errored) {\r\n TileCache.addTileToQueue(this);\r\n return false;\r\n }\r\n if (this.errored && this.level < 3) {\r\n onlyDrawChildren = true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n var partCount = this.triangleCount;\r\n Tile.trianglesRendered += partCount;\r\n var anythingToRender = false;\r\n var childRendered = false;\r\n var childIndex = 0;\r\n for (var y1 = 0; y1 < 2; y1++) {\r\n for (var x1 = 0; x1 < 2; x1++) {\r\n if (this.level < this.dataset.get_levels()) {\r\n if (this.children[childIndex] == null) {\r\n this.children[childIndex] = TileCache.getTile(this.level + 1, x1, y1, this.dataset, this);\r\n }\r\n if (this.children[childIndex].isTileInFrustum(renderContext.get_frustum())) {\r\n this.inViewFrustum = true;\r\n if (this.children[childIndex].isTileBigEnough(renderContext) || onlyDrawChildren) {\r\n this.renderChildPart[childIndex].set_targetState(!this.children[childIndex].draw3D(renderContext, opacity));\r\n if (this.renderChildPart[childIndex].get_targetState()) {\r\n childRendered = true;\r\n }\r\n }\r\n else {\r\n this.renderChildPart[childIndex].set_targetState(true);\r\n }\r\n }\r\n else {\r\n this.renderChildPart[childIndex].set_targetState(this.renderChildPart[childIndex].set_state(false));\r\n }\r\n }\r\n else {\r\n this.renderChildPart[childIndex].set_state(true);\r\n }\r\n if (!!this.renderChildPart[childIndex].get_state()) {\r\n anythingToRender = true;\r\n }\r\n childIndex++;\r\n }\r\n }\r\n if (childRendered || anythingToRender) {\r\n this.renderedAtOrBelowGeneration = Tile.currentRenderGeneration;\r\n if (this.parent != null) {\r\n this.parent.renderedAtOrBelowGeneration = this.renderedAtOrBelowGeneration;\r\n }\r\n }\r\n if (!anythingToRender) {\r\n return true;\r\n }\r\n if (!this.createGeometry(renderContext)) {\r\n return false;\r\n }\r\n if (onlyDrawChildren) {\r\n return true;\r\n }\r\n Tile.tilesInView++;\r\n for (var i = 0; i < 4; i++) {\r\n if (this.renderChildPart[i].get_targetState()) {\r\n this.renderPart(renderContext, i, opacity / 100, false);\r\n }\r\n }\r\n return true;\r\n },\r\n drawCatalogTile: function(renderContext, opacity) {\r\n this.renderedGeneration = Tile.currentRenderGeneration;\r\n Tile.tilesTouched++;\r\n this.inViewFrustum = true;\r\n var onlyDrawChildren = false;\r\n if (!this.readyToRender) {\r\n if (!this.errored) {\r\n TileCache.addTileToQueue(this);\r\n return;\r\n }\r\n if (this.errored && this.level < 3) {\r\n onlyDrawChildren = true;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n var anyChildInFrustum = false;\r\n var childIndex = 0;\r\n for (var y1 = 0; y1 < 2; y1++) {\r\n for (var x1 = 0; x1 < 2; x1++) {\r\n if (this.level < this.dataset.get_levels()) {\r\n if (this.children[childIndex] == null) {\r\n this.children[childIndex] = TileCache.getTile(this.level + 1, x1, y1, this.dataset, this);\r\n }\r\n if (this.children[childIndex].isTileInFrustum(renderContext.get_frustum())) {\r\n this.inViewFrustum = true;\r\n anyChildInFrustum = true;\r\n if (this.children[childIndex].isTileBigEnough(renderContext) || onlyDrawChildren) {\r\n (this.children[childIndex]).drawCatalogTile(renderContext, opacity);\r\n }\r\n else {\r\n (this.children[childIndex]).removeCatalogTile();\r\n }\r\n }\r\n else {\r\n (this.children[childIndex]).removeCatalogTile();\r\n }\r\n }\r\n childIndex++;\r\n }\r\n }\r\n if (!this.level && !anyChildInFrustum && !onlyDrawChildren) {\r\n this.removeCatalogTile();\r\n }\r\n else if (anyChildInFrustum) {\r\n Tile.tilesInView++;\r\n this._addCatalogTile$1();\r\n }\r\n },\r\n removeCatalogTile: function() {\r\n this.dataset.get_hipsProperties().get_catalogSpreadSheetLayer().removeTileRows(this.get_key(), this._catalogRows$1);\r\n },\r\n _addCatalogTile$1: function() {\r\n this.dataset.get_hipsProperties().get_catalogSpreadSheetLayer().addTileRows(this.get_key(), this._catalogRows$1);\r\n },\r\n _extractCatalogTileRows$1: function() {\r\n var headerRemoved = false;\r\n var $enum1 = ss.enumerate(this._catalogData$1.getText().split('\\n'));\r\n while ($enum1.moveNext()) {\r\n var line = $enum1.current;\r\n if (!ss.startsWith(line, '#') && !headerRemoved) {\r\n headerRemoved = true;\r\n continue;\r\n }\r\n if (!ss.startsWith(line, '#')) {\r\n var rowData = UiTools.splitString(line, this.dataset.get_hipsProperties().get_catalogSpreadSheetLayer().get__table().delimiter);\r\n this._catalogRows$1.push(rowData);\r\n }\r\n }\r\n },\r\n getDataInView: function(renderContext, limit, catalogSpreadSheetLayer) {\r\n if (!this.readyToRender) {\r\n if (!this.errored) {\r\n this.requestImage();\r\n if (limit) {\r\n return false;\r\n }\r\n }\r\n else if (this.level >= 3) {\r\n return true;\r\n }\r\n }\r\n var allChildrenReady = true;\r\n var anyChildInFrustum = false;\r\n var childIndex = 0;\r\n for (var y1 = 0; y1 < 2; y1++) {\r\n for (var x1 = 0; x1 < 2; x1++) {\r\n if (this.level < this.dataset.get_levels()) {\r\n if (this.children[childIndex] == null) {\r\n this.children[childIndex] = TileCache.getTile(this.level + 1, x1, y1, this.dataset, this);\r\n }\r\n if (this.children[childIndex].isTileInFrustum(renderContext.get_frustum())) {\r\n anyChildInFrustum = true;\r\n allChildrenReady = allChildrenReady && (this.children[childIndex]).getDataInView(renderContext, limit, catalogSpreadSheetLayer);\r\n }\r\n }\r\n childIndex++;\r\n }\r\n }\r\n if (anyChildInFrustum) {\r\n catalogSpreadSheetLayer.addTileRows(this.get_key(), this._catalogRows$1);\r\n }\r\n return allChildrenReady && !this.downloading;\r\n },\r\n _setStep$1: function() {\r\n if (this.isCatalogTile) {\r\n this._step$1 = 2;\r\n }\r\n else {\r\n switch (this.level) {\r\n case 0:\r\n case 1:\r\n case 2:\r\n case 3:\r\n case 4:\r\n this._step$1 = 16;\r\n break;\r\n case 5:\r\n this._step$1 = 8;\r\n break;\r\n case 6:\r\n this._step$1 = 4;\r\n break;\r\n default:\r\n this._step$1 = 2;\r\n break;\r\n }\r\n }\r\n },\r\n requestImage: function() {\r\n if (this.isCatalogTile) {\r\n if (!this.downloading && !this.readyToRender) {\r\n this.downloading = true;\r\n this._catalogData$1 = new WebFile(this.get_URL());\r\n this._catalogData$1.onStateChange = ss.bind('_loadCatalogData$1', this);\r\n this._catalogData$1.send();\r\n }\r\n }\r\n else {\r\n Tile.prototype.requestImage.call(this);\r\n }\r\n },\r\n _loadCatalogData$1: function() {\r\n if (this._catalogData$1.get_state() === 2) {\r\n this.requestPending = false;\r\n this.downloading = false;\r\n this.errored = true;\r\n TileCache.removeFromQueue(this.get_key(), true);\r\n }\r\n else if (this._catalogData$1.get_state() === 1) {\r\n this._extractCatalogTileRows$1();\r\n this.texReady = true;\r\n this.downloading = false;\r\n this.errored = false;\r\n this.readyToRender = true;\r\n this.requestPending = false;\r\n TileCache.removeFromQueue(this.get_key(), true);\r\n }\r\n },\r\n getIndexBuffer: function(index, accomidation) {\r\n return this.indexBuffer[index];\r\n },\r\n _calcSphere$1: function(list) {\r\n var result = ConvexHull.findEnclosingSphere(list);\r\n this.sphereCenter = result.center;\r\n this.sphereRadius = result.radius;\r\n },\r\n isPointInTile: function(lat, lng) {\r\n if (!this.level) {\r\n return true;\r\n }\r\n if (this.level === 1) {\r\n if ((lng >= 0 && lng <= 90) && (!this.tileX && this.tileY === 1)) {\r\n return true;\r\n }\r\n if ((lng > 90 && lng <= 180) && (this.tileX === 1 && this.tileY === 1)) {\r\n return true;\r\n }\r\n if ((lng < 0 && lng >= -90) && (!this.tileX && !this.tileY)) {\r\n return true;\r\n }\r\n if ((lng < -90 && lng >= -180) && (this.tileX === 1 && !this.tileY)) {\r\n return true;\r\n }\r\n }\r\n var testPoint = Coordinates.geoTo3dDouble(lat, lng);\r\n var top = this._isLeftOfHalfSpace$1(this.topLeft, this.topRight, testPoint);\r\n var right = this._isLeftOfHalfSpace$1(this.topRight, this.bottomRight, testPoint);\r\n var bottom = this._isLeftOfHalfSpace$1(this.bottomRight, this.bottomLeft, testPoint);\r\n var left = this._isLeftOfHalfSpace$1(this.bottomLeft, this.topLeft, testPoint);\r\n if (top && right && bottom && left) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n _isLeftOfHalfSpace$1: function(pntA, pntB, pntTest) {\r\n pntA.normalize();\r\n pntB.normalize();\r\n var cross = Vector3d.cross(pntA, pntB);\r\n var dot = Vector3d.dot(cross, pntTest);\r\n return dot > 0;\r\n },\r\n getSurfacePointAltitude: function(lat, lng, meters) {\r\n if (this.level < Tile.lastDeepestLevel) {\r\n var $enum1 = ss.enumerate(this.children);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (child != null) {\r\n if (child.isPointInTile(lat, lng)) {\r\n var retVal = child.getSurfacePointAltitude(lat, lng, meters);\r\n if (!!retVal) {\r\n return retVal;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this._getAltitudeFromLatLng$1(lat, lng, meters);\r\n },\r\n _getAltitudeFromLatLng$1: function(lat, lng, meters) {\r\n var testPoint = Coordinates.geoTo3dDouble(lat, lng);\r\n var uv = DistanceCalc.getUVFromInnerPoint(this.topLeft, this.topRight, this.bottomLeft, this.bottomRight, testPoint);\r\n var uud = Math.max(0, Math.min(16, (uv.x * 16)));\r\n var vvd = Math.max(0, Math.min(16, (uv.y * 16)));\r\n var uu = Math.max(0, Math.min(15, ss.truncate((uv.x * 16))));\r\n var vv = Math.max(0, Math.min(15, ss.truncate((uv.y * 16))));\r\n var ha = uud - uu;\r\n var va = vvd - vv;\r\n if (this.demArray != null) {\r\n var ul = this.demArray[uu + 17 * vv];\r\n var ur = this.demArray[(uu + 1) + 17 * vv];\r\n var ll = this.demArray[uu + 17 * (vv + 1)];\r\n var lr = this.demArray[(uu + 1) + 17 * (vv + 1)];\r\n var top = ul * (1 - ha) + ha * ur;\r\n var bottom = ll * (1 - ha) + ha * lr;\r\n var val = top * (1 - va) + va * bottom;\r\n return val / ((meters) ? 1 : this.get__demScaleFactor());\r\n }\r\n return this.demAverage / ((meters) ? 1 : this.get__demScaleFactor());\r\n },\r\n _processIndexBuffer$1: function(indexArray, part) {\r\n this.indexBuffer[part] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this.indexBuffer[part]);\r\n Tile.prepDevice.bufferData(34963, indexArray, 35044);\r\n },\r\n cleanUp: function(removeFromParent) {\r\n Tile.prototype.cleanUp.call(this, removeFromParent);\r\n this._returnBuffers$1();\r\n this._subDivided$1 = false;\r\n },\r\n _returnBuffers$1: function() {\r\n if (this._vertexList$1 != null) {\r\n this._vertexList$1 = null;\r\n }\r\n },\r\n _populateVertexList$1: function(vertexList, step) {\r\n for (var i = 0; i < step; i += 2) {\r\n for (var j = 0; j < step; j += 2) {\r\n var points = this._boundaries$1(j, i, step);\r\n vertexList[i * (step + 1) + j] = PositionTexture.createPos(points[2], (1 / step) * i, (1 / step) * j);\r\n vertexList[i * (step + 1) + j + 1] = PositionTexture.createPos(points[3], (1 / step) * i, (1 / step) + (1 / step) * j);\r\n vertexList[(i + 1) * (step + 1) + j] = PositionTexture.createPos(points[1], (1 / step) + (1 / step) * i, (1 / step) * j);\r\n vertexList[(i + 1) * (step + 1) + j + 1] = PositionTexture.createPos(points[0], (1 / step) + (1 / step) * i, (1 / step) + (1 / step) * j);\r\n if (j + 2 >= step && step > 1) {\r\n j = step - 1;\r\n points = this._boundaries$1(j, i, step);\r\n vertexList[i * (step + 1) + step] = PositionTexture.createPos(points[3], (1 / step) * i, (1 / step) + (1 / step) * j);\r\n vertexList[(i + 1) * (step + 1) + step] = PositionTexture.createPos(points[0], (1 / step) + (1 / step) * i, (1 / step) + (1 / step) * j);\r\n }\r\n }\r\n }\r\n if (step > 1) {\r\n this._vertexOfLastRow$1(vertexList, step);\r\n }\r\n },\r\n _vertexOfLastRow$1: function(vertexList, step) {\r\n var i = step - 1;\r\n for (var j = 0; j < step; j += 2) {\r\n var points = this._boundaries$1(j, i, step);\r\n vertexList[(i + 1) * (step + 1) + j] = PositionTexture.createPos(points[1], (1 / step) + (1 / step) * i, (1 / step) * j);\r\n vertexList[(i + 1) * (step + 1) + j + 1] = PositionTexture.createPos(points[0], (1 / step) + (1 / step) * i, (1 / step) + (1 / step) * j);\r\n if (j + 2 >= step) {\r\n j = step - 1;\r\n points = this._boundaries$1(j, i, step);\r\n vertexList[(i + 1) * (step + 1) + step] = PositionTexture.createPos(points[0], (1 / step) + (1 / step) * i, (1 / step) + (1 / step) * j);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FitsImage\r\n\r\n function FitsImage(dataset, file, blob, callMeBack) {\r\n this.errored = false;\r\n this.numAxis = 0;\r\n this.histogramMaxCount = 0;\r\n this.sourceBlob = null;\r\n this.header = {};\r\n this.position = 0;\r\n this.bufferSize = 1;\r\n this._parseSuccessful$1 = false;\r\n WcsImage.call(this);\r\n this.dataset = dataset;\r\n this.fitsProperties = dataset.get_fitsProperties();\r\n this._callBack$1 = callMeBack;\r\n this.filename = file;\r\n if (blob != null) {\r\n this._readFromBlob$1(blob);\r\n }\r\n else {\r\n this.getFile(file);\r\n }\r\n }\r\n var FitsImage$ = {\r\n getFile: function(url) {\r\n this._webFile$1 = new WebFile(url);\r\n this._webFile$1.responseType = 'blob';\r\n this._webFile$1.onStateChange = ss.bind('fileStateChange', this);\r\n this._webFile$1.send();\r\n },\r\n fileStateChange: function() {\r\n if (this._webFile$1.get_state() === 2) {\r\n this.errored = true;\r\n if (this._callBack$1 != null) {\r\n this._callBack$1(this);\r\n }\r\n }\r\n else if (this._webFile$1.get_state() === 1) {\r\n var mainBlob = this._webFile$1.getBlob();\r\n this._readFromBlob$1(mainBlob);\r\n }\r\n },\r\n _readFromBlob$1: function(blob) {\r\n var $this = this;\r\n\r\n this.sourceBlob = blob;\r\n var chunck = new FileReader();\r\n chunck.onloadend = function(e) {\r\n $this.readFromBin(new DataView(chunck.result));\r\n $this.errored = !$this._parseSuccessful$1;\r\n if ($this._callBack$1 != null) {\r\n $this._callBack$1($this);\r\n }\r\n };\r\n chunck.readAsArrayBuffer(blob);\r\n },\r\n _readByteString$1: function(dataView, count) {\r\n var data = '';\r\n for (var i = 0; i < count; i++) {\r\n data += String.fromCharCode(dataView.getUint8(this.position));\r\n this.position++;\r\n }\r\n return data;\r\n },\r\n _validateFitsSimple$1: function(dataView) {\r\n var data = this._readByteString$1(dataView, 8);\r\n var keyword = ss.trimEnd(data);\r\n this.position -= 8;\r\n return keyword.toUpperCase() === 'SIMPLE';\r\n },\r\n readFromBin: function(dataView) {\r\n if (!this._validateFitsSimple$1(dataView)) {\r\n console.log('The requested file is not a valid FITS file.');\r\n return;\r\n }\r\n var foundEnd = false;\r\n while (!foundEnd) {\r\n for (var i = 0; i < 36; i++) {\r\n var data = this._readByteString$1(dataView, 80);\r\n if (!foundEnd) {\r\n var keyword = ss.trimEnd(data.substring(0, 8));\r\n var values = data.substring(10).split('/');\r\n if (keyword.toUpperCase() === 'END') {\r\n foundEnd = true;\r\n i++;\r\n data = this._readByteString$1(dataView, 80);\r\n while (ss.whitespace(data)) {\r\n i++;\r\n data = this._readByteString$1(dataView, 80);\r\n }\r\n keyword = ss.trimEnd(data.substring(0, 8));\r\n if (keyword.toUpperCase() === 'XTENSION') {\r\n foundEnd = false;\r\n }\r\n else {\r\n this.position -= 80;\r\n }\r\n }\r\n else {\r\n this._addKeyword$1(keyword, values);\r\n }\r\n }\r\n }\r\n }\r\n if (!foundEnd) {\r\n console.log('Unable to parse requested FITS file.');\r\n return;\r\n }\r\n this.numAxis = parseInt(this.header['NAXIS']);\r\n if (ss.keyExists(this.header, 'BLANK')) {\r\n this.fitsProperties.blankValue = parseFloat(this.header['BLANK']);\r\n this.fitsProperties.containsBlanks = true;\r\n }\r\n if (ss.keyExists(this.header, 'BZERO')) {\r\n this.fitsProperties.bZero = parseFloat(this.header['BZERO']);\r\n }\r\n if (ss.keyExists(this.header, 'BSCALE')) {\r\n this.fitsProperties.bScale = parseFloat(this.header['BSCALE']);\r\n }\r\n this.axisSize = new Array(this.numAxis);\r\n for (var axis = 0; axis < this.numAxis; axis++) {\r\n this.axisSize[axis] = parseInt(this.header[ss.format('NAXIS{0}', axis + 1)]);\r\n this.bufferSize *= this.axisSize[axis];\r\n }\r\n var bitpix = parseInt(this.header['BITPIX']);\r\n this.readDataUnit(dataView, bitpix);\r\n if (this.numAxis > 1) {\r\n this.sizeX = this.axisSize[0];\r\n this.sizeY = this.axisSize[1];\r\n this.histogram = this.computeHistogram(256);\r\n this.histogramMaxCount = this.histogram[256];\r\n }\r\n this.computeWcs();\r\n this._parseSuccessful$1 = true;\r\n },\r\n _addKeyword$1: function(keyword, values) {\r\n if (keyword !== 'CONTINUE' && keyword !== 'COMMENT' && keyword !== 'HISTORY' && !ss.emptyString(keyword)) {\r\n try {\r\n if (ss.keyExists(this.header, keyword)) {\r\n this.header[keyword] = ss.trim(values[0]);\r\n }\r\n else {\r\n this.header[keyword.toUpperCase()] = ss.trim(values[0]);\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n },\r\n readDataUnit: function(dataView, bitpix) {\r\n this.dataUnit = new Float32Array(this.bufferSize);\r\n switch (bitpix) {\r\n case -64:\r\n this.readDataUnitFloat64(dataView);\r\n break;\r\n case -32:\r\n this.readDataUnitFloat32(dataView);\r\n break;\r\n case 8:\r\n this.readDataUnitUint8(dataView);\r\n break;\r\n case 16:\r\n this.readDataUnitInt16(dataView);\r\n break;\r\n case 32:\r\n this.readDataUnitInt32(dataView);\r\n break;\r\n case 64:\r\n console.log('64 bit integer FITS are not yet supported');\r\n break;\r\n }\r\n },\r\n readDataUnitFloat64: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getFloat64(this.position, false);\r\n var physicalValue = this.dataUnit[i] * this.fitsProperties.bScale + this.fitsProperties.bZero;\r\n if (this.fitsProperties.minVal > physicalValue) {\r\n this.fitsProperties.minVal = physicalValue;\r\n }\r\n if (this.fitsProperties.maxVal < physicalValue) {\r\n this.fitsProperties.maxVal = physicalValue;\r\n }\r\n i++;\r\n this.position += 8;\r\n }\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n },\r\n readDataUnitFloat32: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getFloat32(this.position, false);\r\n var physicalValue = this.dataUnit[i] * this.fitsProperties.bScale + this.fitsProperties.bZero;\r\n if (this.fitsProperties.minVal > physicalValue) {\r\n this.fitsProperties.minVal = physicalValue;\r\n }\r\n if (this.fitsProperties.maxVal < physicalValue) {\r\n this.fitsProperties.maxVal = physicalValue;\r\n }\r\n i++;\r\n this.position += 4;\r\n }\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n },\r\n readDataUnitUint8: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getUint8(this.position);\r\n if (this.fitsProperties.minVal > this.dataUnit[i]) {\r\n this.fitsProperties.minVal = this.dataUnit[i];\r\n }\r\n if (this.fitsProperties.maxVal < this.dataUnit[i]) {\r\n this.fitsProperties.maxVal = this.dataUnit[i];\r\n }\r\n i++;\r\n this.position += 1;\r\n }\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n },\r\n readDataUnitInt16: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getInt16(this.position, false);\r\n if (this.fitsProperties.minVal > this.dataUnit[i]) {\r\n this.fitsProperties.minVal = this.dataUnit[i];\r\n }\r\n if (this.fitsProperties.maxVal < this.dataUnit[i]) {\r\n this.fitsProperties.maxVal = this.dataUnit[i];\r\n }\r\n i++;\r\n this.position += 2;\r\n }\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n },\r\n readDataUnitInt32: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getInt32(this.position, false);\r\n if (this.fitsProperties.minVal > this.dataUnit[i]) {\r\n this.fitsProperties.minVal = this.dataUnit[i];\r\n }\r\n if (this.fitsProperties.maxVal < this.dataUnit[i]) {\r\n this.fitsProperties.maxVal = this.dataUnit[i];\r\n }\r\n i++;\r\n this.position += 4;\r\n }\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n },\r\n computeWcs: function() {\r\n if (ss.keyExists(this.header, 'CROTA2')) {\r\n this.rotation = parseFloat(ss.trim(this.header['CROTA2']));\r\n this.hasRotation = true;\r\n }\r\n if (ss.keyExists(this.header, 'CDELT1')) {\r\n this.scaleX = parseFloat(ss.trim(this.header['CDELT1']));\r\n if (ss.keyExists(this.header, 'CDELT2')) {\r\n this.scaleY = parseFloat(ss.trim(this.header['CDELT2']));\r\n this.hasScale = true;\r\n }\r\n }\r\n if (ss.keyExists(this.header, 'CRPIX1')) {\r\n this.referenceX = parseFloat(ss.trim(this.header['CRPIX1'])) - 1;\r\n if (ss.keyExists(this.header, 'CRPIX2')) {\r\n this.referenceY = parseFloat(ss.trim(this.header['CRPIX2'])) - 1;\r\n this.hasPixel = true;\r\n }\r\n }\r\n var galactic = false;\r\n var tan = false;\r\n if (ss.keyExists(this.header, 'CTYPE1')) {\r\n if (this.header['CTYPE1'].indexOf('GLON-') > -1) {\r\n galactic = true;\r\n tan = true;\r\n }\r\n if (this.header['CTYPE2'].indexOf('GLAT-') > -1) {\r\n galactic = true;\r\n tan = true;\r\n }\r\n if (this.header['CTYPE1'].indexOf('-TAN') > -1) {\r\n tan = true;\r\n }\r\n if (this.header['CTYPE1'].indexOf('-SIN') > -1) {\r\n tan = true;\r\n }\r\n }\r\n if (!tan) {\r\n throw new Error('Only TAN projected images are supported: ');\r\n }\r\n this.hasSize = true;\r\n if (ss.keyExists(this.header, 'CRVAL1')) {\r\n this.centerX = parseFloat(ss.trim(this.header['CRVAL1']));\r\n if (ss.keyExists(this.header, 'CRVAL2')) {\r\n this.centerY = parseFloat(ss.trim(this.header['CRVAL2']));\r\n this.hasLocation = true;\r\n }\r\n }\r\n if (galactic) {\r\n var result = Coordinates.galactictoJ2000(this.centerX, this.centerY);\r\n this.centerX = result[0];\r\n this.centerY = result[1];\r\n }\r\n if (ss.keyExists(this.header, 'CD1_1') && ss.keyExists(this.header, 'CD1_2') && ss.keyExists(this.header, 'CD2_1') && ss.keyExists(this.header, 'CD2_2')) {\r\n this.cd1_1 = parseFloat(ss.trim(this.header['CD1_1']));\r\n this.cd1_2 = parseFloat(ss.trim(this.header['CD1_2']));\r\n this.cd2_1 = parseFloat(ss.trim(this.header['CD2_1']));\r\n this.cd2_2 = parseFloat(ss.trim(this.header['CD2_2']));\r\n if (!this.hasRotation) {\r\n this.calculateRotationFromCD();\r\n }\r\n if (!this.hasScale) {\r\n this.calculateScaleFromCD();\r\n }\r\n this.hasScale = true;\r\n this.hasRotation = true;\r\n }\r\n this.set_validWcs(this.hasScale && this.hasRotation && this.hasPixel && this.hasLocation);\r\n },\r\n applyDisplaySettings: function() {\r\n if (ss.keyExists(this.header, 'DATAMIN')) {\r\n this.fitsProperties.lowerCut = parseFloat(ss.trim(this.header['DATAMIN']));\r\n this.fitsProperties.minVal = this.fitsProperties.lowerCut;\r\n }\r\n if (ss.keyExists(this.header, 'DATAMAX')) {\r\n this.fitsProperties.upperCut = parseFloat(ss.trim(this.header['DATAMAX']));\r\n this.fitsProperties.maxVal = this.fitsProperties.upperCut;\r\n }\r\n if (ss.keyExists(this.header, 'PXCUTMIN')) {\r\n this.fitsProperties.lowerCut = parseFloat(ss.trim(this.header['PXCUTMIN']));\r\n }\r\n if (ss.keyExists(this.header, 'PXCUTMAX')) {\r\n this.fitsProperties.upperCut = parseFloat(ss.trim(this.header['PXCUTMAX']));\r\n }\r\n },\r\n computeHistogram: function(count) {\r\n var histogram = new Array(count + 1);\r\n for (var i = 0; i < count + 1; i++) {\r\n histogram[i] = 0;\r\n }\r\n this.populateHistogram(histogram);\r\n var maxCounter = 1;\r\n var $enum1 = ss.enumerate(histogram);\r\n while ($enum1.moveNext()) {\r\n var val = $enum1.current;\r\n if (val > maxCounter) {\r\n maxCounter = val;\r\n }\r\n }\r\n histogram[count] = maxCounter;\r\n return histogram;\r\n },\r\n populateHistogram: function(histogram) {\r\n var buckets = histogram.length;\r\n var factor = (this.fitsProperties.maxVal - this.fitsProperties.minVal) / buckets;\r\n for (var i = 0; i < this.dataUnit.length; i++) {\r\n if (!(this.dataUnit[i] === FitsImage.naN)) {\r\n histogram[Math.min(buckets - 1, ss.truncate(((this.fitsProperties.bZero + this.fitsProperties.bScale * this.dataUnit[i] - this.fitsProperties.minVal) / factor)))]++;\r\n }\r\n }\r\n },\r\n drawHistogram: function(ctx) {\r\n ctx.clearRect(0, 0, 255, 150);\r\n ctx.beginPath();\r\n ctx.strokeStyle = 'rgba(255,255,255,255)';\r\n var logMax = Math.log(this.histogramMaxCount);\r\n for (var i = 0; i < this.histogram.length; i++) {\r\n var height = Math.log(this.histogram[i]) / logMax;\r\n if (height < 0) {\r\n height = 0;\r\n }\r\n ctx.moveTo(i, 150);\r\n ctx.lineTo(i, 150 - (height * 150));\r\n ctx.stroke();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Circle\r\n\r\n function Circle() {\r\n this._fill$1 = false;\r\n this._skyRelative$1 = false;\r\n this._strokeWidth$1 = 1;\r\n this._radius$1 = 10;\r\n this._lineColor$1 = Colors.get_white();\r\n this._fillColor$1 = Colors.get_white();\r\n this._ra$1 = 0;\r\n this._dec$1 = 0;\r\n Annotation.call(this);\r\n }\r\n var Circle$ = {\r\n get_fill: function() {\r\n return this._fill$1;\r\n },\r\n set_fill: function(value) {\r\n Annotation.batchDirty = true;\r\n this._fill$1 = value;\r\n return value;\r\n },\r\n get_skyRelative: function() {\r\n return this._skyRelative$1;\r\n },\r\n set_skyRelative: function(value) {\r\n Annotation.batchDirty = true;\r\n this._skyRelative$1 = value;\r\n return value;\r\n },\r\n get_lineWidth: function() {\r\n return this._strokeWidth$1;\r\n },\r\n set_lineWidth: function(value) {\r\n Annotation.batchDirty = true;\r\n this._strokeWidth$1 = value;\r\n return value;\r\n },\r\n get_radius: function() {\r\n return this._radius$1;\r\n },\r\n set_radius: function(value) {\r\n Annotation.batchDirty = true;\r\n this._radius$1 = value;\r\n return value;\r\n },\r\n get_lineColor: function() {\r\n return this._lineColor$1.toString();\r\n },\r\n set_lineColor: function(value) {\r\n Annotation.batchDirty = true;\r\n this._lineColor$1 = Color.load(value);\r\n return value;\r\n },\r\n get_fillColor: function() {\r\n return this._fillColor$1.toString();\r\n },\r\n set_fillColor: function(value) {\r\n Annotation.batchDirty = true;\r\n this._fillColor$1 = Color.fromName(value);\r\n return value;\r\n },\r\n setCenter: function(ra, dec) {\r\n Annotation.batchDirty = true;\r\n this._ra$1 = ra / 15;\r\n this._dec$1 = dec;\r\n this.center = Coordinates.raDecTo3d(this._ra$1, this._dec$1);\r\n },\r\n draw: function(renderContext) {\r\n var onScreen = true;\r\n var rad = this._radius$1;\r\n if (this._skyRelative$1) {\r\n rad /= renderContext.get_fovScale() / 3600;\r\n }\r\n var screenSpacePnt = renderContext.WVP.transform(this.center);\r\n if (screenSpacePnt.z < 0) {\r\n onScreen = false;\r\n }\r\n if (Vector3d.dot(renderContext.get_viewPoint(), this.center) < 0.55) {\r\n onScreen = false;\r\n }\r\n if (renderContext.gl != null) {\r\n if (Annotation.batchDirty || this.annotationDirty) {\r\n var up = Vector3d.create(0, 1, 0);\r\n var xNormal = Vector3d.cross(this.center, up);\r\n var yNormal = Vector3d.cross(this.center, xNormal);\r\n var r = this._radius$1 / 44;\r\n var segments = 72;\r\n var radiansPerSegment = Math.PI * 2 / segments;\r\n var vertexList = [];\r\n for (var j = 0; j <= segments; j++) {\r\n var x = Math.cos(j * radiansPerSegment) * r;\r\n var y = Math.sin(j * radiansPerSegment) * r;\r\n vertexList.push(Vector3d.create(this.center.x + x * xNormal.x + y * yNormal.x, this.center.y + x * xNormal.y + y * yNormal.y, this.center.z + x * xNormal.z + y * yNormal.z));\r\n }\r\n if (this._strokeWidth$1 > 0 && vertexList.length > 1) {\r\n for (var i = 0; i < (vertexList.length - 1); i++) {\r\n Annotation.lineList.addLine(vertexList[i], vertexList[i + 1], this._lineColor$1, new Dates(0, 1));\r\n }\r\n }\r\n if (this._fill$1) {\r\n var pos = Vector3d.create(this.center.x, this.center.y, this.center.z);\r\n vertexList.splice(0, 0, pos);\r\n Annotation.triangleFanPointList.addShape(vertexList, this._fillColor$1, new Dates(0, 1));\r\n }\r\n this.annotationDirty = false;\r\n }\r\n }\r\n else {\r\n if (onScreen) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.beginPath();\r\n ctx.arc(screenSpacePnt.x, screenSpacePnt.y, rad, 0, Math.PI * 2, true);\r\n ctx.lineWidth = this._strokeWidth$1;\r\n ctx.fillStyle = this._fillColor$1.toString();\r\n if (this._fill$1) {\r\n ctx.fill();\r\n }\r\n ctx.globalAlpha = 1;\r\n ctx.strokeStyle = this._lineColor$1.toString();\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n }\r\n },\r\n hitTest: function(renderContext, RA, dec, x, y) {\r\n if (ss.emptyString(this.get_id())) {\r\n return false;\r\n }\r\n var rad = this._radius$1;\r\n if (!this._skyRelative$1) {\r\n rad *= renderContext.get_fovScale() / 3600;\r\n }\r\n return Annotation.separation(RA, dec, this._ra$1, this._dec$1) < rad;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Poly\r\n\r\n function Poly() {\r\n this._points$1 = [];\r\n this._fill$1 = false;\r\n this._strokeWidth$1 = 1;\r\n this._lineColor$1 = Colors.get_white();\r\n this._fillColor$1 = Colors.get_white();\r\n Annotation.call(this);\r\n }\r\n var Poly$ = {\r\n addPoint: function(x, y) {\r\n Annotation.batchDirty = true;\r\n this._points$1.push(Coordinates.raDecTo3d(x / 15, y));\r\n },\r\n get_fill: function() {\r\n return this._fill$1;\r\n },\r\n set_fill: function(value) {\r\n Annotation.batchDirty = true;\r\n this._fill$1 = value;\r\n return value;\r\n },\r\n get_lineWidth: function() {\r\n return this._strokeWidth$1;\r\n },\r\n set_lineWidth: function(value) {\r\n Annotation.batchDirty = true;\r\n this._strokeWidth$1 = value;\r\n return value;\r\n },\r\n get_lineColor: function() {\r\n return this._lineColor$1.toString();\r\n },\r\n set_lineColor: function(value) {\r\n Annotation.batchDirty = true;\r\n this._lineColor$1 = Color.fromName(value);\r\n return value;\r\n },\r\n get_fillColor: function() {\r\n return this._fillColor$1.toString();\r\n },\r\n set_fillColor: function(value) {\r\n Annotation.batchDirty = true;\r\n this._fillColor$1 = Color.fromName(value);\r\n return value;\r\n },\r\n draw: function(renderContext) {\r\n if (renderContext.gl != null) {\r\n if (Annotation.batchDirty || this.annotationDirty) {\r\n var vertexList = this._points$1;\r\n if (this._strokeWidth$1 > 0 && this._points$1.length > 1) {\r\n for (var i = 0; i < (this._points$1.length - 1); i++) {\r\n Annotation.lineList.addLine(vertexList[i], vertexList[i + 1], this._lineColor$1, new Dates(0, 1));\r\n }\r\n Annotation.lineList.addLine(vertexList[this._points$1.length - 1], vertexList[0], this._lineColor$1, new Dates(0, 1));\r\n }\r\n if (this._fill$1) {\r\n var indexes = Tessellator.tesselateSimplePoly(vertexList);\r\n for (var i = 0; i < indexes.length; i += 3) {\r\n Annotation.triangleList.addSubdividedTriangles(vertexList[indexes[i]], vertexList[indexes[i + 1]], vertexList[indexes[i + 2]], this._fillColor$1, new Dates(0, 1), 2);\r\n }\r\n }\r\n this.annotationDirty = false;\r\n }\r\n }\r\n else {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.beginPath();\r\n var first = true;\r\n var $enum1 = ss.enumerate(this._points$1);\r\n while ($enum1.moveNext()) {\r\n var pnt = $enum1.current;\r\n var screenSpacePnt = renderContext.WVP.transform(pnt);\r\n if (screenSpacePnt.z < 0) {\r\n ctx.restore();\r\n return;\r\n }\r\n if (Vector3d.dot(renderContext.get_viewPoint(), pnt) < 0.75) {\r\n ctx.restore();\r\n return;\r\n }\r\n if (first) {\r\n first = false;\r\n ctx.moveTo(screenSpacePnt.x, screenSpacePnt.y);\r\n }\r\n else {\r\n ctx.lineTo(screenSpacePnt.x, screenSpacePnt.y);\r\n }\r\n }\r\n ctx.closePath();\r\n ctx.lineWidth = this._strokeWidth$1;\r\n if (this._fill$1) {\r\n ctx.fillStyle = this._fillColor$1.toString();\r\n ctx.fill();\r\n }\r\n ctx.strokeStyle = this._lineColor$1.toString();\r\n ctx.globalAlpha = 1;\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PolyLine\r\n\r\n function PolyLine() {\r\n this._points$1 = [];\r\n this._strokeWidth$1 = 1;\r\n this._lineColor$1 = Colors.get_white();\r\n Annotation.call(this);\r\n }\r\n var PolyLine$ = {\r\n addPoint: function(x, y) {\r\n Annotation.batchDirty = true;\r\n this._points$1.push(Coordinates.raDecTo3d(x / 15, y));\r\n },\r\n get_lineWidth: function() {\r\n return this._strokeWidth$1;\r\n },\r\n set_lineWidth: function(value) {\r\n Annotation.batchDirty = true;\r\n this._strokeWidth$1 = value;\r\n return value;\r\n },\r\n get_lineColor: function() {\r\n return this._lineColor$1.toString();\r\n },\r\n set_lineColor: function(value) {\r\n Annotation.batchDirty = true;\r\n this._lineColor$1 = Color.fromName(value);\r\n return value;\r\n },\r\n draw: function(renderContext) {\r\n if (renderContext.gl != null) {\r\n if (Annotation.batchDirty || this.annotationDirty) {\r\n var vertexList = this._points$1;\r\n if (this._strokeWidth$1 > 0) {\r\n for (var i = 0; i < (this._points$1.length - 1); i++) {\r\n Annotation.lineList.addLine(vertexList[i], vertexList[i + 1], this._lineColor$1, new Dates(0, 1));\r\n }\r\n }\r\n this.annotationDirty = false;\r\n }\r\n }\r\n else {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.globalAlpha = this.get_opacity();\r\n var first = true;\r\n var $enum1 = ss.enumerate(this._points$1);\r\n while ($enum1.moveNext()) {\r\n var pnt = $enum1.current;\r\n var screenSpacePnt = renderContext.WVP.transform(pnt);\r\n if (screenSpacePnt.z < 0) {\r\n ctx.restore();\r\n return;\r\n }\r\n if (Vector3d.dot(renderContext.get_viewPoint(), pnt) < 0.75) {\r\n ctx.restore();\r\n return;\r\n }\r\n if (first) {\r\n first = false;\r\n ctx.beginPath();\r\n ctx.moveTo(screenSpacePnt.x, screenSpacePnt.y);\r\n }\r\n else {\r\n ctx.lineTo(screenSpacePnt.x, screenSpacePnt.y);\r\n }\r\n }\r\n ctx.lineWidth = this._strokeWidth$1;\r\n ctx.strokeStyle = this._lineColor$1.toString();\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.EquirectangularTile\r\n\r\n function EquirectangularTile() {\r\n this._tileDegrees$1 = 0;\r\n this._topDown$1 = true;\r\n this._subDivisionLevel$1 = 1;\r\n Tile.call(this);\r\n }\r\n EquirectangularTile.create = function(level, x, y, dataset, parent) {\r\n var temp = new EquirectangularTile();\r\n temp.parent = parent;\r\n temp.level = level;\r\n temp.tileX = x;\r\n temp.tileY = y;\r\n temp.dataset = dataset;\r\n temp._topDown$1 = !dataset.get_bottomsUp();\r\n temp.computeBoundingSphere();\r\n return temp;\r\n };\r\n var EquirectangularTile$ = {\r\n computeBoundingSphere: function() {\r\n if (!this._topDown$1) {\r\n this.computeBoundingSphereBottomsUp();\r\n return;\r\n }\r\n this._tileDegrees$1 = this.dataset.get_baseTileDegrees() / Math.pow(2, this.level);\r\n var latMin = (90 - ((this.tileY) * this._tileDegrees$1));\r\n var latMax = (90 - (((this.tileY + 1)) * this._tileDegrees$1));\r\n var lngMin = ((this.tileX * this._tileDegrees$1) - 180);\r\n var lngMax = ((((this.tileX + 1)) * this._tileDegrees$1) - 180);\r\n var latCenter = (latMin + latMax) / 2;\r\n var lngCenter = (lngMin + lngMax) / 2;\r\n this.sphereCenter = this.geoTo3d(latCenter, lngCenter, false);\r\n this.topLeft = this.geoTo3d(latMin, lngMin, false);\r\n this.bottomRight = this.geoTo3d(latMax, lngMax, false);\r\n this.topRight = this.geoTo3d(latMin, lngMax, false);\r\n this.bottomLeft = this.geoTo3d(latMax, lngMin, false);\r\n var distVect = this.geoTo3d(latMin, lngMin, false);\r\n distVect.subtract(this.sphereCenter);\r\n this.sphereRadius = distVect.length();\r\n this._tileDegrees$1 = lngMax - lngMin;\r\n },\r\n computeBoundingSphereBottomsUp: function() {\r\n var tileDegrees = this.dataset.get_baseTileDegrees() / (Math.pow(2, this.level));\r\n var latMin = (-90 + (((this.tileY + 1)) * tileDegrees));\r\n var latMax = (-90 + ((this.tileY) * tileDegrees));\r\n var lngMin = ((this.tileX * tileDegrees) - 180);\r\n var lngMax = ((((this.tileX + 1)) * tileDegrees) - 180);\r\n var latCenter = (latMin + latMax) / 2;\r\n var lngCenter = (lngMin + lngMax) / 2;\r\n this.sphereCenter = this.geoTo3d(latCenter, lngCenter, false);\r\n this.topLeft = this.geoTo3d(latMin, lngMin, false);\r\n this.bottomRight = this.geoTo3d(latMax, lngMax, false);\r\n this.topRight = this.geoTo3d(latMin, lngMax, false);\r\n this.bottomLeft = this.geoTo3d(latMax, lngMin, false);\r\n var distVect = this.topLeft;\r\n distVect.subtract(this.sphereCenter);\r\n this.sphereRadius = distVect.length();\r\n tileDegrees = lngMax - lngMin;\r\n },\r\n createGeometry: function(renderContext) {\r\n Tile.prototype.createGeometry.call(this, renderContext);\r\n if (renderContext.gl == null) {\r\n if (!this.dataset.get_dataSetType() || this.dataset.get_dataSetType() === 1) {\r\n this._subDivisionLevel$1 = Math.max(2, (4 - this.level) * 2);\r\n }\r\n }\r\n else {\r\n this._subDivisionLevel$1 = 32;\r\n }\r\n try {\r\n for (var i = 0; i < 4; i++) {\r\n this._renderTriangleLists[i] = [];\r\n }\r\n if (!this._topDown$1) {\r\n return this._createGeometryBottomsUp$1(renderContext);\r\n }\r\n var lat, lng;\r\n var index = 0;\r\n var tileDegrees = this.dataset.get_baseTileDegrees() / Math.pow(2, this.level);\r\n var latMin = (90 - ((this.tileY) * tileDegrees));\r\n var latMax = (90 - (((this.tileY + 1)) * tileDegrees));\r\n var lngMin = ((this.tileX * tileDegrees) - 180);\r\n var lngMax = ((((this.tileX + 1)) * tileDegrees) - 180);\r\n var tileDegreesX = lngMax - lngMin;\r\n var tileDegreesY = latMax - latMin;\r\n this.topLeft = this.geoTo3d(latMin, lngMin, false);\r\n this.bottomRight = this.geoTo3d(latMax, lngMax, false);\r\n this.topRight = this.geoTo3d(latMin, lngMax, false);\r\n this.bottomLeft = this.geoTo3d(latMax, lngMin, false);\r\n var verts = new Array((this._subDivisionLevel$1 + 1) * (this._subDivisionLevel$1 + 1));\r\n var x, y;\r\n var textureStep = 1 / this._subDivisionLevel$1;\r\n for (y = 0; y <= this._subDivisionLevel$1; y++) {\r\n if (y !== this._subDivisionLevel$1) {\r\n lat = latMin + (textureStep * tileDegreesY * y);\r\n }\r\n else {\r\n lat = latMax;\r\n }\r\n for (x = 0; x <= this._subDivisionLevel$1; x++) {\r\n if (x !== this._subDivisionLevel$1) {\r\n lng = lngMin + (textureStep * tileDegreesX * x);\r\n }\r\n else {\r\n lng = lngMax;\r\n }\r\n index = y * (this._subDivisionLevel$1 + 1) + x;\r\n verts[index] = PositionTexture.createPos(this.geoTo3d(lat, lng, false), x * textureStep, y * textureStep);\r\n }\r\n }\r\n this.triangleCount = this._subDivisionLevel$1 * this._subDivisionLevel$1 * 2;\r\n var quarterDivisions = this._subDivisionLevel$1 / 2;\r\n var part = 0;\r\n if (renderContext.gl == null) {\r\n for (var y2 = 0; y2 < 2; y2++) {\r\n for (var x2 = 0; x2 < 2; x2++) {\r\n index = 0;\r\n for (var y1 = (quarterDivisions * y2); y1 < (quarterDivisions * (y2 + 1)); y1++) {\r\n for (var x1 = (quarterDivisions * x2); x1 < (quarterDivisions * (x2 + 1)); x1++) {\r\n var p1;\r\n var p2;\r\n var p3;\r\n p1 = verts[(y1 * (this._subDivisionLevel$1 + 1) + x1)];\r\n p2 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1)];\r\n p3 = verts[(y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n this._renderTriangleLists[part].push(RenderTriangle.create(p1, p3, p2, this.texture, this.level));\r\n p1 = verts[(y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n p2 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1)];\r\n p3 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n this._renderTriangleLists[part].push(RenderTriangle.create(p1, p3, p2, this.texture, this.level));\r\n }\r\n }\r\n part++;\r\n }\r\n }\r\n }\r\n else {\r\n this._vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this._vertexBuffer);\r\n var f32array = new Float32Array(verts.length * 5);\r\n var buffer = f32array;\r\n index = 0;\r\n var $enum1 = ss.enumerate(verts);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n index = this.addVertex(buffer, index, pt);\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n for (var y2 = 0; y2 < 2; y2++) {\r\n for (var x2 = 0; x2 < 2; x2++) {\r\n var ui16array = new Uint16Array(this.triangleCount * 3);\r\n var indexArray = ui16array;\r\n index = 0;\r\n for (var y1 = (quarterDivisions * y2); y1 < (quarterDivisions * (y2 + 1)); y1++) {\r\n for (var x1 = (quarterDivisions * x2); x1 < (quarterDivisions * (x2 + 1)); x1++) {\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n }\r\n }\r\n this._indexBuffers[part] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this._indexBuffers[part]);\r\n Tile.prepDevice.bufferData(34963, ui16array, 35044);\r\n part++;\r\n }\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n return true;\r\n },\r\n _createGeometryBottomsUp$1: function(renderContext) {\r\n var lat, lng;\r\n var index = 0;\r\n var tileDegrees = this.dataset.get_baseTileDegrees() / Math.pow(2, this.level);\r\n var latMin = (-90 + (((this.tileY + 1)) * tileDegrees));\r\n var latMax = (-90 + ((this.tileY) * tileDegrees));\r\n var lngMin = ((this.tileX * tileDegrees) - 180);\r\n var lngMax = ((((this.tileX + 1)) * tileDegrees) - 180);\r\n var tileDegreesX = lngMax - lngMin;\r\n var tileDegreesY = latMax - latMin;\r\n var verts = new Array((this._subDivisionLevel$1 + 1) * (this._subDivisionLevel$1 + 1));\r\n var x, y;\r\n var textureStep = 1 / this._subDivisionLevel$1;\r\n for (y = 0; y <= this._subDivisionLevel$1; y++) {\r\n if (y !== this._subDivisionLevel$1) {\r\n lat = latMin + (textureStep * tileDegreesY * y);\r\n }\r\n else {\r\n lat = latMax;\r\n }\r\n for (x = 0; x <= this._subDivisionLevel$1; x++) {\r\n if (x !== this._subDivisionLevel$1) {\r\n lng = lngMin + (textureStep * tileDegreesX * x);\r\n }\r\n else {\r\n lng = lngMax;\r\n }\r\n index = y * (this._subDivisionLevel$1 + 1) + x;\r\n verts[index] = PositionTexture.createPos(this.geoTo3d(lat, lng, false), x * textureStep, y * textureStep);\r\n }\r\n }\r\n this.triangleCount = this._subDivisionLevel$1 * this._subDivisionLevel$1 * 2;\r\n var quarterDivisions = this._subDivisionLevel$1 / 2;\r\n var part = 0;\r\n if (renderContext.gl == null) {\r\n for (var y2 = 0; y2 < 2; y2++) {\r\n for (var x2 = 0; x2 < 2; x2++) {\r\n index = 0;\r\n for (var y1 = (quarterDivisions * y2); y1 < (quarterDivisions * (y2 + 1)); y1++) {\r\n for (var x1 = (quarterDivisions * x2); x1 < (quarterDivisions * (x2 + 1)); x1++) {\r\n var p1;\r\n var p2;\r\n var p3;\r\n p1 = verts[(y1 * (this._subDivisionLevel$1 + 1) + x1)];\r\n p2 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1)];\r\n p3 = verts[(y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n this._renderTriangleLists[part].push(RenderTriangle.create(p1, p3, p2, this.texture, this.level));\r\n p1 = verts[(y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n p2 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1)];\r\n p3 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n this._renderTriangleLists[part].push(RenderTriangle.create(p1, p3, p2, this.texture, this.level));\r\n }\r\n }\r\n part++;\r\n }\r\n }\r\n }\r\n else {\r\n this._vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this._vertexBuffer);\r\n var f32array = new Float32Array(verts.length * 5);\r\n var buffer = f32array;\r\n index = 0;\r\n var $enum1 = ss.enumerate(verts);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n index = this.addVertex(buffer, index, pt);\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n for (var y2 = 0; y2 < 2; y2++) {\r\n for (var x2 = 0; x2 < 2; x2++) {\r\n var ui16array = new Uint16Array(this.triangleCount * 3);\r\n var indexArray = ui16array;\r\n index = 0;\r\n for (var y1 = (quarterDivisions * y2); y1 < (quarterDivisions * (y2 + 1)); y1++) {\r\n for (var x1 = (quarterDivisions * x2); x1 < (quarterDivisions * (x2 + 1)); x1++) {\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n }\r\n }\r\n this._indexBuffers[part] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this._indexBuffers[part]);\r\n Tile.prepDevice.bufferData(34963, ui16array, 35044);\r\n part++;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionVertexBuffer\r\n\r\n function PositionVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n var PositionVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 3);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.x;\r\n buffer[index++] = pt.y;\r\n buffer[index++] = pt.z;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionTextureVertexBuffer\r\n\r\n function PositionTextureVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n PositionTextureVertexBuffer.create = function(data) {\r\n var buffer = new PositionTextureVertexBuffer(data.length);\r\n buffer._verts$1 = data;\r\n buffer.unlock();\r\n return buffer;\r\n };\r\n var PositionTextureVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 5);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionNormalTexturedVertexBuffer\r\n\r\n function PositionNormalTexturedVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n PositionNormalTexturedVertexBuffer.create = function(data) {\r\n var buffer = new PositionNormalTexturedVertexBuffer(data.length);\r\n buffer._verts$1 = data;\r\n buffer.unlock();\r\n return buffer;\r\n };\r\n var PositionNormalTexturedVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 8);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.x;\r\n buffer[index++] = pt.y;\r\n buffer[index++] = pt.z;\r\n buffer[index++] = pt.nx;\r\n buffer[index++] = pt.ny;\r\n buffer[index++] = pt.nz;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionNormalTexturedTangentVertexBuffer\r\n\r\n function PositionNormalTexturedTangentVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n PositionNormalTexturedTangentVertexBuffer.create = function(data) {\r\n var buffer = new PositionNormalTexturedTangentVertexBuffer(data.length);\r\n buffer._verts$1 = data;\r\n buffer.unlock();\r\n return buffer;\r\n };\r\n var PositionNormalTexturedTangentVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 11);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.x;\r\n buffer[index++] = pt.y;\r\n buffer[index++] = pt.z;\r\n buffer[index++] = pt.nx;\r\n buffer[index++] = pt.ny;\r\n buffer[index++] = pt.nz;\r\n buffer[index++] = pt.tanx;\r\n buffer[index++] = pt.tany;\r\n buffer[index++] = pt.tanz;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.KeplerVertexBuffer\r\n\r\n function KeplerVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n KeplerVertexBuffer.create = function(items) {\r\n var tmp = new KeplerVertexBuffer(items.length);\r\n tmp._verts$1 = items;\r\n return tmp;\r\n };\r\n var KeplerVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 19);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.ABC.x;\r\n buffer[index++] = pt.ABC.y;\r\n buffer[index++] = pt.ABC.z;\r\n buffer[index++] = pt.abc1.x;\r\n buffer[index++] = pt.abc1.y;\r\n buffer[index++] = pt.abc1.z;\r\n buffer[index++] = pt.pointSize;\r\n buffer[index++] = pt.color.r / 255;\r\n buffer[index++] = pt.color.g / 255;\r\n buffer[index++] = pt.color.b / 255;\r\n buffer[index++] = pt.color.a / 255;\r\n buffer[index++] = pt.w;\r\n buffer[index++] = pt.e;\r\n buffer[index++] = pt.n;\r\n buffer[index++] = pt.t;\r\n buffer[index++] = pt.a;\r\n buffer[index++] = pt.z;\r\n buffer[index++] = pt.orbitPos;\r\n buffer[index++] = pt.orbits;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TimeSeriesLineVertexBuffer\r\n\r\n function TimeSeriesLineVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n var TimeSeriesLineVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 9);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.get_color().r / 255;\r\n buffer[index++] = pt.get_color().g / 255;\r\n buffer[index++] = pt.get_color().b / 255;\r\n buffer[index++] = pt.get_color().a / 255;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TimeSeriesPointVertexBuffer\r\n\r\n function TimeSeriesPointVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n var TimeSeriesPointVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 10);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.get_color().r / 255;\r\n buffer[index++] = pt.get_color().g / 255;\r\n buffer[index++] = pt.get_color().b / 255;\r\n buffer[index++] = pt.get_color().a / 255;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n buffer[index++] = pt.pointSize;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n },\r\n dispose: function() {\r\n Tile.prepDevice.bindBuffer(34962, null);\r\n Tile.prepDevice.deleteBuffer(this.vertexBuffer);\r\n this.vertexBuffer = null;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionColoredVertexBuffer\r\n\r\n function PositionColoredVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n var PositionColoredVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 7);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.color.r / 255;\r\n buffer[index++] = pt.color.g / 255;\r\n buffer[index++] = pt.color.b / 255;\r\n buffer[index++] = pt.color.a / 255;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PositionColoredTexturedVertexBuffer\r\n\r\n function PositionColoredTexturedVertexBuffer(count) {\r\n this.count = 0;\r\n this._verts$1 = null;\r\n VertexBufferBase.call(this);\r\n this.count = count;\r\n }\r\n var PositionColoredTexturedVertexBuffer$ = {\r\n lock: function() {\r\n this._verts$1 = new Array(this.count);\r\n return this._verts$1;\r\n },\r\n unlock: function() {\r\n this.vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this.vertexBuffer);\r\n var f32array = new Float32Array(this.count * 9);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._verts$1);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n buffer[index++] = pt.position.x;\r\n buffer[index++] = pt.position.y;\r\n buffer[index++] = pt.position.z;\r\n buffer[index++] = pt.color.r / 255;\r\n buffer[index++] = pt.color.g / 255;\r\n buffer[index++] = pt.color.b / 255;\r\n buffer[index++] = pt.color.a / 255;\r\n buffer[index++] = pt.tu;\r\n buffer[index++] = pt.tv;\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ScaleLinear\r\n\r\n function ScaleLinear(min, max) {\r\n this._min$1 = 0;\r\n this._max$1 = 0;\r\n this._factor$1 = 0;\r\n this._logFactor$1 = 0;\r\n ScaleMap.call(this);\r\n this._min$1 = min;\r\n this._max$1 = max;\r\n this._factor$1 = max - min;\r\n }\r\n var ScaleLinear$ = {\r\n map: function(val) {\r\n return Math.min(255, Math.max(0, ss.truncate(((val - this._min$1) / this._factor$1 * 255))));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ScaleLog\r\n\r\n function ScaleLog(min, max) {\r\n this._min$1 = 0;\r\n this._max$1 = 0;\r\n this._factor$1 = 0;\r\n this._logFactor$1 = 0;\r\n ScaleMap.call(this);\r\n this._min$1 = min;\r\n this._max$1 = max;\r\n this._factor$1 = max - min;\r\n this._logFactor$1 = 255 / Math.log(255);\r\n }\r\n var ScaleLog$ = {\r\n map: function(val) {\r\n return Math.min(255, Math.max(0, ss.truncate((Math.log((val - this._min$1) / this._factor$1 * 255) * this._logFactor$1))));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ScalePow\r\n\r\n function ScalePow(min, max) {\r\n this._min$1 = 0;\r\n this._max$1 = 0;\r\n this._factor$1 = 0;\r\n this._powFactor$1 = 0;\r\n ScaleMap.call(this);\r\n this._min$1 = min;\r\n this._max$1 = max;\r\n this._factor$1 = max - min;\r\n this._powFactor$1 = 255 / Math.pow(255, 2);\r\n }\r\n var ScalePow$ = {\r\n map: function(val) {\r\n return Math.min(255, Math.max(0, ss.truncate((Math.pow((val - this._min$1) / this._factor$1 * 255, 2) * this._powFactor$1))));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ScaleSqrt\r\n\r\n function ScaleSqrt(min, max) {\r\n this._min$1 = 0;\r\n this._max$1 = 0;\r\n this._factor$1 = 0;\r\n this._sqrtFactor$1 = 0;\r\n ScaleMap.call(this);\r\n this._min$1 = min;\r\n this._max$1 = max;\r\n this._factor$1 = max - min;\r\n this._sqrtFactor$1 = 255 / Math.sqrt(255);\r\n }\r\n var ScaleSqrt$ = {\r\n map: function(val) {\r\n return Math.min(255, Math.max(0, ss.truncate((Math.sqrt((val - this._min$1) / this._factor$1 * 255) * this._sqrtFactor$1))));\r\n }\r\n };\r\n\r\n\r\n // wwtlib.HistogramEqualization\r\n\r\n function HistogramEqualization(image, min, max) {\r\n this._min$1 = 0;\r\n this._max$1 = 0;\r\n this._factor$1 = 0;\r\n this._maxHistogramValue$1 = 1;\r\n ScaleMap.call(this);\r\n this._min$1 = min;\r\n this._max$1 = max;\r\n this._factor$1 = max - min;\r\n this._histogram$1 = image.computeHistogram(10000);\r\n this._maxHistogramValue$1 = this._histogram$1[10000];\r\n this._lookup$1 = new Array(10000);\r\n var totalCounts = ss.truncate((image.get_sizeX() * image.get_sizeY()));\r\n var sum = 0;\r\n for (var i = 0; i < 10000; i++) {\r\n sum += this._histogram$1[i];\r\n this._lookup$1[i] = (Math.min(255, (sum * 255) / totalCounts) + 0.5);\r\n }\r\n }\r\n var HistogramEqualization$ = {\r\n map: function(val) {\r\n return this._lookup$1[Math.min(10000 - 1, Math.max(0, ss.truncate(((val - this._min$1) / this._factor$1 * (10000 - 1)))))];\r\n }\r\n };\r\n\r\n\r\n // wwtlib.GreatCirlceRouteLayer\r\n\r\n function GreatCirlceRouteLayer() {\r\n this._triangleList$1 = null;\r\n this._latStart$1 = 0;\r\n this._lngStart$1 = 0;\r\n this._latEnd$1 = 0;\r\n this._lngEnd$1 = 0;\r\n this._width$1 = 4;\r\n this._percentComplete$1 = 100;\r\n Layer.call(this);\r\n }\r\n var GreatCirlceRouteLayer$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.GreatCirlceRouteLayer';\r\n },\r\n cleanUp: function() {\r\n if (this._triangleList$1 != null) {\r\n this._triangleList$1.clear();\r\n }\r\n this._triangleList$1 = null;\r\n Layer.prototype.cleanUp.call(this);\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n if (this._triangleList$1 == null) {\r\n this._initializeRoute$1(renderContext);\r\n }\r\n this._triangleList$1.jNow = this._percentComplete$1 / 100;\r\n this._triangleList$1.draw(renderContext, opacity * this.get_opacity(), 2);\r\n return true;\r\n },\r\n _initializeRoute$1: function(renderContext) {\r\n this._triangleList$1 = new TriangleList();\r\n this._triangleList$1.decay = 1000;\r\n this._triangleList$1.sky = this.get_astronomical();\r\n this._triangleList$1.timeSeries = true;\r\n this._triangleList$1.depthBuffered = false;\r\n this._triangleList$1.autoTime = false;\r\n var steps = 500;\r\n var start = Coordinates.geoTo3dDouble(this._latStart$1, this._lngStart$1);\r\n var end = Coordinates.geoTo3dDouble(this._latEnd$1, this._lngEnd$1);\r\n var dir = Vector3d.subtractVectors(end, start);\r\n dir.normalize();\r\n var startNormal = start;\r\n startNormal.normalize();\r\n var left = Vector3d.cross(startNormal, dir);\r\n var right = Vector3d.cross(dir, startNormal);\r\n left.normalize();\r\n right.normalize();\r\n left.multiply(0.001 * this._width$1);\r\n right.multiply(0.001 * this._width$1);\r\n var lastLeft = new Vector3d();\r\n var lastRight = new Vector3d();\r\n var firstTime = true;\r\n for (var i = 0; i <= steps; i++) {\r\n var v = Vector3d.lerp(start, end, i / steps);\r\n v.normalize();\r\n var cl = v;\r\n var cr = v;\r\n cl.add(left);\r\n cr.add(right);\r\n if (!firstTime) {\r\n this._triangleList$1.addQuad(lastRight, lastLeft, cr, cl, this.get_color(), new Dates(i / steps, 2));\r\n }\r\n else {\r\n firstTime = false;\r\n }\r\n lastLeft = cl;\r\n lastRight = cr;\r\n }\r\n },\r\n getParams: function() {\r\n return [ this._percentComplete$1 ];\r\n },\r\n getParamNames: function() {\r\n return [ 'Percentage' ];\r\n },\r\n setParams: function(paramList) {\r\n if (paramList.length > 0) {\r\n this._percentComplete$1 = paramList[0];\r\n }\r\n },\r\n get_latStart: function() {\r\n return this._latStart$1;\r\n },\r\n set_latStart: function(value) {\r\n if (this._latStart$1 !== value) {\r\n this._latStart$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_lngStart: function() {\r\n return this._lngStart$1;\r\n },\r\n set_lngStart: function(value) {\r\n if (this._lngStart$1 !== value) {\r\n this._lngStart$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_latEnd: function() {\r\n return this._latEnd$1;\r\n },\r\n set_latEnd: function(value) {\r\n if (this._latEnd$1 !== value) {\r\n this._latEnd$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_lngEnd: function() {\r\n return this._lngEnd$1;\r\n },\r\n set_lngEnd: function(value) {\r\n if (this._lngEnd$1 !== value) {\r\n this._lngEnd$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_width: function() {\r\n return this._width$1;\r\n },\r\n set_width: function(value) {\r\n if (this._width$1 !== value) {\r\n this._width$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_percentComplete: function() {\r\n return this._percentComplete$1;\r\n },\r\n set_percentComplete: function(value) {\r\n if (this._percentComplete$1 !== value) {\r\n this._percentComplete$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n writeLayerProperties: function(xmlWriter) {\r\n xmlWriter._writeAttributeString('LatStart', this.get_latStart().toString());\r\n xmlWriter._writeAttributeString('LngStart', this.get_lngStart().toString());\r\n xmlWriter._writeAttributeString('LatEnd', this.get_latEnd().toString());\r\n xmlWriter._writeAttributeString('LngEnd', this.get_lngEnd().toString());\r\n xmlWriter._writeAttributeString('Width', this.get_width().toString());\r\n xmlWriter._writeAttributeString('PercentComplete', this.get_percentComplete().toString());\r\n },\r\n initializeFromXml: function(node) {\r\n this._latStart$1 = parseFloat(node.attributes.getNamedItem('LatStart').nodeValue);\r\n this._lngStart$1 = parseFloat(node.attributes.getNamedItem('LngStart').nodeValue);\r\n this._latEnd$1 = parseFloat(node.attributes.getNamedItem('LatEnd').nodeValue);\r\n this._lngEnd$1 = parseFloat(node.attributes.getNamedItem('LngEnd').nodeValue);\r\n this._width$1 = parseFloat(node.attributes.getNamedItem('Width').nodeValue);\r\n this._percentComplete$1 = parseFloat(node.attributes.getNamedItem('PercentComplete').nodeValue);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.GridLayer\r\n\r\n function GridLayer() {\r\n Layer.call(this);\r\n }\r\n var GridLayer$ = {\r\n draw: function(renderContext, opacity, flat) {\r\n Grids.drawPlanetGrid(renderContext, opacity * this.get_opacity(), this.get_color());\r\n Grids.drawPlanetGridText(renderContext, opacity * this.get_opacity(), this.get_color());\r\n return true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ImageSetLayer\r\n\r\n function ImageSetLayer() {\r\n this._imageSet$1 = null;\r\n this._extension$1 = '.txt';\r\n this._overrideDefaultLayer$1 = false;\r\n this._loaded$1 = false;\r\n Layer.call(this);\r\n }\r\n ImageSetLayer.create = function(set) {\r\n var isl = new ImageSetLayer();\r\n isl._imageSet$1 = set;\r\n return isl;\r\n };\r\n var ImageSetLayer$ = {\r\n get_imageSet: function() {\r\n return this._imageSet$1;\r\n },\r\n set_imageSet: function(value) {\r\n this._imageSet$1 = value;\r\n return value;\r\n },\r\n get_overrideDefaultLayer: function() {\r\n return this._overrideDefaultLayer$1;\r\n },\r\n set_overrideDefaultLayer: function(value) {\r\n this._overrideDefaultLayer$1 = value;\r\n return value;\r\n },\r\n getFitsImage: function() {\r\n return ss.safeCast(this._imageSet$1.get_wcsImage(), FitsImage);\r\n },\r\n _isFitsImageset$1: function() {\r\n var hasFitsExt = this._imageSet$1.get_extension() === '.fits';\r\n return ss.canCast(this._imageSet$1.get_wcsImage(), FitsImage) || (this._imageSet$1.get_wcsImage() == null && hasFitsExt);\r\n },\r\n initializeFromXml: function(node) {\r\n var imageSetNode = Util.selectSingleNode(node, 'ImageSet');\r\n this._imageSet$1 = Imageset.fromXMLNode(imageSetNode);\r\n if (node.attributes.getNamedItem('Extension') != null) {\r\n this._extension$1 = node.attributes.getNamedItem('Extension').nodeValue;\r\n }\r\n if (node.attributes.getNamedItem('ScaleType') != null) {\r\n this.get_imageSet().get_fitsProperties().scaleType = Enums.parse('ScaleTypes', node.attributes.getNamedItem('ScaleType').nodeValue);\r\n }\r\n if (node.attributes.getNamedItem('MinValue') != null) {\r\n this.get_imageSet().get_fitsProperties().minVal = parseFloat(node.attributes.getNamedItem('MinValue').nodeValue);\r\n this.get_imageSet().get_fitsProperties().lowerCut = (node.attributes.getNamedItem('LowerCut') != null) ? parseFloat(node.attributes.getNamedItem('LowerCut').nodeValue) : this.get_imageSet().get_fitsProperties().minVal;\r\n }\r\n if (node.attributes.getNamedItem('MaxValue') != null) {\r\n this.get_imageSet().get_fitsProperties().maxVal = parseFloat(node.attributes.getNamedItem('MaxValue').nodeValue);\r\n this.get_imageSet().get_fitsProperties().upperCut = (node.attributes.getNamedItem('UpperCut') != null) ? parseFloat(node.attributes.getNamedItem('UpperCut').nodeValue) : this.get_imageSet().get_fitsProperties().maxVal;\r\n }\r\n if (node.attributes.getNamedItem('ColorMapperName') != null) {\r\n this.get_imageSet().get_fitsProperties().colorMapName = node.attributes.getNamedItem('ColorMapperName').nodeValue;\r\n }\r\n if (node.attributes.getNamedItem('OverrideDefault') != null) {\r\n this._overrideDefaultLayer$1 = ss.boolean(node.attributes.getNamedItem('OverrideDefault').nodeValue);\r\n }\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n if (!this._loaded$1) {\r\n return false;\r\n }\r\n renderContext.set_worldBase(renderContext.get_world());\r\n renderContext.set_viewBase(renderContext.get_view());\r\n renderContext.makeFrustum();\r\n renderContext.drawImageSet(this._imageSet$1, this.get_opacity() * opacity * 100);\r\n return true;\r\n },\r\n writeLayerProperties: function(xmlWriter) {\r\n if (this._imageSet$1.get_wcsImage() != null) {\r\n if (this._isFitsImageset$1()) {\r\n this._extension$1 = '.fit';\r\n }\r\n else {\r\n this._extension$1 = '.png';\r\n }\r\n xmlWriter._writeAttributeString('Extension', this._extension$1);\r\n }\r\n if (this._isFitsImageset$1()) {\r\n xmlWriter._writeAttributeString('ScaleType', Enums.toXml('ScaleTypes', this._imageSet$1.get_fitsProperties().scaleType));\r\n xmlWriter._writeAttributeString('MinValue', this._imageSet$1.get_fitsProperties().minVal.toString());\r\n xmlWriter._writeAttributeString('MaxValue', this._imageSet$1.get_fitsProperties().maxVal.toString());\r\n xmlWriter._writeAttributeString('LowerCut', this._imageSet$1.get_fitsProperties().lowerCut.toString());\r\n xmlWriter._writeAttributeString('UpperCut', this._imageSet$1.get_fitsProperties().upperCut.toString());\r\n if (this._imageSet$1.get_fitsProperties().colorMapName != null) {\r\n xmlWriter._writeAttributeString('ColorMapperName', this._imageSet$1.get_fitsProperties().colorMapName);\r\n }\r\n }\r\n xmlWriter._writeAttributeString('OverrideDefault', this._overrideDefaultLayer$1.toString());\r\n Imageset.saveToXml(xmlWriter, this._imageSet$1, '');\r\n Layer.prototype.writeLayerProperties.call(this, xmlWriter);\r\n },\r\n getTypeName: function() {\r\n return 'TerraViewer.ImageSetLayer';\r\n },\r\n cleanUp: function() {\r\n Layer.prototype.cleanUp.call(this);\r\n },\r\n addFilesToCabinet: function(fc) {\r\n if (ss.canCast(this._imageSet$1.get_wcsImage(), FitsImage)) {\r\n var fName = (this._imageSet$1.get_wcsImage()).get_filename();\r\n var fileName = fc.tempDirectory + ss.format('{0}\\\\{1}{2}', fc.get_packageID(), this.id.toString(), this._extension$1);\r\n fc.addFile(fileName, (this._imageSet$1.get_wcsImage()).sourceBlob);\r\n }\r\n },\r\n getParamNames: function() {\r\n return Layer.prototype.getParamNames.call(this);\r\n },\r\n getParams: function() {\r\n return Layer.prototype.getParams.call(this);\r\n },\r\n setParams: function(paramList) {\r\n Layer.prototype.setParams.call(this, paramList);\r\n },\r\n setImageScale: function(scaleType, min, max) {\r\n console.warn('SetImageScale is considered deprecated. Use setImageScaleRaw or setImageScalePhysical instead.');\r\n this.setImageScaleRaw(scaleType, min, max);\r\n },\r\n setImageScaleRaw: function(scaleType, min, max) {\r\n this.get_imageSet().get_fitsProperties().lowerCut = min;\r\n this.get_imageSet().get_fitsProperties().upperCut = max;\r\n this.get_imageSet().get_fitsProperties().scaleType = scaleType;\r\n if (ss.canCast(this._imageSet$1.get_wcsImage(), FitsImageJs)) {\r\n Histogram.updateScale(this, scaleType, min, max);\r\n }\r\n },\r\n setImageScalePhysical: function(scaleType, min, max) {\r\n var newMin = min;\r\n var newMax = max;\r\n if (this._isFitsImageset$1()) {\r\n newMin = (newMin - this._imageSet$1.get_fitsProperties().bZero) / this._imageSet$1.get_fitsProperties().bScale;\r\n newMax = (newMax - this._imageSet$1.get_fitsProperties().bZero) / this._imageSet$1.get_fitsProperties().bScale;\r\n }\r\n this.setImageScaleRaw(scaleType, newMin, newMax);\r\n },\r\n setImageZ: function(z) {\r\n if (this._isFitsImageset$1()) {\r\n Histogram.updateImage(this, z);\r\n }\r\n },\r\n get_colorMapperName: function() {\r\n return this.get_imageSet().get_fitsProperties().colorMapName;\r\n },\r\n set_colorMapperName: function(value) {\r\n if (ColorMapContainer.fromNamedColormap(value) == null) {\r\n throw new Error('Invalid colormap name');\r\n }\r\n this.version++;\r\n if (this._isFitsImageset$1()) {\r\n if (RenderContext.useGlVersion2) {\r\n this._imageSet$1.get_fitsProperties().colorMapName = value;\r\n }\r\n else {\r\n Histogram.updateColorMapper(this, value);\r\n }\r\n }\r\n return value;\r\n },\r\n get_colorMapper: function() {\r\n if (this.get_imageSet().get_fitsProperties().colorMapName == null) {\r\n return null;\r\n }\r\n else {\r\n return ColorMapContainer.fromNamedColormap(this.get_imageSet().get_fitsProperties().colorMapName);\r\n }\r\n },\r\n loadData: function(tourDoc, filename) {\r\n if (ss.startsWith(this._extension$1.toLowerCase(), '.fit')) {\r\n var blob = tourDoc.getFileBlob(ss.replaceString(filename, '.txt', this._extension$1));\r\n var fi;\r\n if (RenderContext.useGlVersion2) {\r\n fi = new FitsImage(this._imageSet$1, 'image.fit', blob, ss.bind('doneLoading', this));\r\n }\r\n else {\r\n fi = new FitsImageJs(this._imageSet$1, 'image.fit', blob, ss.bind('doneLoading', this));\r\n }\r\n this._imageSet$1.set_wcsImage(fi);\r\n }\r\n else {\r\n this._loaded$1 = true;\r\n }\r\n },\r\n doneLoading: function(wcsImage) {\r\n this._loaded$1 = true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.LayerCollection\r\n\r\n function LayerCollection() {\r\n Layer.call(this);\r\n }\r\n var LayerCollection$ = {\r\n draw: function(renderContext, opacity, flat) {\r\n return Layer.prototype.draw.call(this, renderContext, opacity, false);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Object3dLayer\r\n\r\n function Object3dLayer() {\r\n this._primaryUI$1 = null;\r\n this._heading$1 = 0;\r\n this._flipV$1 = true;\r\n this._flipHandedness$1 = false;\r\n this._smooth$1 = true;\r\n this._twoSidedGeometry$1 = false;\r\n this._pitch$1 = 0;\r\n this._roll$1 = 0;\r\n this._scale$1 = Vector3d.create(1, 1, 1);\r\n this._translate$1 = Vector3d.create(0, 0, 0);\r\n this._lightID$1 = 0;\r\n this._dirty$1 = false;\r\n this.objType = false;\r\n this._xHandle$1 = new Vector2d();\r\n this._yHandle$1 = new Vector2d();\r\n this._zHandle$1 = new Vector2d();\r\n this._hprHandles$1 = new Array(6);\r\n this._uiScale$1 = 1;\r\n this._showEditUi$1 = false;\r\n this._dragMode$1 = 0;\r\n this._pntDown$1 = new Vector2d();\r\n this._valueOnDown$1 = 0;\r\n this._valueOnDown2$1 = 0;\r\n this._hitDist$1 = 20;\r\n this._lockPreferedAxis$1 = false;\r\n this._preferY$1 = false;\r\n Layer.call(this);\r\n }\r\n Object3dLayer._initTranslateUI$1 = function() {\r\n Object3dLayer._translateUILines$1 = new LineList();\r\n Object3dLayer._translateUILines$1.timeSeries = false;\r\n Object3dLayer._translateUILines$1.set_depthBuffered(false);\r\n Object3dLayer._translateUILines$1.showFarSide = true;\r\n Object3dLayer._translateUI$1 = new TriangleList();\r\n Object3dLayer._translateUI$1.depthBuffered = false;\r\n Object3dLayer._translateUI$1.timeSeries = false;\r\n Object3dLayer._translateUI$1.writeZbuffer = false;\r\n var twoPi = Math.PI * 2;\r\n var step = twoPi / 45;\r\n var rad = 0.05;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var pnt1 = Vector3d.create(1 - rad * 4, 0, 0);\r\n var pnt2 = Vector3d.create(1 - rad * 4, Math.cos(a) * rad, Math.sin(a) * rad);\r\n var pnt3 = Vector3d.create(1 - rad * 4, Math.cos(a + step) * rad, Math.sin(a + step) * rad);\r\n Object3dLayer._translateUI$1.addTriangle(pnt1, pnt2, pnt3, Colors.get_red(), Dates.empty());\r\n }\r\n for (var a = 0; a < twoPi; a += step) {\r\n var pnt1 = Vector3d.create(1, 0, 0);\r\n var pnt3 = Vector3d.create(1 - rad * 4, Math.cos(a) * rad, Math.sin(a) * rad);\r\n var pnt2 = Vector3d.create(1 - rad * 4, Math.cos(a + step) * rad, Math.sin(a + step) * rad);\r\n Object3dLayer._translateUI$1.addTriangle(pnt1, pnt2, pnt3, Color.fromArgb(255, 255, Math.max(0, (Math.sin(a) * 128)), Math.max(0, (Math.sin(a) * 128))), Dates.empty());\r\n }\r\n Object3dLayer._translateUILines$1.addLine(Vector3d.create(0, 0, 0), Vector3d.create(1, 0, 0), Colors.get_red(), Dates.empty());\r\n for (var a = 0; a < twoPi; a += step) {\r\n var pnt1 = Vector3d.create(0, 1 - rad * 4, 0);\r\n var pnt3 = Vector3d.create(Math.cos(a) * rad, 1 - rad * 4, Math.sin(a) * rad);\r\n var pnt2 = Vector3d.create(Math.cos(a + step) * rad, 1 - rad * 4, Math.sin(a + step) * rad);\r\n Object3dLayer._translateUI$1.addTriangle(pnt1, pnt2, pnt3, Colors.get_green(), Dates.empty());\r\n }\r\n for (var a = 0; a < twoPi; a += step) {\r\n var pnt1 = Vector3d.create(0, 1, 0);\r\n var pnt2 = Vector3d.create(Math.cos(a) * rad, 1 - rad * 4, Math.sin(a) * rad);\r\n var pnt3 = Vector3d.create(Math.cos(a + step) * rad, 1 - rad * 4, Math.sin(a + step) * rad);\r\n Object3dLayer._translateUI$1.addTriangle(pnt1, pnt2, pnt3, Color.fromArgb(255, Math.max(0, (Math.sin(a) * 128)), 255, Math.max(0, (Math.sin(a) * 128))), Dates.empty());\r\n }\r\n Object3dLayer._translateUILines$1.addLine(Vector3d.create(0, 0, 0), Vector3d.create(0, 1, 0), Colors.get_green(), Dates.empty());\r\n for (var a = 0; a < twoPi; a += step) {\r\n var pnt1 = Vector3d.create(0, 0, 1 - rad * 4);\r\n var pnt2 = Vector3d.create(Math.cos(a) * rad, Math.sin(a) * rad, 1 - rad * 4);\r\n var pnt3 = Vector3d.create(Math.cos(a + step) * rad, Math.sin(a + step) * rad, 1 - rad * 4);\r\n Object3dLayer._translateUI$1.addTriangle(pnt1, pnt2, pnt3, Colors.get_blue(), Dates.empty());\r\n }\r\n for (var a = 0; a < twoPi; a += step) {\r\n var pnt1 = Vector3d.create(0, 0, 1);\r\n var pnt3 = Vector3d.create(Math.cos(a) * rad, Math.sin(a) * rad, 1 - rad * 4);\r\n var pnt2 = Vector3d.create(Math.cos(a + step) * rad, Math.sin(a + step) * rad, 1 - rad * 4);\r\n Object3dLayer._translateUI$1.addTriangle(pnt1, pnt2, pnt3, Color.fromArgb(255, Math.max(0, (Math.sin(a) * 128)), Math.max(0, (Math.sin(a) * 128)), 255), Dates.empty());\r\n }\r\n Object3dLayer._translateUILines$1.addLine(Vector3d.create(0, 0, 0), Vector3d.create(0, 0, 1), Colors.get_blue(), Dates.empty());\r\n Object3dLayer._initRotateUI$1();\r\n Object3dLayer._initScaleUI$1();\r\n };\r\n Object3dLayer._initScaleUI$1 = function() {\r\n Object3dLayer._scaleUI$1 = new TriangleList();\r\n Object3dLayer._scaleUI$1.depthBuffered = false;\r\n Object3dLayer._scaleUI$1.timeSeries = false;\r\n Object3dLayer._scaleUI$1.writeZbuffer = false;\r\n var twoPi = Math.PI * 2;\r\n var step = twoPi / 45;\r\n var rad = 0.05;\r\n Object3dLayer._makeCube$1(Object3dLayer._scaleUI$1, Vector3d.create(1 - rad * 2, 0, 0), rad * 2, Colors.get_red());\r\n Object3dLayer._makeCube$1(Object3dLayer._scaleUI$1, Vector3d.create(0, 1 - rad * 2, 0), rad * 2, Colors.get_green());\r\n Object3dLayer._makeCube$1(Object3dLayer._scaleUI$1, Vector3d.create(0, 0, 1 - rad * 2), rad * 2, Colors.get_blue());\r\n };\r\n Object3dLayer._makeCube$1 = function(tl, center, size, color) {\r\n var dark = Color.fromArgb(255, ss.truncate((color.r * 0.6)), color.g, ss.truncate((color.b * 0.6)));\r\n var med = Color.fromArgb(255, ss.truncate((color.r * 0.8)), ss.truncate((color.g * 0.8)), ss.truncate((color.b * 0.8)));\r\n tl.addQuad(Vector3d.create(center.x + size, center.y + size, center.z + size), Vector3d.create(center.x + size, center.y + size, center.z - size), Vector3d.create(center.x - size, center.y + size, center.z + size), Vector3d.create(center.x - size, center.y + size, center.z - size), color, Dates.empty());\r\n tl.addQuad(Vector3d.create(center.x + size, center.y - size, center.z + size), Vector3d.create(center.x - size, center.y - size, center.z + size), Vector3d.create(center.x + size, center.y - size, center.z - size), Vector3d.create(center.x - size, center.y - size, center.z - size), color, Dates.empty());\r\n tl.addQuad(Vector3d.create(center.x - size, center.y + size, center.z + size), Vector3d.create(center.x - size, center.y + size, center.z - size), Vector3d.create(center.x - size, center.y - size, center.z + size), Vector3d.create(center.x - size, center.y - size, center.z - size), dark, Dates.empty());\r\n tl.addQuad(Vector3d.create(center.x + size, center.y + size, center.z + size), Vector3d.create(center.x + size, center.y - size, center.z + size), Vector3d.create(center.x + size, center.y + size, center.z - size), Vector3d.create(center.x + size, center.y - size, center.z - size), dark, Dates.empty());\r\n tl.addQuad(Vector3d.create(center.x + size, center.y + size, center.z + size), Vector3d.create(center.x - size, center.y + size, center.z + size), Vector3d.create(center.x + size, center.y - size, center.z + size), Vector3d.create(center.x - size, center.y - size, center.z + size), med, Dates.empty());\r\n tl.addQuad(Vector3d.create(center.x + size, center.y + size, center.z - size), Vector3d.create(center.x + size, center.y - size, center.z - size), Vector3d.create(center.x - size, center.y + size, center.z - size), Vector3d.create(center.x - size, center.y - size, center.z - size), med, Dates.empty());\r\n };\r\n Object3dLayer._initRotateUI$1 = function() {\r\n Object3dLayer._rotateUi$1 = new TriangleList();\r\n Object3dLayer._rotateUi$1.depthBuffered = false;\r\n Object3dLayer._rotateUi$1.timeSeries = false;\r\n Object3dLayer._rotateUi$1.writeZbuffer = false;\r\n var twoPi = Math.PI * 2;\r\n var step = twoPi / 40;\r\n var rad = 0.05;\r\n var index = 0;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var start = !(index % 10);\r\n var end = !((index + 1) % 10);\r\n var pnt1 = Vector3d.create(rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.cos(a), Math.sin(a));\r\n var pnt2 = Vector3d.create(-rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.cos(a), Math.sin(a));\r\n var pnt3 = Vector3d.create(rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.cos(a + step), Math.sin(a + step));\r\n var pnt4 = Vector3d.create(-rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.cos(a + step), Math.sin(a + step));\r\n Object3dLayer._rotateUi$1.addQuad(pnt1, pnt3, pnt2, pnt4, Color._fromArgbColor(192, Colors.get_red()), Dates.empty());\r\n index++;\r\n }\r\n index = 0;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var start = !(index % 10);\r\n var end = !((index + 1) % 10);\r\n var pnt1 = Vector3d.create(Math.cos(a), Math.sin(a), rad * ((start) ? 0 : ((end) ? 1.5 : 1)));\r\n var pnt2 = Vector3d.create(Math.cos(a), Math.sin(a), -rad * ((start) ? 0 : ((end) ? 1.5 : 1)));\r\n var pnt3 = Vector3d.create(Math.cos(a + step), Math.sin(a + step), rad * ((start) ? 1.5 : ((end) ? 0 : 1)));\r\n var pnt4 = Vector3d.create(Math.cos(a + step), Math.sin(a + step), -rad * ((start) ? 1.5 : ((end) ? 0 : 1)));\r\n Object3dLayer._rotateUi$1.addQuad(pnt1, pnt3, pnt2, pnt4, Color._fromArgbColor(192, Colors.get_blue()), Dates.empty());\r\n index++;\r\n }\r\n index = 0;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var start = !(index % 10);\r\n var end = !((index + 1) % 10);\r\n var pnt1 = Vector3d.create(Math.cos(a), rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.sin(a));\r\n var pnt2 = Vector3d.create(Math.cos(a), -rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.sin(a));\r\n var pnt3 = Vector3d.create(Math.cos(a + step), rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.sin(a + step));\r\n var pnt4 = Vector3d.create(Math.cos(a + step), -rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.sin(a + step));\r\n Object3dLayer._rotateUi$1.addQuad(pnt1, pnt2, pnt3, pnt4, Color._fromArgbColor(192, Colors.get_green()), Dates.empty());\r\n index++;\r\n }\r\n index = 0;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var start = !(index % 10);\r\n var end = !((index + 1) % 10);\r\n var pnt1 = Vector3d.create(-rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.cos(a), Math.sin(a));\r\n var pnt2 = Vector3d.create(rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.cos(a), Math.sin(a));\r\n var pnt3 = Vector3d.create(-rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.cos(a + step), Math.sin(a + step));\r\n var pnt4 = Vector3d.create(rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.cos(a + step), Math.sin(a + step));\r\n Object3dLayer._rotateUi$1.addQuad(pnt1, pnt3, pnt2, pnt4, Colors.get_red(), Dates.empty());\r\n index++;\r\n }\r\n index = 0;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var start = !(index % 10);\r\n var end = !((index + 1) % 10);\r\n var pnt1 = Vector3d.create(Math.cos(a), Math.sin(a), -rad * ((start) ? 0 : ((end) ? 1.5 : 1)));\r\n var pnt2 = Vector3d.create(Math.cos(a), Math.sin(a), rad * ((start) ? 0 : ((end) ? 1.5 : 1)));\r\n var pnt3 = Vector3d.create(Math.cos(a + step), Math.sin(a + step), -rad * ((start) ? 1.5 : ((end) ? 0 : 1)));\r\n var pnt4 = Vector3d.create(Math.cos(a + step), Math.sin(a + step), rad * ((start) ? 1.5 : ((end) ? 0 : 1)));\r\n Object3dLayer._rotateUi$1.addQuad(pnt1, pnt3, pnt2, pnt4, Colors.get_blue(), Dates.empty());\r\n index++;\r\n }\r\n index = 0;\r\n for (var a = 0; a < twoPi; a += step) {\r\n var start = !(index % 10);\r\n var end = !((index + 1) % 10);\r\n var pnt1 = Vector3d.create(Math.cos(a), -rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.sin(a));\r\n var pnt2 = Vector3d.create(Math.cos(a), rad * ((start) ? 0 : ((end) ? 1.5 : 1)), Math.sin(a));\r\n var pnt3 = Vector3d.create(Math.cos(a + step), -rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.sin(a + step));\r\n var pnt4 = Vector3d.create(Math.cos(a + step), rad * ((start) ? 1.5 : ((end) ? 0 : 1)), Math.sin(a + step));\r\n Object3dLayer._rotateUi$1.addQuad(pnt1, pnt2, pnt3, pnt4, Colors.get_green(), Dates.empty());\r\n index++;\r\n }\r\n };\r\n var Object3dLayer$ = {\r\n getPrimaryUI: function() {\r\n if (this._primaryUI$1 == null) {\r\n this._primaryUI$1 = new Object3dLayerUI(this);\r\n }\r\n return this._primaryUI$1;\r\n },\r\n get_flipV: function() {\r\n return this._flipV$1;\r\n },\r\n set_flipV: function(value) {\r\n if (this._flipV$1 !== value) {\r\n this._flipV$1 = value;\r\n if (this.object3d != null) {\r\n this.object3d.flipV = this._flipV$1;\r\n this.object3d._reload();\r\n }\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_flipHandedness: function() {\r\n return this._flipHandedness$1;\r\n },\r\n set_flipHandedness: function(value) {\r\n if (this._flipHandedness$1 !== value) {\r\n this._flipHandedness$1 = value;\r\n if (this.object3d != null) {\r\n this.object3d.flipHandedness = this._flipHandedness$1;\r\n this.object3d._reload();\r\n }\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_smooth: function() {\r\n return this._smooth$1;\r\n },\r\n set_smooth: function(value) {\r\n if (this._smooth$1 !== value) {\r\n this._smooth$1 = value;\r\n if (this.object3d != null) {\r\n this.object3d.smooth = this._smooth$1;\r\n this.object3d._reload();\r\n }\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_twoSidedGeometry: function() {\r\n return this._twoSidedGeometry$1;\r\n },\r\n set_twoSidedGeometry: function(value) {\r\n if (this._twoSidedGeometry$1 !== value) {\r\n this._twoSidedGeometry$1 = value;\r\n this.version++;\r\n }\r\n return value;\r\n },\r\n get_heading: function() {\r\n return this._heading$1;\r\n },\r\n set_heading: function(value) {\r\n if (this._heading$1 !== value) {\r\n this.version++;\r\n this._heading$1 = value;\r\n }\r\n return value;\r\n },\r\n get_pitch: function() {\r\n return this._pitch$1;\r\n },\r\n set_pitch: function(value) {\r\n if (this._pitch$1 !== value) {\r\n this.version++;\r\n this._pitch$1 = value;\r\n }\r\n return value;\r\n },\r\n get_roll: function() {\r\n return this._roll$1;\r\n },\r\n set_roll: function(value) {\r\n if (this._roll$1 !== value) {\r\n this.version++;\r\n this._roll$1 = value;\r\n }\r\n return value;\r\n },\r\n get_scale: function() {\r\n return this._scale$1;\r\n },\r\n set_scale: function(value) {\r\n if (this._scale$1 !== value) {\r\n this.version++;\r\n this._scale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_translate: function() {\r\n return this._translate$1;\r\n },\r\n set_translate: function(value) {\r\n if (this._translate$1 !== value) {\r\n this.version++;\r\n this._translate$1 = value;\r\n }\r\n return value;\r\n },\r\n get_lightID: function() {\r\n return this._lightID$1;\r\n },\r\n set_lightID: function(value) {\r\n this._lightID$1 = value;\r\n return value;\r\n },\r\n cleanUp: function() {\r\n this._dirty$1 = true;\r\n },\r\n colorChanged: function() {\r\n if (this.object3d != null) {\r\n this.object3d.color = this.get_color();\r\n }\r\n },\r\n writeLayerProperties: function(xmlWriter) {\r\n xmlWriter._writeAttributeString('FlipV', this.get_flipV().toString());\r\n xmlWriter._writeAttributeString('FlipHandedness', this.get_flipHandedness().toString());\r\n xmlWriter._writeAttributeString('Smooth', this.get_smooth().toString());\r\n xmlWriter._writeAttributeString('TwoSidedGeometry', this.get_twoSidedGeometry().toString());\r\n xmlWriter._writeAttributeString('Heading', this.get_heading().toString());\r\n xmlWriter._writeAttributeString('Pitch', this.get_pitch().toString());\r\n xmlWriter._writeAttributeString('Roll', this.get_roll().toString());\r\n xmlWriter._writeAttributeString('Scale', this.get_scale().toString());\r\n xmlWriter._writeAttributeString('Translate', this.get_translate().toString());\r\n xmlWriter._writeAttributeString('LightID', this.get_lightID().toString());\r\n xmlWriter._writeAttributeString('Obj', this.objType.toString());\r\n },\r\n getParams: function() {\r\n var paramList = new Array(14);\r\n paramList[0] = this._heading$1;\r\n paramList[1] = this._pitch$1;\r\n paramList[2] = this._roll$1;\r\n paramList[3] = this._scale$1.x;\r\n paramList[4] = this._scale$1.y;\r\n paramList[5] = this._scale$1.z;\r\n paramList[6] = this._translate$1.x;\r\n paramList[7] = this._translate$1.y;\r\n paramList[8] = this._translate$1.z;\r\n paramList[9] = this.get_color().r / 255;\r\n paramList[10] = this.get_color().g / 255;\r\n paramList[11] = this.get_color().b / 255;\r\n paramList[12] = this.get_color().a / 255;\r\n paramList[13] = this.get_opacity();\r\n return paramList;\r\n },\r\n getParamNames: function() {\r\n return [ 'Heading', 'Pitch', 'Roll', 'Scale.X', 'Scale.Y', 'Scale.Z', 'Translate.X', 'Translate.Y', 'Translate.Z', 'Colors.Red', 'Colors.Green', 'Colors.Blue', 'Colors.Alpha', 'Opacity' ];\r\n },\r\n setParams: function(paramList) {\r\n if (paramList.length === 14) {\r\n this._heading$1 = paramList[0];\r\n this._pitch$1 = paramList[1];\r\n this._roll$1 = paramList[2];\r\n this._scale$1.x = paramList[3];\r\n this._scale$1.y = paramList[4];\r\n this._scale$1.z = paramList[5];\r\n this._translate$1.x = paramList[6];\r\n this._translate$1.y = paramList[7];\r\n this._translate$1.z = paramList[8];\r\n this.set_opacity(paramList[13]);\r\n var color = Color.fromArgb(ss.truncate((paramList[12] * 255)), ss.truncate((paramList[9] * 255)), ss.truncate((paramList[10] * 255)), ss.truncate((paramList[11] * 255)));\r\n this.set_color(color);\r\n }\r\n },\r\n add_propertiesChanged: function(value) {\r\n this.__propertiesChanged$1 = ss.bindAdd(this.__propertiesChanged$1, value);\r\n },\r\n remove_propertiesChanged: function(value) {\r\n this.__propertiesChanged$1 = ss.bindSub(this.__propertiesChanged$1, value);\r\n },\r\n fireChanged: function() {\r\n if (this.__propertiesChanged$1 != null) {\r\n this.__propertiesChanged$1(this, new ss.EventArgs());\r\n }\r\n },\r\n getEditUI: function() {\r\n return ss.safeCast(this, IUiController);\r\n },\r\n initializeFromXml: function(node) {\r\n this.set_flipV(ss.boolean(node.attributes.getNamedItem('FlipV').nodeValue));\r\n if (node.attributes.getNamedItem('FlipHandedness') != null) {\r\n this.set_flipHandedness(ss.boolean(node.attributes.getNamedItem('FlipHandedness').nodeValue));\r\n }\r\n else {\r\n this.set_flipHandedness(false);\r\n }\r\n if (node.attributes.getNamedItem('Smooth') != null) {\r\n this.set_smooth(ss.boolean(node.attributes.getNamedItem('Smooth').nodeValue));\r\n }\r\n else {\r\n this.set_smooth(true);\r\n }\r\n if (node.attributes.getNamedItem('TwoSidedGeometry') != null) {\r\n this.set_twoSidedGeometry(ss.boolean(node.attributes.getNamedItem('TwoSidedGeometry').nodeValue));\r\n }\r\n else {\r\n this.set_twoSidedGeometry(false);\r\n }\r\n if (node.attributes.getNamedItem('Obj') != null) {\r\n this.objType = ss.boolean(node.attributes.getNamedItem('Obj').nodeValue);\r\n }\r\n else {\r\n this.objType = false;\r\n }\r\n this.set_heading(parseFloat(node.attributes.getNamedItem('Heading').nodeValue));\r\n this.set_pitch(parseFloat(node.attributes.getNamedItem('Pitch').nodeValue));\r\n this.set_roll(parseFloat(node.attributes.getNamedItem('Roll').nodeValue));\r\n this.set_scale(Vector3d.parse(node.attributes.getNamedItem('Scale').nodeValue));\r\n this.set_translate(Vector3d.parse(node.attributes.getNamedItem('Translate').nodeValue));\r\n if (node.attributes.getNamedItem('LightID') != null) {\r\n this.set_lightID(parseInt(node.attributes.getNamedItem('LightID').nodeValue));\r\n }\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n var oldWorld = renderContext.get_world();\r\n var rotation = Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(Matrix3d._rotationZ(-this._roll$1 / 180 * Math.PI), Matrix3d._rotationX(-this._pitch$1 / 180 * Math.PI)), Matrix3d._rotationY(this._heading$1 / 180 * Math.PI));\r\n renderContext.set_world(Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(Matrix3d.multiplyMatrix(rotation, Matrix3d._scaling(this._scale$1.x, this._scale$1.y, this._scale$1.z)), Matrix3d.translation(this._translate$1)), oldWorld));\r\n renderContext.set_twoSidedLighting(this.get_twoSidedGeometry());\r\n Planets.drawPointPlanet(renderContext, new Vector3d(), 1, Colors.get_red(), false);\r\n if (this._lightID$1 > 0) {\r\n }\r\n else {\r\n if (this.object3d != null) {\r\n this.object3d.color = this.get_color();\r\n this.object3d.render(renderContext, opacity * this.get_opacity());\r\n }\r\n }\r\n renderContext.set_twoSidedLighting(false);\r\n renderContext.set_world(oldWorld);\r\n return true;\r\n },\r\n addFilesToCabinet: function(fc) {\r\n },\r\n loadData: function(doc, filename) {\r\n if (ss.endsWith(filename.toLowerCase(), '.obj')) {\r\n this.objType = true;\r\n }\r\n if (!this._lightID$1) {\r\n if (this.objType) {\r\n this.object3d = new Object3d(doc, ss.replaceString(filename, '.txt', '.obj'), this.get_flipV(), this._flipHandedness$1, true, this.get_color());\r\n }\r\n else {\r\n this.object3d = new Object3d(doc, ss.replaceString(filename, '.txt', '.3ds'), this.get_flipV(), this._flipHandedness$1, true, this.get_color());\r\n }\r\n }\r\n },\r\n pointToView: function(pnt) {\r\n var clientHeight = WWTControl.singleton.renderContext.height;\r\n var clientWidth = WWTControl.singleton.renderContext.width;\r\n var viewWidth = (WWTControl.singleton.renderContext.width / WWTControl.singleton.renderContext.height) * 1116;\r\n var x = ((pnt.x) / (clientWidth) * viewWidth) - ((viewWidth - 1920) / 2);\r\n var y = (pnt.y) / clientHeight * 1116;\r\n return Vector2d.create(x, y);\r\n },\r\n render: function(renderEngine) {\r\n this._showEditUi$1 = true;\r\n return;\r\n },\r\n preRender: function(renderEngine) {\r\n this._showEditUi$1 = true;\r\n return;\r\n },\r\n mouseDown: function(sender, e) {\r\n var location = this.pointToView(Vector2d.create(e.offsetX, e.offsetY));\r\n this._pntDown$1 = location;\r\n var pnt = location;\r\n if (e.shiftKey) {\r\n if (Vector2d.subtract(pnt, this._xHandle$1).get_length() < this._hitDist$1) {\r\n this._dragMode$1 = 10;\r\n this._valueOnDown$1 = this._scale$1.x;\r\n return true;\r\n }\r\n if (Vector2d.subtract(pnt, this._yHandle$1).get_length() < this._hitDist$1) {\r\n this._dragMode$1 = 10;\r\n this._valueOnDown$1 = this._scale$1.y;\r\n return true;\r\n }\r\n if (Vector2d.subtract(pnt, this._zHandle$1).get_length() < this._hitDist$1) {\r\n this._dragMode$1 = 10;\r\n this._valueOnDown$1 = this._scale$1.z;\r\n return true;\r\n }\r\n }\r\n else {\r\n if (Vector2d.subtract(pnt, this._xHandle$1).get_length() < this._hitDist$1) {\r\n this._dragMode$1 = 1;\r\n this._valueOnDown$1 = this._translate$1.x;\r\n return true;\r\n }\r\n if (Vector2d.subtract(pnt, this._yHandle$1).get_length() < this._hitDist$1) {\r\n this._dragMode$1 = 2;\r\n this._valueOnDown$1 = this._translate$1.y;\r\n return true;\r\n }\r\n if (Vector2d.subtract(pnt, this._zHandle$1).get_length() < this._hitDist$1) {\r\n this._dragMode$1 = 3;\r\n this._valueOnDown$1 = this._translate$1.z;\r\n return true;\r\n }\r\n }\r\n for (var i = 0; i < this._hprHandles$1.length; i++) {\r\n if (Vector2d.subtract(pnt, this._hprHandles$1[i]).get_length() < this._hitDist$1) {\r\n switch (i) {\r\n case 0:\r\n this._dragMode$1 = 4;\r\n this._valueOnDown$1 = this._heading$1;\r\n this._valueOnDown2$1 = this._pitch$1;\r\n return true;\r\n case 1:\r\n this._dragMode$1 = 7;\r\n this._valueOnDown$1 = this._heading$1;\r\n this._valueOnDown2$1 = this._pitch$1;\r\n return true;\r\n case 2:\r\n this._dragMode$1 = 5;\r\n this._valueOnDown$1 = this._pitch$1;\r\n this._valueOnDown2$1 = this._roll$1;\r\n return true;\r\n case 3:\r\n this._dragMode$1 = 8;\r\n this._valueOnDown$1 = this._pitch$1;\r\n this._valueOnDown2$1 = this._roll$1;\r\n return true;\r\n case 4:\r\n this._dragMode$1 = 6;\r\n this._valueOnDown$1 = this._roll$1;\r\n this._valueOnDown2$1 = this._heading$1;\r\n return true;\r\n case 5:\r\n this._dragMode$1 = 9;\r\n this._valueOnDown$1 = this._roll$1;\r\n this._valueOnDown2$1 = this._heading$1;\r\n return true;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n mouseUp: function(sender, e) {\r\n if (!!this._dragMode$1) {\r\n this._dragMode$1 = 0;\r\n this._lockPreferedAxis$1 = false;\r\n return true;\r\n }\r\n return false;\r\n },\r\n mouseMove: function(sender, e) {\r\n var location = this.pointToView(Vector2d.create(e.offsetX, e.offsetY));\r\n if (!!this._dragMode$1) {\r\n var dist = 0;\r\n var distX = location.x - this._pntDown$1.x;\r\n var distY = -(location.y - this._pntDown$1.y);\r\n if (this._lockPreferedAxis$1) {\r\n if (this._preferY$1) {\r\n dist = distY;\r\n this._preferY$1 = true;\r\n Cursor.set_current(Cursors.get_sizeNS());\r\n }\r\n else {\r\n dist = distX;\r\n this._preferY$1 = false;\r\n Cursor.set_current(Cursors.get_sizeWE());\r\n }\r\n }\r\n else {\r\n if (Math.abs(distX) > Math.abs(distY)) {\r\n dist = distX;\r\n this._preferY$1 = false;\r\n }\r\n else {\r\n dist = distY;\r\n this._preferY$1 = true;\r\n }\r\n if (dist > 5) {\r\n this._lockPreferedAxis$1 = true;\r\n }\r\n }\r\n switch (this._dragMode$1) {\r\n case 0:\r\n break;\r\n case 1:\r\n this._translate$1.x = this._valueOnDown$1 + (12 * this._uiScale$1 * (dist / WWTControl.singleton.renderContext.width));\r\n break;\r\n case 2:\r\n this._translate$1.y = this._valueOnDown$1 + (12 * this._uiScale$1 * (dist / WWTControl.singleton.renderContext.width));\r\n break;\r\n case 3:\r\n this._translate$1.z = this._valueOnDown$1 + (12 * this._uiScale$1 * (dist / WWTControl.singleton.renderContext.width));\r\n break;\r\n case 4:\r\n this._heading$1 = this._valueOnDown$1 - distX / 4;\r\n this._pitch$1 = this._valueOnDown2$1 + distY / 4;\r\n break;\r\n case 5:\r\n this._pitch$1 = this._valueOnDown$1 + distY / 4;\r\n this._roll$1 = this._valueOnDown2$1 - distX / 4;\r\n break;\r\n case 6:\r\n this._roll$1 = this._valueOnDown$1 + distY / 4;\r\n this._heading$1 = this._valueOnDown2$1 - distX / 4;\r\n break;\r\n case 7:\r\n this._heading$1 = this._valueOnDown$1 - distX / 4;\r\n this._pitch$1 = this._valueOnDown2$1 - distY / 4;\r\n break;\r\n case 8:\r\n this._pitch$1 = this._valueOnDown$1 + distY / 4;\r\n this._roll$1 = this._valueOnDown2$1 + distX / 4;\r\n break;\r\n case 9:\r\n this._roll$1 = this._valueOnDown$1 - distY / 4;\r\n this._heading$1 = this._valueOnDown2$1 - distX / 4;\r\n break;\r\n case 10:\r\n this._scale$1.x = this._scale$1.y = this._scale$1.z = this._valueOnDown$1 * Math.pow(2, (dist / 100));\r\n break;\r\n default:\r\n break;\r\n }\r\n this.fireChanged();\r\n return true;\r\n }\r\n else {\r\n var pnt = location;\r\n if (Vector2d.subtract(pnt, this._xHandle$1).get_length() < this._hitDist$1) {\r\n Cursor.set_current(Cursors.get_sizeAll());\r\n return true;\r\n }\r\n if (Vector2d.subtract(pnt, this._yHandle$1).get_length() < this._hitDist$1) {\r\n Cursor.set_current(Cursors.get_sizeAll());\r\n return true;\r\n }\r\n if (Vector2d.subtract(pnt, this._zHandle$1).get_length() < this._hitDist$1) {\r\n Cursor.set_current(Cursors.get_sizeAll());\r\n return true;\r\n }\r\n for (var i = 0; i < this._hprHandles$1.length; i++) {\r\n if (Vector2d.subtract(pnt, this._hprHandles$1[i]).get_length() < this._hitDist$1) {\r\n Cursor.set_current(Cursors.get_sizeAll());\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n mouseClick: function(sender, e) {\r\n return false;\r\n },\r\n click: function(sender, e) {\r\n return false;\r\n },\r\n mouseDoubleClick: function(sender, e) {\r\n return false;\r\n },\r\n keyDown: function(sender, e) {\r\n return false;\r\n },\r\n keyUp: function(sender, e) {\r\n return false;\r\n },\r\n hover: function(pnt) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.Object3dLayerUI\r\n\r\n function Object3dLayerUI(layer) {\r\n this._layer$1 = null;\r\n this._opened$1 = true;\r\n this._callbacks$1 = null;\r\n LayerUI.call(this);\r\n this._layer$1 = layer;\r\n }\r\n var Object3dLayerUI$ = {\r\n setUICallbacks: function(callbacks) {\r\n this._callbacks$1 = callbacks;\r\n },\r\n get_hasTreeViewNodes: function() {\r\n return true;\r\n },\r\n getTreeNodes: function() {\r\n var nodes = [];\r\n if (this._layer$1.object3d.objects.length > 0 && this._layer$1.object3d.objects[0].children != null) {\r\n this._loadTree$1(nodes, this._layer$1.object3d.objects[0].children);\r\n }\r\n return nodes;\r\n },\r\n _loadTree$1: function(nodes, children) {\r\n var $enum1 = ss.enumerate(children);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n var node = new LayerUITreeNode();\r\n node.set_name(child.name);\r\n node.set_tag(child);\r\n node.set_checked(child.enabled);\r\n node.add_nodeSelected(ss.bind('_node_NodeSelected$1', this));\r\n node.add_nodeChecked(ss.bind('_node_NodeChecked$1', this));\r\n nodes.push(node);\r\n this._loadTree$1(node.get_nodes(), child.children);\r\n }\r\n },\r\n _node_NodeChecked$1: function(node, newState) {\r\n var child = node.get_tag();\r\n if (child != null) {\r\n child.enabled = newState;\r\n }\r\n },\r\n _node_NodeSelected$1: function(node) {\r\n if (this._callbacks$1 != null) {\r\n var child = node.get_tag();\r\n var rowData = {};\r\n rowData['Name'] = child.name;\r\n rowData['Pivot.X'] = child.pivotPoint.x.toString();\r\n rowData['Pivot.Y'] = child.pivotPoint.y.toString();\r\n rowData['Pivot.Z'] = child.pivotPoint.z.toString();\r\n this._callbacks$1.showRowData(rowData);\r\n }\r\n },\r\n getNodeContextMenu: function(node) {\r\n return LayerUI.prototype.getNodeContextMenu.call(this, node);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.OrbitLayer\r\n\r\n function OrbitLayer() {\r\n this._frames$1 = [];\r\n this._primaryUI$1 = null;\r\n this._pointOpacity$1 = 1;\r\n this._pointColor$1 = Colors.get_yellow();\r\n this._filename$1 = '';\r\n this._dataFile$1 = '';\r\n Layer.call(this);\r\n }\r\n var OrbitLayer$ = {\r\n get_frames: function() {\r\n return this._frames$1;\r\n },\r\n set_frames: function(value) {\r\n this._frames$1 = value;\r\n return value;\r\n },\r\n getPrimaryUI: function() {\r\n if (this._primaryUI$1 == null) {\r\n this._primaryUI$1 = new OrbitLayerUI(this);\r\n }\r\n return this._primaryUI$1;\r\n },\r\n cleanUp: function() {\r\n var $enum1 = ss.enumerate(this._frames$1);\r\n while ($enum1.moveNext()) {\r\n var frame = $enum1.current;\r\n if (frame.get_orbit() != null) {\r\n frame.get_orbit().cleanUp();\r\n frame.set_orbit(null);\r\n }\r\n }\r\n },\r\n writeLayerProperties: function(xmlWriter) {\r\n xmlWriter._writeAttributeString('PointOpacity', this.get_pointOpacity().toString());\r\n xmlWriter._writeAttributeString('PointColor', this._pointColor$1.save());\r\n },\r\n get_pointOpacity: function() {\r\n return this._pointOpacity$1;\r\n },\r\n set_pointOpacity: function(value) {\r\n if (this._pointOpacity$1 !== value) {\r\n this.version++;\r\n this._pointOpacity$1 = value;\r\n }\r\n return value;\r\n },\r\n get_pointColor: function() {\r\n return this._pointColor$1;\r\n },\r\n set_pointColor: function(value) {\r\n if (this._pointColor$1 !== value) {\r\n this.version++;\r\n this._pointColor$1 = value;\r\n }\r\n return value;\r\n },\r\n getParams: function() {\r\n var paramList = new Array(6);\r\n paramList[0] = this._pointOpacity$1;\r\n paramList[1] = this.get_color().r / 255;\r\n paramList[2] = this.get_color().g / 255;\r\n paramList[3] = this.get_color().b / 255;\r\n paramList[4] = this.get_color().a / 255;\r\n paramList[5] = this.get_opacity();\r\n return paramList;\r\n },\r\n getParamNames: function() {\r\n return [ 'PointOpacity', 'Color.Red', 'Color.Green', 'Color.Blue', 'Color.Alpha', 'Opacity' ];\r\n },\r\n setParams: function(paramList) {\r\n if (paramList.length === 6) {\r\n this._pointOpacity$1 = paramList[0];\r\n this.set_opacity(paramList[5]);\r\n var color = Color.fromArgb(ss.truncate((paramList[4] * 255)), ss.truncate((paramList[1] * 255)), ss.truncate((paramList[2] * 255)), ss.truncate((paramList[3] * 255)));\r\n this.set_color(color);\r\n }\r\n },\r\n initializeFromXml: function(node) {\r\n this.set_pointOpacity(parseFloat(node.attributes.getNamedItem('PointOpacity').nodeValue));\r\n this.set_pointColor(Color.load(node.attributes.getNamedItem('PointColor').nodeValue));\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n var matSaved = renderContext.get_world();\r\n renderContext.set_world(renderContext.get_worldBaseNonRotating());\r\n var $enum1 = ss.enumerate(this._frames$1);\r\n while ($enum1.moveNext()) {\r\n var frame = $enum1.current;\r\n if (frame.showOrbitPath) {\r\n if (frame.get_orbit() == null) {\r\n frame.set_orbit(new Orbit(frame.get_elements(), 360, this.get_color(), 1, renderContext.get_nominalRadius()));\r\n }\r\n frame.get_orbit().draw3D(renderContext, opacity * this.get_opacity(), new Vector3d());\r\n }\r\n }\r\n renderContext.set_world(matSaved);\r\n return true;\r\n },\r\n addFilesToCabinet: function(fc) {\r\n this._filename$1 = fc.tempDirectory + ss.format('{0}\\\\{1}.txt', fc.get_packageID(), this.id.toString());\r\n var dir = this._filename$1.substring(0, this._filename$1.lastIndexOf('\\\\'));\r\n var blob = new Blob([ this._dataFile$1 ]);\r\n fc.addFile(this._filename$1, blob);\r\n Layer.prototype.addFilesToCabinet.call(this, fc);\r\n },\r\n loadData: function(tourDoc, filename) {\r\n var $this = this;\r\n\r\n var blob = tourDoc.getFileBlob(filename);\r\n var doc = new FileReader();\r\n doc.onloadend = function(ee) {\r\n $this._dataFile$1 = ss.safeCast(doc.result, String);\r\n $this.loadString($this._dataFile$1);\r\n };\r\n doc.readAsText(blob);\r\n },\r\n loadString: function(dataFile) {\r\n var data = dataFile.split('\\n');\r\n this._frames$1.length = 0;\r\n for (var i = 0; i < data.length; i += 2) {\r\n var line1 = i;\r\n var line2 = i + 1;\r\n if (data[i].length > 0) {\r\n var frame = new ReferenceFrame();\r\n if (data[i].substring(0, 1) !== '1') {\r\n line1++;\r\n line2++;\r\n frame.name = ss.trim(data[i]);\r\n i++;\r\n }\r\n else if (data[i].substring(0, 1) === '1') {\r\n frame.name = data[i].substring(2, 5);\r\n }\r\n else {\r\n i -= 2;\r\n continue;\r\n }\r\n frame.reference = 18;\r\n frame.oblateness = 0;\r\n frame.showOrbitPath = true;\r\n frame.showAsPoint = true;\r\n frame.referenceFrameType = 1;\r\n frame.scale = 1;\r\n frame.semiMajorAxisUnits = 1;\r\n frame.meanRadius = 10;\r\n frame.oblateness = 0;\r\n frame.fromTLE(data[line1], data[line2], 398600441800000);\r\n this._frames$1.push(frame);\r\n }\r\n else {\r\n i -= 1;\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.OrbitLayerUI\r\n\r\n function OrbitLayerUI(layer) {\r\n this._layer$1 = null;\r\n this._opened$1 = true;\r\n this._callbacks$1 = null;\r\n LayerUI.call(this);\r\n this._layer$1 = layer;\r\n }\r\n var OrbitLayerUI$ = {\r\n setUICallbacks: function(callbacks) {\r\n this._callbacks$1 = callbacks;\r\n },\r\n get_hasTreeViewNodes: function() {\r\n return true;\r\n },\r\n getTreeNodes: function() {\r\n var nodes = [];\r\n var $enum1 = ss.enumerate(this._layer$1.get_frames());\r\n while ($enum1.moveNext()) {\r\n var frame = $enum1.current;\r\n var node = new LayerUITreeNode();\r\n node.set_name(frame.name);\r\n node.set_tag(frame);\r\n node.set_checked(frame.showOrbitPath);\r\n node.add_nodeSelected(ss.bind('_node_NodeSelected$1', this));\r\n node.add_nodeChecked(ss.bind('_node_NodeChecked$1', this));\r\n nodes.push(node);\r\n }\r\n return nodes;\r\n },\r\n _node_NodeChecked$1: function(node, newState) {\r\n var frame = node.get_tag();\r\n if (frame != null) {\r\n frame.showOrbitPath = newState;\r\n }\r\n },\r\n _node_NodeSelected$1: function(node) {\r\n if (this._callbacks$1 != null) {\r\n var frame = node.get_tag();\r\n var rowData = {};\r\n rowData['Name'] = frame.name;\r\n rowData['SemiMajor Axis'] = frame.semiMajorAxis.toString();\r\n rowData['SMA Units'] = frame.semiMajorAxisUnits.toString();\r\n rowData['Inclination'] = frame.inclination.toString();\r\n rowData['Eccentricity'] = frame.eccentricity.toString();\r\n rowData['Long of Asc. Node'] = frame.longitudeOfAscendingNode.toString();\r\n rowData['Argument Of Periapsis'] = frame.argumentOfPeriapsis.toString();\r\n rowData['Epoch'] = frame.epoch.toString();\r\n rowData['Mean Daily Motion'] = frame.meanDailyMotion.toString();\r\n rowData['Mean Anomoly at Epoch'] = frame.meanAnomolyAtEpoch.toString();\r\n this._callbacks$1.showRowData(rowData);\r\n }\r\n },\r\n getNodeContextMenu: function(node) {\r\n return LayerUI.prototype.getNodeContextMenu.call(this, node);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SpreadSheetLayer\r\n\r\n function SpreadSheetLayer() {\r\n this._dataDirty$1 = false;\r\n this._lastNormalizeSizeColumnIndex$1 = -1;\r\n this._lastDynamicColorColumnIndex$1 = -1;\r\n this._table_backcompat$1 = null;\r\n this._barChartBitmask$1 = 0;\r\n this._barScaleFactor$1 = 20;\r\n this._meanRadius$1 = 6371000;\r\n this._table$1 = new Table();\r\n this.isLongIndex = false;\r\n this.shapeVertexCount = 0;\r\n this.lines = false;\r\n this.latColumn = -1;\r\n this.fixedSize = 1;\r\n this.decay = 16;\r\n this.timeSeries = false;\r\n this._dynamicData$1 = false;\r\n this._autoUpdate$1 = false;\r\n this._dataSourceUrl$1 = '';\r\n this._beginRange$1 = new Date('1/1/2100');\r\n this._endRange$1 = new Date('01/01/1800');\r\n this.markerDomainValues = {};\r\n this.colorDomainValues = {};\r\n this._coordinatesType$1 = 0;\r\n this.lngColumn = -1;\r\n this.geometryColumn = -1;\r\n this._xAxisColumn$1 = -1;\r\n this._yAxisColumn$1 = -1;\r\n this._zAxisColumn$1 = -1;\r\n this._xAxisReverse$1 = false;\r\n this._yAxisReverse$1 = false;\r\n this._zAxisReverse$1 = false;\r\n this._altType$1 = 3;\r\n this._markerMix$1 = 0;\r\n this._raUnits$1 = 0;\r\n this.colorMap = 3;\r\n this.colorMapperName = 'Greys';\r\n this._dynamicColorColumnName$1 = '2efc32e3-b9d9-47ff-8036-8cc344c585bd';\r\n this.dynamicColor = false;\r\n this.normalizeColorMap = false;\r\n this.normalizeColorMapMin = 0;\r\n this.normalizeColorMapMax = 1;\r\n this._markerColumn$1 = -1;\r\n this.colorMapColumn = -1;\r\n this._plotType$1 = 0;\r\n this._markerIndex$1 = 0;\r\n this._showFarSide$1 = false;\r\n this._markerScale$1 = 1;\r\n this._altUnit$1 = 1;\r\n this._cartesianScale$1 = 1;\r\n this._cartesianCustomScale$1 = 1;\r\n this.altColumn = -1;\r\n this.startDateColumn = -1;\r\n this.endDateColumn = -1;\r\n this.sizeColumn = -1;\r\n this._normalizeSizeColumnName$1 = 'dfe78b4c-f972-4796-b04f-68c5efd4ecb0';\r\n this.normalizeSize = false;\r\n this.normalizeSizeClip = false;\r\n this.normalizeSizeMin = 0;\r\n this.normalizeSizeMax = 1;\r\n this.nameColumn = 0;\r\n this._hyperlinkFormat$1 = '';\r\n this._hyperlinkColumn$1 = -1;\r\n this.scaleFactor = 1;\r\n this.pointScaleType = 1;\r\n this.positions = [];\r\n this.bufferIsFlat = false;\r\n this.baseDate = new Date(2010, 0, 1, 12, 0, 0);\r\n this.dirty = true;\r\n this.lastVersion = 0;\r\n Layer.call(this);\r\n }\r\n SpreadSheetLayer._getDatafromFeed$1 = function(url) {\r\n return '';\r\n };\r\n SpreadSheetLayer._executeQuery$1 = function(url) {\r\n return '';\r\n };\r\n SpreadSheetLayer.parseDate = function(date) {\r\n var dt = ss.now();\r\n try {\r\n dt = new Date(date);\r\n }\r\n catch ($e1) {\r\n try {\r\n return SpreadSheetLayer.execlToDateTime(parseFloat(date));\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n return dt;\r\n };\r\n SpreadSheetLayer.execlToDateTime = function(excelDate) {\r\n if (excelDate > 59) {\r\n excelDate -= 1;\r\n }\r\n if (excelDate > 730000) {\r\n excelDate = 730000;\r\n }\r\n var es = new Date(1899, 12, 31);\r\n return new Date(es.getDate() + ss.truncate((excelDate * 24 * 60 * 60 * 1000)));\r\n };\r\n SpreadSheetLayer.get__circleTexture$1 = function() {\r\n if (SpreadSheetLayer._circleTexture$1 == null) {\r\n var url = URLHelpers.singleton.engineAssetUrl('circle.png');\r\n SpreadSheetLayer._circleTexture$1 = Planets.loadPlanetTexture(url);\r\n }\r\n return SpreadSheetLayer._circleTexture$1;\r\n };\r\n var SpreadSheetLayer$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.SpreadSheetLayer';\r\n },\r\n get_header: function() {\r\n return this._table$1.header;\r\n },\r\n canCopyToClipboard: function() {\r\n return true;\r\n },\r\n copyToClipboard: function() {\r\n },\r\n dynamicUpdate: function() {\r\n var data = SpreadSheetLayer._getDatafromFeed$1(this.get_dataSourceUrl());\r\n if (data != null) {\r\n this.updateData(data, false, true, true);\r\n this.guessHeaderAssignments();\r\n return true;\r\n }\r\n return false;\r\n },\r\n updateData: function(data, purgeOld, purgeAll, hasHeader) {\r\n this.loadFromString(ss.safeCast(data, String), true, purgeOld, purgeAll, hasHeader);\r\n this.computeDateDomainRange(-1, -1);\r\n this._dataDirty$1 = true;\r\n this.dirty = true;\r\n return true;\r\n },\r\n loadData: function(tourDoc, filename) {\r\n var $this = this;\r\n\r\n this._table$1 = new Table();\r\n var blob = tourDoc.getFileBlob(filename);\r\n this.getStringFromGzipBlob(blob, function(data) {\r\n $this._table$1.loadFromString(data, false, true, true);\r\n if ($this._table$1.header.indexOf($this._normalizeSizeColumnName$1) > -1) {\r\n $this._table$1.removeColumn($this._normalizeSizeColumnName$1);\r\n }\r\n $this.computeDateDomainRange(-1, -1);\r\n if ($this.get_dynamicData() && $this.get_autoUpdate()) {\r\n $this.dynamicUpdate();\r\n }\r\n $this._dataDirty$1 = true;\r\n $this.dirty = true;\r\n });\r\n },\r\n addFilesToCabinet: function(fc) {\r\n this._fileName$1 = fc.tempDirectory + ss.format('{0}\\\\{1}.txt', fc.get_packageID(), this.id.toString());\r\n var dir = this._fileName$1.substring(0, this._fileName$1.lastIndexOf('\\\\'));\r\n var data = '';\r\n if (this._table_backcompat$1 == null) {\r\n data = this._table$1.save();\r\n }\r\n else {\r\n data = this._table_backcompat$1.save();\r\n }\r\n var blob = new Blob([ data ]);\r\n fc.addFile(this._fileName$1, blob);\r\n Layer.prototype.addFilesToCabinet.call(this, fc);\r\n },\r\n _prepareBackCompatTable$1: function() {\r\n if ((this.sizeColumn === -1 || !this.get_normalizeSize()) && (this.colorMapColumn === -1 || !this.get_dynamicColor())) {\r\n this._lastNormalizeSizeColumnIndex$1 = -1;\r\n this._lastDynamicColorColumnIndex$1 = -1;\r\n return;\r\n }\r\n this._table_backcompat$1 = this._table$1.clone();\r\n if (this.sizeColumn > -1 && this.get_normalizeSize()) {\r\n var normalizedPointSize = [];\r\n var $enum1 = ss.enumerate(this._table_backcompat$1.rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n normalizedPointSize.push(this.normalizePointSize(parseFloat(row[this.sizeColumn])).toString());\r\n }\r\n this._table_backcompat$1.addColumn(this._normalizeSizeColumnName$1, normalizedPointSize);\r\n this._lastNormalizeSizeColumnIndex$1 = this._table_backcompat$1.header.length - 1;\r\n }\r\n else {\r\n this._lastNormalizeSizeColumnIndex$1 = -1;\r\n }\r\n if (this.colorMapColumn > -1 && this.get_dynamicColor()) {\r\n var pointColors = [];\r\n var $enum2 = ss.enumerate(this._table_backcompat$1.rows);\r\n while ($enum2.moveNext()) {\r\n var row = $enum2.current;\r\n pointColors.push(this.get_colorMapper().findClosestColor(this.normalizeColorMapValue(parseFloat(row[this.get_colorMapColumn()]))).toSimpleHex());\r\n }\r\n this._table_backcompat$1.addColumn(this._dynamicColorColumnName$1, pointColors);\r\n this._lastDynamicColorColumnIndex$1 = this._table_backcompat$1.header.length - 1;\r\n }\r\n else {\r\n this._lastDynamicColorColumnIndex$1 = -1;\r\n }\r\n },\r\n guessHeaderAssignments: function() {\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._table$1.header);\r\n while ($enum1.moveNext()) {\r\n var headerName = $enum1.current;\r\n this._guessHeaderAssignment$1(headerName, index++);\r\n }\r\n if (this._table$1.header.length > 0) {\r\n this.nameColumn = 0;\r\n }\r\n },\r\n guessHeaderAssignmentsFromVoTable: function(votable) {\r\n var decColumn = votable.getDecColumn();\r\n if (decColumn != null) {\r\n this.latColumn = decColumn.index;\r\n this.astronomical = true;\r\n }\r\n var raColumn = votable.getRAColumn();\r\n if (raColumn != null) {\r\n this.lngColumn = raColumn.index;\r\n this.astronomical = true;\r\n this.pointScaleType = 4;\r\n }\r\n var magColumn = votable.getMagColumn();\r\n if (magColumn != null) {\r\n this.sizeColumn = magColumn.index;\r\n }\r\n var index = 0;\r\n var $enum1 = ss.enumerate(votable.column);\r\n while ($enum1.moveNext()) {\r\n var column = $enum1.current;\r\n this._guessHeaderAssignment$1(column.name, index++);\r\n }\r\n if (this._table$1.header.length > 0) {\r\n this.nameColumn = 0;\r\n }\r\n },\r\n _guessHeaderAssignment$1: function(name, index) {\r\n name = name.toLowerCase();\r\n if (name.indexOf('lat') > -1 && this.latColumn === -1) {\r\n this.latColumn = index;\r\n }\r\n if ((name.indexOf('lon') > -1 || name.indexOf('lng') > -1) && this.lngColumn === -1) {\r\n this.lngColumn = index;\r\n }\r\n if (name.indexOf('dec') > -1 && this.latColumn === -1) {\r\n this.latColumn = index;\r\n this.astronomical = true;\r\n }\r\n if ((name.indexOf('ra') > -1 || name.indexOf('ascen') > -1) && this.lngColumn === -1) {\r\n this.lngColumn = index;\r\n this.astronomical = true;\r\n this.pointScaleType = 4;\r\n }\r\n if ((name.indexOf('mag') > -1 || name.indexOf('size') > -1) && this.sizeColumn === -1) {\r\n this.sizeColumn = index;\r\n }\r\n if ((name.indexOf('date') > -1 || name.indexOf('time') > -1 || name.indexOf('dt') > -1 || name.indexOf('tm') > -1)) {\r\n if (name.indexOf('end') > -1 && this.endDateColumn === -1) {\r\n this.endDateColumn = index;\r\n }\r\n else if (this.startDateColumn === -1) {\r\n this.startDateColumn = index;\r\n }\r\n }\r\n if ((name.indexOf('altitude') > -1 || name.indexOf('alt') > -1) && this.altColumn === -1) {\r\n this.altColumn = index;\r\n this.set_altType(1);\r\n this.set_altUnit(1);\r\n }\r\n if (name.indexOf('depth') > -1 && this.altColumn === -1) {\r\n this.altColumn = index;\r\n this.set_altType(0);\r\n this.set_altUnit(5);\r\n }\r\n if (ss.startsWith(name, 'x') && this.get_xAxisColumn() === -1) {\r\n this.set_xAxisColumn(index);\r\n }\r\n if (ss.startsWith(name, 'y') && this.get_yAxisColumn() === -1) {\r\n this.set_yAxisColumn(index);\r\n }\r\n if (ss.startsWith(name, 'z') && this.get_zAxisColumn() === -1) {\r\n this.set_zAxisColumn(index);\r\n }\r\n if (name.indexOf('color') > -1 && this.get_colorMapColumn() === -1) {\r\n this.set_colorMapColumn(index);\r\n }\r\n if ((name.indexOf('geometry') > -1 || name.indexOf('geography') > -1) && this.geometryColumn === -1) {\r\n this.geometryColumn = index;\r\n }\r\n },\r\n computeDateDomainRange: function(columnStart, columnEnd) {\r\n if (columnStart === -1) {\r\n columnStart = this.startDateColumn;\r\n }\r\n if (columnEnd === -1) {\r\n columnEnd = this.endDateColumn;\r\n }\r\n if (columnEnd === -1) {\r\n columnEnd = columnStart;\r\n }\r\n this.set_beginRange(new Date('12/31/2100'));\r\n this.set_endRange(new Date('12/31/1890'));\r\n var $enum1 = ss.enumerate(this._table$1.rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n try {\r\n if (columnStart > -1) {\r\n var sucsess = true;\r\n var dateTimeStart = new Date('12/31/2100');\r\n try {\r\n dateTimeStart = new Date(row[columnStart]);\r\n if (dateTimeStart < this.get_beginRange()) {\r\n this.set_beginRange(dateTimeStart);\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n try {\r\n var dateTimeEnd = new Date('12/31/1890');\r\n if (columnEnd > -1) {\r\n dateTimeEnd = new Date(row[columnEnd]);\r\n if (sucsess && dateTimeEnd > this.get_endRange()) {\r\n this.set_endRange(dateTimeEnd);\r\n }\r\n }\r\n }\r\n catch ($e3) {\r\n }\r\n }\r\n }\r\n catch ($e4) {\r\n }\r\n }\r\n },\r\n checkState: function() {\r\n },\r\n getMaxValue: function(column) {\r\n var max = 0;\r\n this._table$1.lock();\r\n var $enum1 = ss.enumerate(this._table$1.rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n try {\r\n if (column > -1) {\r\n var sucsess = true;\r\n try {\r\n var val = parseFloat(row[column]);\r\n if (sucsess && val > max) {\r\n max = val;\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n }\r\n catch ($e3) {\r\n }\r\n }\r\n this._table$1.unlock();\r\n return max;\r\n },\r\n getDomainValues: function(column) {\r\n var domainValues = [];\r\n this._table$1.lock();\r\n var $enum1 = ss.enumerate(this._table$1.rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n try {\r\n if (column > -1) {\r\n if (!(domainValues.indexOf(row[column]) >= 0)) {\r\n domainValues.push(row[column]);\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n domainValues.sort();\r\n this._table$1.unlock();\r\n return domainValues;\r\n },\r\n get_barChartBitmask: function() {\r\n return this._barChartBitmask$1;\r\n },\r\n set_barChartBitmask: function(value) {\r\n this._barChartBitmask$1 = value;\r\n return value;\r\n },\r\n _isPointInFrustum$1: function(position, frustum) {\r\n var centerV4 = new Vector4d(position.x, position.y, position.z, 1);\r\n for (var i = 0; i < 6; i++) {\r\n if (frustum[i].dot(centerV4) < 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n getTableDataInView: function() {\r\n var data = '';\r\n var first = true;\r\n var $enum1 = ss.enumerate(this.get_header());\r\n while ($enum1.moveNext()) {\r\n var col = $enum1.current;\r\n if (!first) {\r\n data += '\\t';\r\n }\r\n else {\r\n first = false;\r\n }\r\n data += col;\r\n }\r\n data += '\\r\\n';\r\n var $enum2 = ss.enumerate(this.get__table().rows);\r\n while ($enum2.moveNext()) {\r\n var row = $enum2.current;\r\n var ra = parseFloat(row[this.get_lngColumn()]);\r\n var dec = parseFloat(row[this.get_latColumn()]);\r\n var position = Coordinates.geoTo3dDouble(dec, ra);\r\n if (!this._isPointInFrustum$1(position, WWTControl.singleton.renderContext.get_frustum())) {\r\n continue;\r\n }\r\n first = true;\r\n var $enum3 = ss.enumerate(row);\r\n while ($enum3.moveNext()) {\r\n var col = $enum3.current;\r\n if (!first) {\r\n data += '\\t';\r\n }\r\n else {\r\n first = false;\r\n }\r\n data += col;\r\n }\r\n data += '\\r\\n';\r\n }\r\n return data;\r\n },\r\n prepVertexBuffer: function(renderContext, opacity) {\r\n this._table$1.lock();\r\n if (this.lineList != null) {\r\n this.lineList.clear();\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.clear();\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.clear();\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.clear();\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.clear();\r\n }\r\n if (this.lineList == null) {\r\n this.lineList = new LineList();\r\n }\r\n if (this.pointList == null) {\r\n this.pointList = new PointList(renderContext);\r\n }\r\n this.lineList.timeSeries = this.timeSeries;\r\n if (this.lineList2d == null) {\r\n this.lineList2d = new LineList();\r\n this.lineList2d.set_depthBuffered(false);\r\n }\r\n this.lineList.timeSeries = this.timeSeries;\r\n if (this.triangleList == null) {\r\n this.triangleList = new TriangleList();\r\n }\r\n if (this.triangleList2d == null) {\r\n this.triangleList2d = new TriangleList();\r\n this.triangleList2d.depthBuffered = false;\r\n }\r\n this.positions.length = 0;\r\n var currentIndex = 0;\r\n var colorLocal = this.get_color();\r\n var ecliptic = Coordinates.meanObliquityOfEcliptic(SpaceTimeController.get_jNow()) / 180 * Math.PI;\r\n var selectDomain = {};\r\n var mr = LayerManager.get_allMaps()[this.get_referenceFrame()].frame.meanRadius;\r\n if (!!mr) {\r\n this._meanRadius$1 = mr;\r\n }\r\n var position = new Vector3d();\r\n var pointSize = 0.0002;\r\n var pointColor = Colors.get_white();\r\n var pointStartTime = 0;\r\n var pointEndTime = 0;\r\n var $enum1 = ss.enumerate(this._table$1.rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n try {\r\n if (this.geometryColumn > -1 || (!this.get_coordinatesType() && (this.lngColumn > -1 && this.latColumn > -1)) || ((this.get_coordinatesType() === 1) && (this.get_xAxisColumn() > -1 && this.get_yAxisColumn() > -1))) {\r\n var Xcoord = 0;\r\n var Ycoord = 0;\r\n var Zcoord = 0;\r\n var alt = 1;\r\n var altitude = 0;\r\n var distParces = 0;\r\n var factor = this.getScaleFactor(this.get_altUnit(), 1);\r\n if (this.altColumn === -1 || this.get_altType() === 3 || this.bufferIsFlat) {\r\n alt = 1;\r\n if ((this.astronomical & !this.bufferIsFlat) === 1) {\r\n alt = 63239.6717 * 100;\r\n }\r\n }\r\n else {\r\n if (!this.get_altType()) {\r\n factor = -factor;\r\n }\r\n alt = 0;\r\n try {\r\n alt = parseFloat(row[this.altColumn]);\r\n }\r\n catch ($e2) {\r\n }\r\n if (this.astronomical) {\r\n factor = factor / (1000 * 149598000);\r\n distParces = (alt * factor) / 206264.806;\r\n altitude = (factor * alt);\r\n alt = (factor * alt);\r\n }\r\n else if (this.get_altType() === 2) {\r\n altitude = (factor * alt);\r\n alt = (factor * alt / this._meanRadius$1);\r\n }\r\n else {\r\n altitude = (factor * alt);\r\n alt = 1 + (factor * alt / this._meanRadius$1);\r\n }\r\n }\r\n if (!this.get_coordinatesType() && this.lngColumn > -1 && this.latColumn > -1) {\r\n Xcoord = parseFloat(row[this.lngColumn]);\r\n Ycoord = parseFloat(row[this.latColumn]);\r\n if (this.astronomical) {\r\n if (!this.get_raUnits()) {\r\n Xcoord *= 15;\r\n }\r\n if (this.bufferIsFlat) {\r\n }\r\n }\r\n else {\r\n Xcoord += 180;\r\n }\r\n var pos = Coordinates.geoTo3dRad(Ycoord, Xcoord, alt);\r\n if (this.astronomical && !this.bufferIsFlat) {\r\n pos.rotateX(ecliptic);\r\n }\r\n position = pos;\r\n this.positions.push(position);\r\n }\r\n else if (this.get_coordinatesType() === 1) {\r\n var xyzScale = this.getScaleFactor(this.get_cartesianScale(), this.get_cartesianCustomScale());\r\n if (this.astronomical) {\r\n xyzScale /= (1000 * 149598000);\r\n }\r\n else {\r\n xyzScale /= this._meanRadius$1;\r\n }\r\n if (this.get_zAxisColumn() > -1) {\r\n Zcoord = parseFloat(row[this.get_zAxisColumn()]);\r\n }\r\n Xcoord = parseFloat(row[this.get_xAxisColumn()]);\r\n Ycoord = parseFloat(row[this.get_yAxisColumn()]);\r\n if (this.get_xAxisReverse()) {\r\n Xcoord = -Xcoord;\r\n }\r\n if (this.get_yAxisReverse()) {\r\n Ycoord = -Ycoord;\r\n }\r\n if (this.get_zAxisReverse()) {\r\n Zcoord = -Zcoord;\r\n }\r\n position = Vector3d.create((Xcoord * xyzScale), (Zcoord * xyzScale), (Ycoord * xyzScale));\r\n this.positions.push(position);\r\n }\r\n switch (this.get_colorMap()) {\r\n case 0:\r\n pointColor = colorLocal;\r\n break;\r\n case 3:\r\n if (this.get_colorMapColumn() > -1) {\r\n if (this.get_dynamicColor()) {\r\n pointColor = this.get_colorMapper().findClosestColor(this.normalizeColorMapValue(parseFloat(row[this.get_colorMapColumn()])));\r\n }\r\n else {\r\n pointColor = this._parseColor$1(row[this.get_colorMapColumn()], colorLocal);\r\n }\r\n }\r\n else {\r\n pointColor = colorLocal;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n if (pointColor == null) {\r\n pointColor = Colors.get_transparent();\r\n }\r\n if (this.sizeColumn > -1) {\r\n switch (this.pointScaleType) {\r\n case 0:\r\n pointSize = parseFloat(row[this.sizeColumn]);\r\n pointSize = this.normalizePointSize(pointSize);\r\n break;\r\n case 2:\r\n pointSize = parseFloat(row[this.sizeColumn]);\r\n pointSize = Math.log(pointSize);\r\n break;\r\n case 1:\r\n try {\r\n pointSize = parseFloat(row[this.sizeColumn]);\r\n pointSize = this.normalizePointSize(pointSize);\r\n pointSize = Math.pow(2, pointSize);\r\n }\r\n catch ($e3) {\r\n pointSize = 0;\r\n }\r\n break;\r\n case 4:\r\n var size = 0;\r\n try {\r\n size = parseFloat(row[this.sizeColumn]);\r\n if (!this.bufferIsFlat) {\r\n size = size - 5 * (Util.logN(distParces, 10) - 1);\r\n pointSize = (120000000 / Math.pow(1.6, size));\r\n }\r\n else {\r\n pointSize = (40 / Math.pow(1.6, size));\r\n }\r\n }\r\n catch ($e4) {\r\n pointSize = 0;\r\n }\r\n break;\r\n case 3:\r\n pointSize = 1;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n else {\r\n pointSize = 0.2;\r\n }\r\n if (this.get_plotType() === 1) {\r\n pointSize = 1;\r\n }\r\n if ((this.astronomical & !this.bufferIsFlat) === 1) {\r\n }\r\n if (this.startDateColumn > -1) {\r\n var dateTime = new Date(row[this.startDateColumn]);\r\n pointStartTime = (SpaceTimeController.utcToJulian(dateTime) - SpaceTimeController.utcToJulian(this.baseDate));\r\n if (this.endDateColumn > -1) {\r\n dateTime = new Date(row[this.endDateColumn]);\r\n pointEndTime = (SpaceTimeController.utcToJulian(dateTime) - SpaceTimeController.utcToJulian(this.baseDate));\r\n }\r\n else {\r\n pointEndTime = pointStartTime;\r\n }\r\n }\r\n this.pointList.addPoint(position, pointColor, new Dates(pointStartTime, pointEndTime), pointSize);\r\n if (this.geometryColumn > -1) {\r\n this._parseGeometry$1(row[this.geometryColumn], pointColor, pointColor, altitude, new Dates(pointStartTime, pointEndTime));\r\n }\r\n currentIndex++;\r\n }\r\n }\r\n catch ($e5) {\r\n }\r\n this.lines = false;\r\n }\r\n this._table$1.unlock();\r\n this._dataDirty$1 = false;\r\n this.dirty = false;\r\n return false;\r\n },\r\n _parseGeometry$1: function(gs, lineColor, polyColor, alt, date) {\r\n gs = ss.trim(gs).toLowerCase();\r\n var index = gs.indexOf('(');\r\n if (index < 0) {\r\n return;\r\n }\r\n if (!ss.endsWith(gs, ')')) {\r\n return;\r\n }\r\n var commandPart = ss.trim(gs.substring(0, index));\r\n var parens = gs.substr(index);\r\n var parts = commandPart.split(' ');\r\n var command = null;\r\n var mods = null;\r\n if (parts.length > 0) {\r\n var $enum1 = ss.enumerate(parts);\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (ss.emptyString(command)) {\r\n command = item;\r\n }\r\n else if (ss.emptyString(mods)) {\r\n mods = item;\r\n }\r\n }\r\n }\r\n switch (command) {\r\n case 'multipolygon':\r\n case 'polygon':\r\n this._parsePolygon$1(parens, mods, lineColor, polyColor, alt, date);\r\n break;\r\n case 'multilinestring':\r\n this._parseLineString$1(parens, mods, lineColor, alt, false, date);\r\n break;\r\n case 'linestring':\r\n this._parseLineString$1(parens, mods, lineColor, alt, true, date);\r\n break;\r\n case 'geometrycollection':\r\n parens = parens.substring(1, parens.length - 2);\r\n var shapes = UiTools.splitString(parens, ',');\r\n var $enum2 = ss.enumerate(shapes);\r\n while ($enum2.moveNext()) {\r\n var shape = $enum2.current;\r\n this._parseGeometry$1(shape, lineColor, polyColor, alt, date);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n _parsePolygon$1: function(parens, mods, lineColor, polyColor, alt, date) {\r\n if (!ss.startsWith(parens, '(') && ss.endsWith(parens, ')')) {\r\n return;\r\n }\r\n parens = parens.substring(1, parens.length - 2);\r\n var shapes = UiTools.splitString(parens, ',');\r\n var $enum1 = ss.enumerate(shapes);\r\n while ($enum1.moveNext()) {\r\n var shape = $enum1.current;\r\n var lineList = new KmlLineList();\r\n lineList.astronomical = this.astronomical;\r\n lineList.meanRadius = this._meanRadius$1;\r\n lineList.parseWkt(shape, mods, alt, date);\r\n if (!alt) {\r\n this._addPolygonFlat$1(false, lineList, 1, polyColor, lineColor, true, true, date);\r\n }\r\n else {\r\n this._addPolygon$1(false, lineList, 1, polyColor, lineColor, true, true, date);\r\n }\r\n }\r\n },\r\n _parseLineString$1: function(parens, mods, lineColor, alt, single, date) {\r\n if (!ss.startsWith(parens, '(') && ss.endsWith(parens, ')')) {\r\n return;\r\n }\r\n if (!single) {\r\n parens = parens.substring(1, parens.length - 2);\r\n }\r\n var shapes = UiTools.splitString(parens, ',');\r\n var $enum1 = ss.enumerate(shapes);\r\n while ($enum1.moveNext()) {\r\n var shape = $enum1.current;\r\n var lineList = new KmlLineList();\r\n lineList.astronomical = this.astronomical;\r\n lineList.meanRadius = this._meanRadius$1;\r\n lineList.parseWkt(shape, mods, alt, date);\r\n this._addPolygon$1(false, lineList, 1, Colors.get_white(), lineColor, false, false, date);\r\n }\r\n },\r\n _splitShapes$1: function(shapes) {\r\n var shapeList = [];\r\n var nesting = 0;\r\n var current = 0;\r\n while (current < shapes.length) {\r\n if (shapes.substr(current, 1) === '(') {\r\n nesting++;\r\n }\r\n }\r\n return shapeList;\r\n },\r\n _addPolygon$1: function(sky, geo, lineWidth, polyColor, lineColor, extrude, fill, date) {\r\n var vertexList = [];\r\n var vertexListGround = [];\r\n for (var i = 0; i < geo.pointList.length; i++) {\r\n vertexList.push(Coordinates.geoTo3dRad(geo.pointList[i].lat, geo.pointList[i].lng, 1 + (geo.pointList[i].alt / this._meanRadius$1)));\r\n vertexListGround.push(Coordinates.geoTo3dRad(geo.pointList[i].lat, geo.pointList[i].lng, 1));\r\n }\r\n for (var i = 0; i < (geo.pointList.length - 1); i++) {\r\n if (sky) {\r\n }\r\n else {\r\n if (extrude) {\r\n this.triangleList.addQuad(vertexList[i], vertexList[i + 1], vertexListGround[i], vertexListGround[i + 1], polyColor, date);\r\n }\r\n if (lineWidth > 0) {\r\n if (extrude) {\r\n this.lineList.addLine(vertexList[i], vertexList[i + 1], lineColor, date);\r\n }\r\n else {\r\n this.lineList2d.addLine(vertexList[i], vertexList[i + 1], lineColor, date);\r\n }\r\n if (extrude) {\r\n this.lineList.addLine(vertexListGround[i], vertexListGround[i + 1], lineColor, date);\r\n this.lineList.addLine(vertexList[i], vertexListGround[i], lineColor, date);\r\n this.lineList.addLine(vertexList[i + 1], vertexListGround[i + 1], lineColor, date);\r\n }\r\n }\r\n }\r\n }\r\n if (fill) {\r\n var indexes = Tessellator.tesselateSimplePoly(vertexList);\r\n for (var i = 0; i < indexes.length; i += 3) {\r\n this.triangleList.addTriangle(vertexList[indexes[i]], vertexList[indexes[i + 1]], vertexList[indexes[i + 2]], polyColor, date);\r\n }\r\n }\r\n },\r\n _addPolygonFlat$1: function(sky, geo, lineWidth, polyColor, lineColor, extrude, fill, date) {\r\n var vertexList = [];\r\n for (var i = 0; i < geo.pointList.length; i++) {\r\n vertexList.push(Coordinates.geoTo3dRad(geo.pointList[i].lat, geo.pointList[i].lng, 1 + (geo.pointList[i].alt / this._meanRadius$1)));\r\n }\r\n for (var i = 0; i < (geo.pointList.length - 1); i++) {\r\n if (sky) {\r\n }\r\n else {\r\n if (lineWidth > 0) {\r\n this.lineList2d.addLine(vertexList[i], vertexList[i + 1], lineColor, date);\r\n }\r\n }\r\n }\r\n if (fill) {\r\n var indexes = Tessellator.tesselateSimplePoly(vertexList);\r\n for (var i = 0; i < indexes.length; i += 3) {\r\n this.triangleList2d.addSubdividedTriangles(vertexList[indexes[i]], vertexList[indexes[i + 1]], vertexList[indexes[i + 2]], polyColor, date, 2);\r\n }\r\n }\r\n },\r\n _parseColor$1: function(colorText, defaultColor) {\r\n return Color.load(colorText);\r\n },\r\n getScaleFactor: function(AltUnit, custom) {\r\n var factor = 1;\r\n switch (AltUnit) {\r\n case 1:\r\n factor = 1;\r\n break;\r\n case 2:\r\n factor = 1 * 0.3048;\r\n break;\r\n case 3:\r\n factor = (1 / 12) * 0.3048;\r\n break;\r\n case 4:\r\n factor = 5280 * 0.3048;\r\n break;\r\n case 5:\r\n factor = 1000;\r\n break;\r\n case 6:\r\n factor = 1000 * 149598000;\r\n break;\r\n case 7:\r\n factor = 1000 * 149598000 * 63239.6717;\r\n break;\r\n case 8:\r\n factor = 1000 * 149598000 * 206264.806;\r\n break;\r\n case 9:\r\n factor = 1000 * 149598000 * 206264.806 * 1000000;\r\n break;\r\n case 10:\r\n factor = custom;\r\n break;\r\n default:\r\n break;\r\n }\r\n return factor;\r\n },\r\n get__table: function() {\r\n return this._table$1;\r\n },\r\n set__table: function(value) {\r\n this._table$1 = value;\r\n return value;\r\n },\r\n useHeadersFromVoTable: function(voTable) {\r\n var $enum1 = ss.enumerate(voTable.column);\r\n while ($enum1.moveNext()) {\r\n var column = $enum1.current;\r\n this.get_header().push(column.name);\r\n }\r\n this.guessHeaderAssignmentsFromVoTable(voTable);\r\n if (voTable.getRAColumn() != null && voTable.getRAColumn().unit.toLowerCase() === 'deg') {\r\n this.set_raUnits(1);\r\n }\r\n },\r\n loadFromString: function(data, isUpdate, purgeOld, purgeAll, hasHeader) {\r\n if (!isUpdate) {\r\n this._table$1 = new Table();\r\n }\r\n this._table$1.lock();\r\n this._table$1.loadFromString(data, isUpdate, purgeAll, hasHeader);\r\n if (!isUpdate) {\r\n this.guessHeaderAssignments();\r\n if (this.astronomical && this.lngColumn > -1) {\r\n var max = this.getMaxValue(this.lngColumn);\r\n if (max > 24) {\r\n this.set_raUnits(1);\r\n }\r\n }\r\n }\r\n if (purgeOld) {\r\n this.purgeByTime();\r\n }\r\n this._table$1.unlock();\r\n },\r\n purgeByTime: function() {\r\n if (this.startDateColumn < 0) {\r\n return;\r\n }\r\n var columnToUse = this.startDateColumn;\r\n if (this.endDateColumn > -1) {\r\n columnToUse = this.endDateColumn;\r\n }\r\n var threasholdTime = SpaceTimeController.get_now();\r\n var ts = ss.truncate(this.decay) * 24 * 60 * 60 * 1000;\r\n threasholdTime = new Date(threasholdTime.getDate() - ts);\r\n var count = this._table$1.rows.length;\r\n for (var i = 0; i < count; i++) {\r\n try {\r\n var row = this._table$1.rows[i];\r\n var colDate = new Date(row[columnToUse]);\r\n if (colDate < threasholdTime) {\r\n this._table$1.rows.splice(i, 1);\r\n count--;\r\n i--;\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n }\r\n },\r\n cleanUp: function() {\r\n this.cleanUpBase();\r\n this._table$1.lock();\r\n Layer.prototype.cleanUp.call(this);\r\n this._table$1.unlock();\r\n this.dirty = true;\r\n },\r\n writeLayerProperties: function(xmlWriter) {\r\n xmlWriter._writeAttributeString('TimeSeries', this.get_timeSeries().toString());\r\n xmlWriter._writeAttributeString('BeginRange', Util.xmlDate(this.get_beginRange()));\r\n xmlWriter._writeAttributeString('EndRange', Util.xmlDate(this.get_endRange()));\r\n xmlWriter._writeAttributeString('Decay', this.get_decay().toString());\r\n xmlWriter._writeAttributeString('CoordinatesType', Enums.toXml('CoordinatesTypes', this.get_coordinatesType()));\r\n xmlWriter._writeAttributeString('LatColumn', this.get_latColumn().toString());\r\n xmlWriter._writeAttributeString('LngColumn', this.get_lngColumn().toString());\r\n xmlWriter._writeAttributeString('GeometryColumn', this.get_geometryColumn().toString());\r\n xmlWriter._writeAttributeString('AltType', Enums.toXml('AltTypes', this.get_altType()));\r\n xmlWriter._writeAttributeString('MarkerMix', Enums.toXml('MarkerMixes', this.get_markerMix()));\r\n xmlWriter._writeAttributeString('ColorMap', Enums.toXml('ColorMaps', this.get_colorMap()));\r\n xmlWriter._writeAttributeString('MarkerColumn', this.get_markerColumn().toString());\r\n xmlWriter._writeAttributeString('PlotType', Enums.toXml('PlotTypes', this.get_plotType()));\r\n xmlWriter._writeAttributeString('MarkerIndex', this.get_markerIndex().toString());\r\n xmlWriter._writeAttributeString('MarkerScale', Enums.toXml('MarkerScales', this.get_markerScale()));\r\n xmlWriter._writeAttributeString('AltUnit', Enums.toXml('AltUnits', this.get_altUnit()));\r\n xmlWriter._writeAttributeString('AltColumn', this.get_altColumn().toString());\r\n xmlWriter._writeAttributeString('StartDateColumn', this.get_startDateColumn().toString());\r\n xmlWriter._writeAttributeString('EndDateColumn', this.get_endDateColumn().toString());\r\n this._prepareBackCompatTable$1();\r\n if (this._lastNormalizeSizeColumnIndex$1 > -1) {\r\n xmlWriter._writeAttributeString('SizeColumn', this._lastNormalizeSizeColumnIndex$1);\r\n xmlWriter._writeAttributeString('NormalizeSizeColumn', this.sizeColumn.toString());\r\n }\r\n else {\r\n xmlWriter._writeAttributeString('SizeColumn', this.get_sizeColumn().toString());\r\n }\r\n xmlWriter._writeAttributeString('NormalizeSize', this.get_normalizeSize().toString());\r\n xmlWriter._writeAttributeString('NormalizeSizeClip', this.get_normalizeSizeClip().toString());\r\n xmlWriter._writeAttributeString('NormalizeSizeMin', this.get_normalizeSizeMin().toString());\r\n xmlWriter._writeAttributeString('NormalizeSizeMax', this.get_normalizeSizeMax().toString());\r\n if (this._lastDynamicColorColumnIndex$1 > -1) {\r\n xmlWriter._writeAttributeString('ColorMapColumn', this._lastDynamicColorColumnIndex$1);\r\n xmlWriter._writeAttributeString('DynamicColorColumn', this.get_colorMapColumn().toString());\r\n }\r\n else {\r\n xmlWriter._writeAttributeString('ColorMapColumn', this.get_colorMapColumn().toString());\r\n }\r\n xmlWriter._writeAttributeString('DynamicColor', this.get_dynamicColor().toString());\r\n xmlWriter._writeAttributeString('ColorMapperName', this.get_colorMapperName());\r\n xmlWriter._writeAttributeString('NormalizeColorMap', this.get_normalizeColorMap().toString());\r\n xmlWriter._writeAttributeString('NormalizeColorMapMin', this.get_normalizeColorMapMin().toString());\r\n xmlWriter._writeAttributeString('NormalizeColorMapMax', this.get_normalizeColorMapMax().toString());\r\n xmlWriter._writeAttributeString('HyperlinkFormat', this.get_hyperlinkFormat());\r\n xmlWriter._writeAttributeString('HyperlinkColumn', this.get_hyperlinkColumn().toString());\r\n xmlWriter._writeAttributeString('ScaleFactor', this.get_scaleFactor().toString());\r\n xmlWriter._writeAttributeString('PointScaleType', Enums.toXml('PointScaleTypes', this.get_pointScaleType()));\r\n xmlWriter._writeAttributeString('ShowFarSide', this.get_showFarSide().toString());\r\n xmlWriter._writeAttributeString('RaUnits', Enums.toXml('RAUnits', this.get_raUnits()));\r\n xmlWriter._writeAttributeString('HoverTextColumn', this.get_nameColumn().toString());\r\n xmlWriter._writeAttributeString('XAxisColumn', this.get_xAxisColumn().toString());\r\n xmlWriter._writeAttributeString('XAxisReverse', this.get_xAxisReverse().toString());\r\n xmlWriter._writeAttributeString('YAxisColumn', this.get_yAxisColumn().toString());\r\n xmlWriter._writeAttributeString('YAxisReverse', this.get_yAxisReverse().toString());\r\n xmlWriter._writeAttributeString('ZAxisColumn', this.get_zAxisColumn().toString());\r\n xmlWriter._writeAttributeString('ZAxisReverse', this.get_zAxisReverse().toString());\r\n xmlWriter._writeAttributeString('CartesianScale', Enums.toXml('AltUnits', this.get_cartesianScale()));\r\n xmlWriter._writeAttributeString('CartesianCustomScale', this.get_cartesianCustomScale().toString());\r\n xmlWriter._writeAttributeString('DynamicData', this.get_dynamicData().toString());\r\n xmlWriter._writeAttributeString('AutoUpdate', this.get_autoUpdate().toString());\r\n xmlWriter._writeAttributeString('DataSourceUrl', this.get_dataSourceUrl());\r\n },\r\n get_dynamicData: function() {\r\n return this._dynamicData$1;\r\n },\r\n set_dynamicData: function(value) {\r\n this._dynamicData$1 = value;\r\n return value;\r\n },\r\n get_autoUpdate: function() {\r\n return this._autoUpdate$1;\r\n },\r\n set_autoUpdate: function(value) {\r\n this._autoUpdate$1 = value;\r\n return value;\r\n },\r\n get_dataSourceUrl: function() {\r\n return this._dataSourceUrl$1;\r\n },\r\n set_dataSourceUrl: function(value) {\r\n this._dataSourceUrl$1 = value;\r\n return value;\r\n },\r\n get_timeSeries: function() {\r\n return this.timeSeries;\r\n },\r\n set_timeSeries: function(value) {\r\n if (this.timeSeries !== value) {\r\n this.version++;\r\n this.timeSeries = value;\r\n }\r\n return value;\r\n },\r\n get_beginRange: function() {\r\n return this._beginRange$1;\r\n },\r\n set_beginRange: function(value) {\r\n if (!ss.compareDates(this._beginRange$1, value)) {\r\n this.version++;\r\n this._beginRange$1 = value;\r\n }\r\n return value;\r\n },\r\n get_endRange: function() {\r\n return this._endRange$1;\r\n },\r\n set_endRange: function(value) {\r\n if (!ss.compareDates(this._endRange$1, value)) {\r\n this.version++;\r\n this._endRange$1 = value;\r\n }\r\n return value;\r\n },\r\n initializeFromXml: function(node) {\r\n this.set_timeSeries(ss.boolean(node.attributes.getNamedItem('TimeSeries').nodeValue));\r\n this.set_beginRange(new Date(node.attributes.getNamedItem('BeginRange').nodeValue));\r\n this.set_endRange(new Date(node.attributes.getNamedItem('EndRange').nodeValue));\r\n this.set_decay(parseFloat(node.attributes.getNamedItem('Decay').nodeValue));\r\n this.set_coordinatesType(Enums.parse('CoordinatesTypes', node.attributes.getNamedItem('CoordinatesType').nodeValue));\r\n if (this.get_coordinatesType() < 0) {\r\n this.set_coordinatesType(0);\r\n }\r\n this.set_latColumn(parseInt(node.attributes.getNamedItem('LatColumn').nodeValue));\r\n this.set_lngColumn(parseInt(node.attributes.getNamedItem('LngColumn').nodeValue));\r\n if (node.attributes.getNamedItem('GeometryColumn') != null) {\r\n this.set_geometryColumn(parseInt(node.attributes.getNamedItem('GeometryColumn').nodeValue));\r\n }\r\n this.set_altType(Enums.parse('AltTypes', node.attributes.getNamedItem('AltType').nodeValue));\r\n this.set_markerMix(0);\r\n this.set_colorMap(Enums.parse('ColorMaps', node.attributes.getNamedItem('ColorMap').nodeValue));\r\n this.set_markerColumn(parseInt(node.attributes.getNamedItem('MarkerColumn').nodeValue));\r\n this.set_colorMapColumn(parseInt(node.attributes.getNamedItem('ColorMapColumn').nodeValue));\r\n this.set_plotType(Enums.parse('PlotTypes', node.attributes.getNamedItem('PlotType').nodeValue));\r\n this.set_markerIndex(parseInt(node.attributes.getNamedItem('MarkerIndex').nodeValue));\r\n this.set_markerScale(Enums.parse('MarkerScales', node.attributes.getNamedItem('MarkerScale').nodeValue));\r\n this.set_altUnit(Enums.parse('AltUnits', node.attributes.getNamedItem('AltUnit').nodeValue));\r\n this.set_altColumn(parseInt(node.attributes.getNamedItem('AltColumn').nodeValue));\r\n this.set_startDateColumn(parseInt(node.attributes.getNamedItem('StartDateColumn').nodeValue));\r\n this.set_endDateColumn(parseInt(node.attributes.getNamedItem('EndDateColumn').nodeValue));\r\n if (node.attributes.getNamedItem('NormalizeSizeColumn') != null) {\r\n this.set_sizeColumn(parseInt(node.attributes.getNamedItem('NormalizeSizeColumn').nodeValue));\r\n }\r\n else {\r\n this.set_sizeColumn(parseInt(node.attributes.getNamedItem('SizeColumn').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('NormalizeSize') != null) {\r\n this.set_normalizeSize(ss.boolean(node.attributes.getNamedItem('NormalizeSize').nodeValue));\r\n this.set_normalizeSizeClip(ss.boolean(node.attributes.getNamedItem('NormalizeSizeClip').nodeValue));\r\n this.set_normalizeSizeMin(parseFloat(node.attributes.getNamedItem('NormalizeSizeMin').nodeValue));\r\n this.set_normalizeSizeMax(parseFloat(node.attributes.getNamedItem('NormalizeSizeMax').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('DynamicColorColumn') != null) {\r\n this.set_colorMapColumn(parseInt(node.attributes.getNamedItem('DynamicColorColumn').nodeValue));\r\n }\r\n else {\r\n this.set_colorMapColumn(parseInt(node.attributes.getNamedItem('ColorMapColumn').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('DynamicColor') != null) {\r\n this.set_dynamicColor(ss.boolean(node.attributes.getNamedItem('DynamicColor').nodeValue));\r\n this.set_colorMapperName(node.attributes.getNamedItem('ColorMapperName').nodeValue);\r\n this.set_normalizeColorMap(ss.boolean(node.attributes.getNamedItem('NormalizeColorMap').nodeValue));\r\n this.set_normalizeColorMapMin(parseFloat(node.attributes.getNamedItem('NormalizeColorMapMin').nodeValue));\r\n this.set_normalizeColorMapMax(parseFloat(node.attributes.getNamedItem('NormalizeColorMapMax').nodeValue));\r\n }\r\n this.set_hyperlinkFormat(node.attributes.getNamedItem('HyperlinkFormat').nodeValue);\r\n this.set_hyperlinkColumn(parseInt(node.attributes.getNamedItem('HyperlinkColumn').nodeValue));\r\n this.set_scaleFactor(parseFloat(node.attributes.getNamedItem('ScaleFactor').nodeValue));\r\n this.set_pointScaleType(Enums.parse('PointScaleTypes', node.attributes.getNamedItem('PointScaleType').nodeValue));\r\n if (node.attributes.getNamedItem('ShowFarSide') != null) {\r\n this.set_showFarSide(ss.boolean(node.attributes.getNamedItem('ShowFarSide').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('RaUnits') != null) {\r\n this.set_raUnits(Enums.parse('RAUnits', node.attributes.getNamedItem('RaUnits').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('HoverTextColumn') != null) {\r\n this.set_nameColumn(parseInt(node.attributes.getNamedItem('HoverTextColumn').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('XAxisColumn') != null) {\r\n this.set_xAxisColumn(parseInt(node.attributes.getNamedItem('XAxisColumn').nodeValue));\r\n this.set_xAxisReverse(ss.boolean(node.attributes.getNamedItem('XAxisReverse').nodeValue));\r\n this.set_yAxisColumn(parseInt(node.attributes.getNamedItem('YAxisColumn').nodeValue));\r\n this.set_yAxisReverse(ss.boolean(node.attributes.getNamedItem('YAxisReverse').nodeValue));\r\n this.set_zAxisColumn(parseInt(node.attributes.getNamedItem('ZAxisColumn').nodeValue));\r\n this.set_zAxisReverse(ss.boolean(node.attributes.getNamedItem('ZAxisReverse').nodeValue));\r\n this.set_cartesianScale(Enums.parse('AltUnits', node.attributes.getNamedItem('CartesianScale').nodeValue));\r\n this.set_cartesianCustomScale(parseFloat(node.attributes.getNamedItem('CartesianCustomScale').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('DynamicData') != null) {\r\n this.set_dynamicData(ss.boolean(node.attributes.getNamedItem('DynamicData').nodeValue));\r\n this.set_autoUpdate(ss.boolean(node.attributes.getNamedItem('AutoUpdate').nodeValue));\r\n this.set_dataSourceUrl(node.attributes.getNamedItem('DataSourceUrl').nodeValue);\r\n }\r\n },\r\n get_decay: function() {\r\n return this.decay;\r\n },\r\n set_decay: function(value) {\r\n if (this.decay !== value) {\r\n this.version++;\r\n this.decay = value;\r\n }\r\n return value;\r\n },\r\n get_coordinatesType: function() {\r\n return this._coordinatesType$1;\r\n },\r\n set_coordinatesType: function(value) {\r\n if (this._coordinatesType$1 !== value) {\r\n this.version++;\r\n this._coordinatesType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_latColumn: function() {\r\n return this.latColumn;\r\n },\r\n set_latColumn: function(value) {\r\n if (this.latColumn !== value) {\r\n this.version++;\r\n this.latColumn = value;\r\n }\r\n return value;\r\n },\r\n get_lngColumn: function() {\r\n return this.lngColumn;\r\n },\r\n set_lngColumn: function(value) {\r\n if (this.lngColumn !== value) {\r\n this.version++;\r\n this.lngColumn = value;\r\n }\r\n return value;\r\n },\r\n get_geometryColumn: function() {\r\n return this.geometryColumn;\r\n },\r\n set_geometryColumn: function(value) {\r\n if (this.geometryColumn !== value) {\r\n this.version++;\r\n this.geometryColumn = value;\r\n }\r\n return value;\r\n },\r\n get_xAxisColumn: function() {\r\n return this._xAxisColumn$1;\r\n },\r\n set_xAxisColumn: function(value) {\r\n if (this._xAxisColumn$1 !== value) {\r\n this.version++;\r\n this._xAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_yAxisColumn: function() {\r\n return this._yAxisColumn$1;\r\n },\r\n set_yAxisColumn: function(value) {\r\n if (this._yAxisColumn$1 !== value) {\r\n this.version++;\r\n this._yAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_zAxisColumn: function() {\r\n return this._zAxisColumn$1;\r\n },\r\n set_zAxisColumn: function(value) {\r\n if (this._zAxisColumn$1 !== value) {\r\n this.version++;\r\n this._zAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_xAxisReverse: function() {\r\n return this._xAxisReverse$1;\r\n },\r\n set_xAxisReverse: function(value) {\r\n if (this._xAxisReverse$1 !== value) {\r\n this.version++;\r\n this._xAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_yAxisReverse: function() {\r\n return this._yAxisReverse$1;\r\n },\r\n set_yAxisReverse: function(value) {\r\n if (this._yAxisReverse$1 !== value) {\r\n this.version++;\r\n this._yAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_zAxisReverse: function() {\r\n return this._zAxisReverse$1;\r\n },\r\n set_zAxisReverse: function(value) {\r\n if (this._zAxisReverse$1 !== value) {\r\n this.version++;\r\n this._zAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altType: function() {\r\n return this._altType$1;\r\n },\r\n set_altType: function(value) {\r\n if (this._altType$1 !== value) {\r\n this.version++;\r\n this._altType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerMix: function() {\r\n return this._markerMix$1;\r\n },\r\n set_markerMix: function(value) {\r\n if (this._markerMix$1 !== value) {\r\n this.version++;\r\n this._markerMix$1 = value;\r\n }\r\n return value;\r\n },\r\n get_raUnits: function() {\r\n return this._raUnits$1;\r\n },\r\n set_raUnits: function(value) {\r\n if (this._raUnits$1 !== value) {\r\n this.version++;\r\n this._raUnits$1 = value;\r\n }\r\n return value;\r\n },\r\n get_colorMap: function() {\r\n return this.colorMap;\r\n },\r\n set_colorMap: function(value) {\r\n if (this.colorMap !== value) {\r\n this.version++;\r\n this.colorMap = value;\r\n }\r\n return value;\r\n },\r\n get_colorMapperName: function() {\r\n return this.colorMapperName;\r\n },\r\n set_colorMapperName: function(value) {\r\n if (ColorMapContainer.fromNamedColormap(value) == null) {\r\n throw new Error('Invalid colormap name');\r\n }\r\n this.version++;\r\n this.colorMapperName = value;\r\n return value;\r\n },\r\n get_colorMapper: function() {\r\n return ColorMapContainer.fromNamedColormap(this.colorMapperName);\r\n },\r\n get_dynamicColor: function() {\r\n return this.dynamicColor;\r\n },\r\n set_dynamicColor: function(value) {\r\n this.version++;\r\n this.dynamicColor = value;\r\n return value;\r\n },\r\n get_normalizeColorMap: function() {\r\n return this.normalizeColorMap;\r\n },\r\n set_normalizeColorMap: function(value) {\r\n this.version++;\r\n this.normalizeColorMap = value;\r\n return value;\r\n },\r\n get_normalizeColorMapMin: function() {\r\n return this.normalizeColorMapMin;\r\n },\r\n set_normalizeColorMapMin: function(value) {\r\n this.version++;\r\n this.normalizeColorMapMin = value;\r\n return value;\r\n },\r\n get_normalizeColorMapMax: function() {\r\n return this.normalizeColorMapMax;\r\n },\r\n set_normalizeColorMapMax: function(value) {\r\n this.version++;\r\n this.normalizeColorMapMax = value;\r\n return value;\r\n },\r\n normalizeColorMapValue: function(value) {\r\n if (!this.get_normalizeColorMap()) {\r\n return value;\r\n }\r\n var new_value = (value - this.get_normalizeColorMapMin()) / (this.get_normalizeColorMapMax() - this.get_normalizeColorMapMin());\r\n if (new_value < 0) {\r\n new_value = 0;\r\n }\r\n else if (new_value > 1) {\r\n new_value = 1;\r\n }\r\n return new_value;\r\n },\r\n get_markerColumn: function() {\r\n return this._markerColumn$1;\r\n },\r\n set_markerColumn: function(value) {\r\n if (this._markerColumn$1 !== value) {\r\n this.version++;\r\n this._markerColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_colorMapColumn: function() {\r\n return this.colorMapColumn;\r\n },\r\n set_colorMapColumn: function(value) {\r\n if (this.colorMapColumn !== value) {\r\n this.version++;\r\n this.colorMapColumn = value;\r\n }\r\n return value;\r\n },\r\n get_plotType: function() {\r\n return this._plotType$1;\r\n },\r\n set_plotType: function(value) {\r\n if (this._plotType$1 !== value) {\r\n this.version++;\r\n this._plotType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerIndex: function() {\r\n return this._markerIndex$1;\r\n },\r\n set_markerIndex: function(value) {\r\n if (this._markerIndex$1 !== value) {\r\n this.version++;\r\n this._markerIndex$1 = value;\r\n }\r\n return value;\r\n },\r\n get_showFarSide: function() {\r\n return this._showFarSide$1;\r\n },\r\n set_showFarSide: function(value) {\r\n if (this._showFarSide$1 !== value) {\r\n this.version++;\r\n this._showFarSide$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerScale: function() {\r\n return this._markerScale$1;\r\n },\r\n set_markerScale: function(value) {\r\n if (this._markerScale$1 !== value) {\r\n this.version++;\r\n this._markerScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altUnit: function() {\r\n return this._altUnit$1;\r\n },\r\n set_altUnit: function(value) {\r\n if (this._altUnit$1 !== value) {\r\n this.version++;\r\n this._altUnit$1 = value;\r\n }\r\n return value;\r\n },\r\n get_cartesianScale: function() {\r\n return this._cartesianScale$1;\r\n },\r\n set_cartesianScale: function(value) {\r\n if (this._cartesianScale$1 !== value) {\r\n this.version++;\r\n this._cartesianScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_cartesianCustomScale: function() {\r\n return this._cartesianCustomScale$1;\r\n },\r\n set_cartesianCustomScale: function(value) {\r\n if (this._cartesianCustomScale$1 !== value) {\r\n this.version++;\r\n this._cartesianCustomScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altColumn: function() {\r\n return this.altColumn;\r\n },\r\n set_altColumn: function(value) {\r\n if (this.altColumn !== value) {\r\n this.version++;\r\n this.altColumn = value;\r\n }\r\n return value;\r\n },\r\n get_startDateColumn: function() {\r\n return this.startDateColumn;\r\n },\r\n set_startDateColumn: function(value) {\r\n if (this.startDateColumn !== value) {\r\n this.version++;\r\n this.startDateColumn = value;\r\n }\r\n return value;\r\n },\r\n get_endDateColumn: function() {\r\n return this.endDateColumn;\r\n },\r\n set_endDateColumn: function(value) {\r\n if (this.endDateColumn !== value) {\r\n this.version++;\r\n this.endDateColumn = value;\r\n }\r\n return value;\r\n },\r\n get_sizeColumn: function() {\r\n return this.sizeColumn;\r\n },\r\n set_sizeColumn: function(value) {\r\n if (this.sizeColumn !== value) {\r\n this.version++;\r\n this.sizeColumn = value;\r\n }\r\n return value;\r\n },\r\n get_normalizeSize: function() {\r\n return this.normalizeSize;\r\n },\r\n set_normalizeSize: function(value) {\r\n if (this.normalizeSize !== value) {\r\n this.version++;\r\n this.normalizeSize = value;\r\n }\r\n return value;\r\n },\r\n get_normalizeSizeClip: function() {\r\n return this.normalizeSizeClip;\r\n },\r\n set_normalizeSizeClip: function(value) {\r\n if (this.normalizeSizeClip !== value) {\r\n this.version++;\r\n this.normalizeSizeClip = value;\r\n }\r\n return value;\r\n },\r\n get_normalizeSizeMin: function() {\r\n return this.normalizeSizeMin;\r\n },\r\n set_normalizeSizeMin: function(value) {\r\n if (this.normalizeSizeMin !== value) {\r\n this.version++;\r\n this.normalizeSizeMin = value;\r\n }\r\n return value;\r\n },\r\n get_normalizeSizeMax: function() {\r\n return this.normalizeSizeMax;\r\n },\r\n set_normalizeSizeMax: function(value) {\r\n if (this.normalizeSizeMax !== value) {\r\n this.version++;\r\n this.normalizeSizeMax = value;\r\n }\r\n return value;\r\n },\r\n normalizePointSize: function(value) {\r\n if (!this.get_normalizeSize()) {\r\n return value;\r\n }\r\n var new_value = (value - this.get_normalizeSizeMin()) / (this.get_normalizeSizeMax() - this.get_normalizeSizeMin());\r\n if (this.get_normalizeSizeClip()) {\r\n if (new_value < 0) {\r\n new_value = 0;\r\n }\r\n else if (new_value > 1) {\r\n new_value = 1;\r\n }\r\n }\r\n return new_value;\r\n },\r\n get_nameColumn: function() {\r\n return this.nameColumn;\r\n },\r\n set_nameColumn: function(value) {\r\n if (this.nameColumn !== value) {\r\n this.version++;\r\n this.nameColumn = value;\r\n }\r\n return value;\r\n },\r\n get_hyperlinkFormat: function() {\r\n return this._hyperlinkFormat$1;\r\n },\r\n set_hyperlinkFormat: function(value) {\r\n if (this._hyperlinkFormat$1 !== value) {\r\n this.version++;\r\n this._hyperlinkFormat$1 = value;\r\n }\r\n return value;\r\n },\r\n get_hyperlinkColumn: function() {\r\n return this._hyperlinkColumn$1;\r\n },\r\n set_hyperlinkColumn: function(value) {\r\n if (this._hyperlinkColumn$1 !== value) {\r\n this.version++;\r\n this._hyperlinkColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_scaleFactor: function() {\r\n return this.scaleFactor;\r\n },\r\n set_scaleFactor: function(value) {\r\n if (this.scaleFactor !== value) {\r\n this.version++;\r\n this.scaleFactor = value;\r\n }\r\n return value;\r\n },\r\n get_pointScaleType: function() {\r\n return this.pointScaleType;\r\n },\r\n set_pointScaleType: function(value) {\r\n if (this.pointScaleType !== value) {\r\n this.version++;\r\n this.pointScaleType = value;\r\n }\r\n return value;\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n var device = renderContext;\r\n if (this.version !== this.lastVersion) {\r\n this.cleanUp();\r\n }\r\n this.lastVersion = this.version;\r\n if (this.bufferIsFlat !== flat) {\r\n this.cleanUp();\r\n this.bufferIsFlat = flat;\r\n }\r\n if (this.dirty) {\r\n this.prepVertexBuffer(device, opacity);\r\n }\r\n var jNow = SpaceTimeController.get_jNow() - SpaceTimeController.utcToJulian(this.baseDate);\r\n var adjustedScale = this.scaleFactor * 3;\r\n if (flat && this.astronomical && (this._markerScale$1 === 1)) {\r\n adjustedScale = (this.scaleFactor / (renderContext.viewCamera.zoom / 360));\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.decay = this.decay;\r\n this.triangleList2d.sky = this.get_astronomical();\r\n this.triangleList2d.timeSeries = this.timeSeries;\r\n this.triangleList2d.jNow = jNow;\r\n this.triangleList2d.draw(renderContext, opacity * this.get_opacity(), 1);\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.decay = this.decay;\r\n this.triangleList.sky = this.get_astronomical();\r\n this.triangleList.timeSeries = this.timeSeries;\r\n this.triangleList.jNow = jNow;\r\n this.triangleList.draw(renderContext, opacity * this.get_opacity(), 1);\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.depthBuffered = false;\r\n this.pointList.showFarSide = this.get_showFarSide();\r\n this.pointList.decay = (this.timeSeries) ? this.decay : 0;\r\n this.pointList.sky = this.get_astronomical();\r\n this.pointList.timeSeries = this.timeSeries;\r\n this.pointList.jNow = jNow;\r\n this.pointList.scale = (this._markerScale$1 === 1) ? adjustedScale : -adjustedScale;\r\n switch (this._plotType$1) {\r\n case 0:\r\n this.pointList.draw(renderContext, opacity * this.get_opacity(), false);\r\n break;\r\n case 2:\r\n this.pointList.drawTextured(renderContext, SpreadSheetLayer.get__circleTexture$1().texture2d, opacity * this.get_opacity());\r\n break;\r\n case 1:\r\n this.pointList.drawTextured(renderContext, PushPin.getPushPinTexture(35), opacity * this.get_opacity());\r\n break;\r\n case 3:\r\n this.pointList.drawTextured(renderContext, PushPin.getPushPinTexture(67), opacity * this.get_opacity());\r\n break;\r\n case 5:\r\n case 4:\r\n this.pointList.drawTextured(renderContext, PushPin.getPushPinTexture(this._markerIndex$1), opacity * this.get_opacity());\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (this.lineList != null) {\r\n this.lineList.sky = this.get_astronomical();\r\n this.lineList.decay = this.decay;\r\n this.lineList.timeSeries = this.timeSeries;\r\n this.lineList.jNow = jNow;\r\n this.lineList.drawLines(renderContext, opacity * this.get_opacity());\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.sky = this.get_astronomical();\r\n this.lineList2d.decay = this.decay;\r\n this.lineList2d.timeSeries = this.timeSeries;\r\n this.lineList2d.showFarSide = this.get_showFarSide();\r\n this.lineList2d.jNow = jNow;\r\n this.lineList2d.drawLines(renderContext, opacity * this.get_opacity());\r\n }\r\n return true;\r\n },\r\n cleanUpBase: function() {\r\n if (this.lineList != null) {\r\n this.lineList.clear();\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.clear();\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.clear();\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.clear();\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.clear();\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TimeSeriesLayer\r\n\r\n function TimeSeriesLayer() {\r\n this.isLongIndex = false;\r\n this.shapeVertexCount = 0;\r\n this.lines = false;\r\n this.latColumn = -1;\r\n this.fixedSize = 1;\r\n this.decay = 16;\r\n this.timeSeries = false;\r\n this._dynamicData$1 = false;\r\n this._autoUpdate$1 = false;\r\n this._dataSourceUrl$1 = '';\r\n this._beginRange$1 = new Date('1/1/2100');\r\n this._endRange$1 = new Date('01/01/1800');\r\n this.markerDomainValues = {};\r\n this.colorDomainValues = {};\r\n this._coordinatesType$1 = 0;\r\n this.lngColumn = -1;\r\n this.geometryColumn = -1;\r\n this._xAxisColumn$1 = -1;\r\n this._yAxisColumn$1 = -1;\r\n this._zAxisColumn$1 = -1;\r\n this._xAxisReverse$1 = false;\r\n this._yAxisReverse$1 = false;\r\n this._zAxisReverse$1 = false;\r\n this._altType$1 = 3;\r\n this._markerMix$1 = 0;\r\n this._raUnits$1 = 0;\r\n this._colorMap$1 = 3;\r\n this._markerColumn$1 = -1;\r\n this._colorMapColumn$1 = -1;\r\n this._plotType$1 = 0;\r\n this._markerIndex$1 = 0;\r\n this._showFarSide$1 = false;\r\n this._markerScale$1 = 1;\r\n this._altUnit$1 = 1;\r\n this._cartesianScale$1 = 1;\r\n this._cartesianCustomScale$1 = 1;\r\n this.altColumn = -1;\r\n this.startDateColumn = -1;\r\n this.endDateColumn = -1;\r\n this.sizeColumn = -1;\r\n this.nameColumn = 0;\r\n this._hyperlinkFormat$1 = '';\r\n this._hyperlinkColumn$1 = -1;\r\n this.scaleFactor = 1;\r\n this.pointScaleType = 1;\r\n this.positions = [];\r\n this.bufferIsFlat = false;\r\n this.baseDate = new Date(2010, 0, 1, 12, 0, 0);\r\n this.dirty = true;\r\n this.lastVersion = 0;\r\n Layer.call(this);\r\n }\r\n TimeSeriesLayer.get__circleTexture$1 = function() {\r\n return TimeSeriesLayer._circleTexture$1;\r\n };\r\n var TimeSeriesLayer$ = {\r\n get_dynamicData: function() {\r\n return this._dynamicData$1;\r\n },\r\n set_dynamicData: function(value) {\r\n this._dynamicData$1 = value;\r\n return value;\r\n },\r\n get_autoUpdate: function() {\r\n return this._autoUpdate$1;\r\n },\r\n set_autoUpdate: function(value) {\r\n this._autoUpdate$1 = value;\r\n return value;\r\n },\r\n get_dataSourceUrl: function() {\r\n return this._dataSourceUrl$1;\r\n },\r\n set_dataSourceUrl: function(value) {\r\n this._dataSourceUrl$1 = value;\r\n return value;\r\n },\r\n get_timeSeries: function() {\r\n return this.timeSeries;\r\n },\r\n set_timeSeries: function(value) {\r\n if (this.timeSeries !== value) {\r\n this.version++;\r\n this.timeSeries = value;\r\n }\r\n return value;\r\n },\r\n get_header: function() {\r\n return null;\r\n },\r\n get_beginRange: function() {\r\n return this._beginRange$1;\r\n },\r\n set_beginRange: function(value) {\r\n if (!ss.compareDates(this._beginRange$1, value)) {\r\n this.version++;\r\n this._beginRange$1 = value;\r\n }\r\n return value;\r\n },\r\n get_endRange: function() {\r\n return this._endRange$1;\r\n },\r\n set_endRange: function(value) {\r\n if (!ss.compareDates(this._endRange$1, value)) {\r\n this.version++;\r\n this._endRange$1 = value;\r\n }\r\n return value;\r\n },\r\n initializeFromXml: function(node) {\r\n this.set_timeSeries(ss.boolean(node.attributes.getNamedItem('TimeSeries').nodeValue));\r\n this.set_beginRange(new Date(node.attributes.getNamedItem('BeginRange').nodeValue));\r\n this.set_endRange(new Date(node.attributes.getNamedItem('EndRange').nodeValue));\r\n this.set_decay(parseFloat(node.attributes.getNamedItem('Decay').nodeValue));\r\n this.set_coordinatesType(Enums.parse('CoordinatesTypes', node.attributes.getNamedItem('CoordinatesType').nodeValue));\r\n if (this.get_coordinatesType() < 0) {\r\n this.set_coordinatesType(0);\r\n }\r\n this.set_latColumn(parseInt(node.attributes.getNamedItem('LatColumn').nodeValue));\r\n this.set_lngColumn(parseInt(node.attributes.getNamedItem('LngColumn').nodeValue));\r\n if (node.attributes.getNamedItem('GeometryColumn') != null) {\r\n this.set_geometryColumn(parseInt(node.attributes.getNamedItem('GeometryColumn').nodeValue));\r\n }\r\n switch (node.attributes.getNamedItem('AltType').nodeValue) {\r\n case 'Depth':\r\n this.set_altType(0);\r\n break;\r\n case 'Altitude':\r\n this.set_altType(1);\r\n break;\r\n case 'Distance':\r\n this.set_altType(2);\r\n break;\r\n case 'SeaLevel':\r\n this.set_altType(3);\r\n break;\r\n case 'Terrain':\r\n this.set_altType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_markerMix(0);\r\n switch (node.attributes.getNamedItem('ColorMap').nodeValue) {\r\n case 'Same_For_All':\r\n this.set__colorMap(0);\r\n break;\r\n case 'Group_by_Values':\r\n this.set__colorMap(2);\r\n break;\r\n case 'Per_Column_Literal':\r\n this.set__colorMap(3);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_markerColumn(parseInt(node.attributes.getNamedItem('MarkerColumn').nodeValue));\r\n this.set_colorMapColumn(parseInt(node.attributes.getNamedItem('ColorMapColumn').nodeValue));\r\n switch (node.attributes.getNamedItem('PlotType').nodeValue) {\r\n case 'Gaussian':\r\n this.set_plotType(0);\r\n break;\r\n case 'Point':\r\n this.set_plotType(1);\r\n break;\r\n case 'Circle':\r\n this.set_plotType(2);\r\n break;\r\n case 'PushPin':\r\n this.set_plotType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_markerIndex(parseInt(node.attributes.getNamedItem('MarkerIndex').nodeValue));\r\n switch (node.attributes.getNamedItem('MarkerScale').nodeValue) {\r\n case 'Screen':\r\n this.set_markerScale(0);\r\n break;\r\n case 'World':\r\n this.set_markerScale(1);\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (node.attributes.getNamedItem('AltUnit').nodeValue) {\r\n case 'Meters':\r\n this.set_altUnit(1);\r\n break;\r\n case 'Feet':\r\n this.set_altUnit(2);\r\n break;\r\n case 'Inches':\r\n this.set_altUnit(3);\r\n break;\r\n case 'Miles':\r\n this.set_altUnit(4);\r\n break;\r\n case 'Kilometers':\r\n this.set_altUnit(5);\r\n break;\r\n case 'AstronomicalUnits':\r\n this.set_altUnit(6);\r\n break;\r\n case 'LightYears':\r\n this.set_altUnit(7);\r\n break;\r\n case 'Parsecs':\r\n this.set_altUnit(8);\r\n break;\r\n case 'MegaParsecs':\r\n this.set_altUnit(9);\r\n break;\r\n case 'Custom':\r\n this.set_altUnit(10);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_altColumn(parseInt(node.attributes.getNamedItem('AltColumn').nodeValue));\r\n this.set_startDateColumn(parseInt(node.attributes.getNamedItem('StartDateColumn').nodeValue));\r\n this.set_endDateColumn(parseInt(node.attributes.getNamedItem('EndDateColumn').nodeValue));\r\n this.set_sizeColumn(parseInt(node.attributes.getNamedItem('SizeColumn').nodeValue));\r\n this.set_hyperlinkFormat(node.attributes.getNamedItem('HyperlinkFormat').nodeValue);\r\n this.set_hyperlinkColumn(parseInt(node.attributes.getNamedItem('HyperlinkColumn').nodeValue));\r\n this.set_scaleFactor(parseFloat(node.attributes.getNamedItem('ScaleFactor').nodeValue));\r\n switch (node.attributes.getNamedItem('PointScaleType').nodeValue) {\r\n case 'Linear':\r\n this.set_pointScaleType(0);\r\n break;\r\n case 'Power':\r\n this.set_pointScaleType(1);\r\n break;\r\n case 'Log':\r\n this.set_pointScaleType(2);\r\n break;\r\n case 'Constant':\r\n this.set_pointScaleType(3);\r\n break;\r\n case 'StellarMagnitude':\r\n this.set_pointScaleType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n if (node.attributes.getNamedItem('ShowFarSide') != null) {\r\n this.set_showFarSide(ss.boolean(node.attributes.getNamedItem('ShowFarSide').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('RaUnits') != null) {\r\n switch (node.attributes.getNamedItem('RaUnits').nodeValue) {\r\n case 'Hours':\r\n this.set_raUnits(0);\r\n break;\r\n case 'Degrees':\r\n this.set_raUnits(1);\r\n break;\r\n }\r\n }\r\n if (node.attributes.getNamedItem('HoverTextColumn') != null) {\r\n this.set_nameColumn(parseInt(node.attributes.getNamedItem('HoverTextColumn').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('XAxisColumn') != null) {\r\n this.set_xAxisColumn(parseInt(node.attributes.getNamedItem('XAxisColumn').nodeValue));\r\n this.set_xAxisReverse(ss.boolean(node.attributes.getNamedItem('XAxisReverse').nodeValue));\r\n this.set_yAxisColumn(parseInt(node.attributes.getNamedItem('YAxisColumn').nodeValue));\r\n this.set_yAxisReverse(ss.boolean(node.attributes.getNamedItem('YAxisReverse').nodeValue));\r\n this.set_zAxisColumn(parseInt(node.attributes.getNamedItem('ZAxisColumn').nodeValue));\r\n this.set_zAxisReverse(ss.boolean(node.attributes.getNamedItem('ZAxisReverse').nodeValue));\r\n switch (node.attributes.getNamedItem('CartesianScale').nodeValue) {\r\n case 'Meters':\r\n this.set_cartesianScale(1);\r\n break;\r\n case 'Feet':\r\n this.set_cartesianScale(2);\r\n break;\r\n case 'Inches':\r\n this.set_cartesianScale(3);\r\n break;\r\n case 'Miles':\r\n this.set_cartesianScale(4);\r\n break;\r\n case 'Kilometers':\r\n this.set_cartesianScale(5);\r\n break;\r\n case 'AstronomicalUnits':\r\n this.set_cartesianScale(6);\r\n break;\r\n case 'LightYears':\r\n this.set_cartesianScale(7);\r\n break;\r\n case 'Parsecs':\r\n this.set_cartesianScale(8);\r\n break;\r\n case 'MegaParsecs':\r\n this.set_cartesianScale(9);\r\n break;\r\n case 'Custom':\r\n this.set_cartesianScale(10);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_cartesianCustomScale(parseFloat(node.attributes.getNamedItem('CartesianCustomScale').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('DynamicData') != null) {\r\n this.set_dynamicData(ss.boolean(node.attributes.getNamedItem('DynamicData').nodeValue));\r\n this.set_autoUpdate(ss.boolean(node.attributes.getNamedItem('AutoUpdate').nodeValue));\r\n this.set_dataSourceUrl(node.attributes.getNamedItem('DataSourceUrl').nodeValue);\r\n }\r\n },\r\n computeDateDomainRange: function(columnStart, columnEnd) {\r\n },\r\n getDomainValues: function(column) {\r\n return [];\r\n },\r\n get_decay: function() {\r\n return this.decay;\r\n },\r\n set_decay: function(value) {\r\n if (this.decay !== value) {\r\n this.version++;\r\n this.decay = value;\r\n }\r\n return value;\r\n },\r\n get_coordinatesType: function() {\r\n return this._coordinatesType$1;\r\n },\r\n set_coordinatesType: function(value) {\r\n if (this._coordinatesType$1 !== value) {\r\n this.version++;\r\n this._coordinatesType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_latColumn: function() {\r\n return this.latColumn;\r\n },\r\n set_latColumn: function(value) {\r\n if (this.latColumn !== value) {\r\n this.version++;\r\n this.latColumn = value;\r\n }\r\n return value;\r\n },\r\n get_lngColumn: function() {\r\n return this.lngColumn;\r\n },\r\n set_lngColumn: function(value) {\r\n if (this.lngColumn !== value) {\r\n this.version++;\r\n this.lngColumn = value;\r\n }\r\n return value;\r\n },\r\n get_geometryColumn: function() {\r\n return this.geometryColumn;\r\n },\r\n set_geometryColumn: function(value) {\r\n if (this.geometryColumn !== value) {\r\n this.version++;\r\n this.geometryColumn = value;\r\n }\r\n return value;\r\n },\r\n get_xAxisColumn: function() {\r\n return this._xAxisColumn$1;\r\n },\r\n set_xAxisColumn: function(value) {\r\n if (this._xAxisColumn$1 !== value) {\r\n this.version++;\r\n this._xAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_yAxisColumn: function() {\r\n return this._yAxisColumn$1;\r\n },\r\n set_yAxisColumn: function(value) {\r\n if (this._yAxisColumn$1 !== value) {\r\n this.version++;\r\n this._yAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_zAxisColumn: function() {\r\n return this._zAxisColumn$1;\r\n },\r\n set_zAxisColumn: function(value) {\r\n if (this._zAxisColumn$1 !== value) {\r\n this.version++;\r\n this._zAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_xAxisReverse: function() {\r\n return this._xAxisReverse$1;\r\n },\r\n set_xAxisReverse: function(value) {\r\n if (this._xAxisReverse$1 !== value) {\r\n this.version++;\r\n this._xAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_yAxisReverse: function() {\r\n return this._yAxisReverse$1;\r\n },\r\n set_yAxisReverse: function(value) {\r\n if (this._yAxisReverse$1 !== value) {\r\n this.version++;\r\n this._yAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_zAxisReverse: function() {\r\n return this._zAxisReverse$1;\r\n },\r\n set_zAxisReverse: function(value) {\r\n if (this._zAxisReverse$1 !== value) {\r\n this.version++;\r\n this._zAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altType: function() {\r\n return this._altType$1;\r\n },\r\n set_altType: function(value) {\r\n if (this._altType$1 !== value) {\r\n this.version++;\r\n this._altType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerMix: function() {\r\n return this._markerMix$1;\r\n },\r\n set_markerMix: function(value) {\r\n if (this._markerMix$1 !== value) {\r\n this.version++;\r\n this._markerMix$1 = value;\r\n }\r\n return value;\r\n },\r\n get_raUnits: function() {\r\n return this._raUnits$1;\r\n },\r\n set_raUnits: function(value) {\r\n if (this._raUnits$1 !== value) {\r\n this.version++;\r\n this._raUnits$1 = value;\r\n }\r\n return value;\r\n },\r\n get__colorMap: function() {\r\n return this._colorMap$1;\r\n },\r\n set__colorMap: function(value) {\r\n if (this._colorMap$1 !== value) {\r\n this.version++;\r\n this._colorMap$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerColumn: function() {\r\n return this._markerColumn$1;\r\n },\r\n set_markerColumn: function(value) {\r\n if (this._markerColumn$1 !== value) {\r\n this.version++;\r\n this._markerColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_colorMapColumn: function() {\r\n return this._colorMapColumn$1;\r\n },\r\n set_colorMapColumn: function(value) {\r\n if (this._colorMapColumn$1 !== value) {\r\n this.version++;\r\n this._colorMapColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_plotType: function() {\r\n return this._plotType$1;\r\n },\r\n set_plotType: function(value) {\r\n if (this._plotType$1 !== value) {\r\n this.version++;\r\n this._plotType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerIndex: function() {\r\n return this._markerIndex$1;\r\n },\r\n set_markerIndex: function(value) {\r\n if (this._markerIndex$1 !== value) {\r\n this.version++;\r\n this._markerIndex$1 = value;\r\n }\r\n return value;\r\n },\r\n get_showFarSide: function() {\r\n return this._showFarSide$1;\r\n },\r\n set_showFarSide: function(value) {\r\n if (this._showFarSide$1 !== value) {\r\n this.version++;\r\n this._showFarSide$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerScale: function() {\r\n return this._markerScale$1;\r\n },\r\n set_markerScale: function(value) {\r\n if (this._markerScale$1 !== value) {\r\n this.version++;\r\n this._markerScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altUnit: function() {\r\n return this._altUnit$1;\r\n },\r\n set_altUnit: function(value) {\r\n if (this._altUnit$1 !== value) {\r\n this.version++;\r\n this._altUnit$1 = value;\r\n }\r\n return value;\r\n },\r\n get_cartesianScale: function() {\r\n return this._cartesianScale$1;\r\n },\r\n set_cartesianScale: function(value) {\r\n if (this._cartesianScale$1 !== value) {\r\n this.version++;\r\n this._cartesianScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_cartesianCustomScale: function() {\r\n return this._cartesianCustomScale$1;\r\n },\r\n set_cartesianCustomScale: function(value) {\r\n if (this._cartesianCustomScale$1 !== value) {\r\n this.version++;\r\n this._cartesianCustomScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altColumn: function() {\r\n return this.altColumn;\r\n },\r\n set_altColumn: function(value) {\r\n if (this.altColumn !== value) {\r\n this.version++;\r\n this.altColumn = value;\r\n }\r\n return value;\r\n },\r\n get_startDateColumn: function() {\r\n return this.startDateColumn;\r\n },\r\n set_startDateColumn: function(value) {\r\n if (this.startDateColumn !== value) {\r\n this.version++;\r\n this.startDateColumn = value;\r\n }\r\n return value;\r\n },\r\n get_endDateColumn: function() {\r\n return this.endDateColumn;\r\n },\r\n set_endDateColumn: function(value) {\r\n if (this.endDateColumn !== value) {\r\n this.version++;\r\n this.endDateColumn = value;\r\n }\r\n return value;\r\n },\r\n get_sizeColumn: function() {\r\n return this.sizeColumn;\r\n },\r\n set_sizeColumn: function(value) {\r\n if (this.sizeColumn !== value) {\r\n this.version++;\r\n this.sizeColumn = value;\r\n }\r\n return value;\r\n },\r\n get_nameColumn: function() {\r\n return this.nameColumn;\r\n },\r\n set_nameColumn: function(value) {\r\n if (this.nameColumn !== value) {\r\n this.version++;\r\n this.nameColumn = value;\r\n }\r\n return value;\r\n },\r\n get_hyperlinkFormat: function() {\r\n return this._hyperlinkFormat$1;\r\n },\r\n set_hyperlinkFormat: function(value) {\r\n if (this._hyperlinkFormat$1 !== value) {\r\n this.version++;\r\n this._hyperlinkFormat$1 = value;\r\n }\r\n return value;\r\n },\r\n get_hyperlinkColumn: function() {\r\n return this._hyperlinkColumn$1;\r\n },\r\n set_hyperlinkColumn: function(value) {\r\n if (this._hyperlinkColumn$1 !== value) {\r\n this.version++;\r\n this._hyperlinkColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_scaleFactor: function() {\r\n return this.scaleFactor;\r\n },\r\n set_scaleFactor: function(value) {\r\n if (this.scaleFactor !== value) {\r\n this.version++;\r\n this.scaleFactor = value;\r\n }\r\n return value;\r\n },\r\n get_pointScaleType: function() {\r\n return this.pointScaleType;\r\n },\r\n set_pointScaleType: function(value) {\r\n if (this.pointScaleType !== value) {\r\n this.version++;\r\n this.pointScaleType = value;\r\n }\r\n return value;\r\n },\r\n prepVertexBuffer: function(renderContext, opacity) {\r\n return true;\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n var device = renderContext;\r\n if (this.version !== this.lastVersion) {\r\n this.cleanUp();\r\n }\r\n if (this.bufferIsFlat !== flat) {\r\n this.cleanUp();\r\n this.bufferIsFlat = flat;\r\n }\r\n if (this.dirty) {\r\n this.prepVertexBuffer(device, opacity);\r\n }\r\n var jNow = SpaceTimeController.get_jNow() - SpaceTimeController.utcToJulian(this.baseDate);\r\n var adjustedScale = this.scaleFactor;\r\n if (flat && this.astronomical && (this._markerScale$1 === 1)) {\r\n adjustedScale = (this.scaleFactor / (renderContext.viewCamera.zoom / 360));\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.decay = this.decay;\r\n this.triangleList2d.sky = this.get_astronomical();\r\n this.triangleList2d.timeSeries = this.timeSeries;\r\n this.triangleList2d.jNow = jNow;\r\n this.triangleList2d.draw(renderContext, opacity * this.get_opacity(), 1);\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.decay = this.decay;\r\n this.triangleList.sky = this.get_astronomical();\r\n this.triangleList.timeSeries = this.timeSeries;\r\n this.triangleList.jNow = jNow;\r\n this.triangleList.draw(renderContext, opacity * this.get_opacity(), 1);\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.depthBuffered = false;\r\n this.pointList.decay = this.decay;\r\n this.pointList.sky = this.get_astronomical();\r\n this.pointList.timeSeries = this.timeSeries;\r\n this.pointList.jNow = jNow;\r\n this.pointList.scale = (this._markerScale$1 === 1) ? adjustedScale : -adjustedScale;\r\n this.pointList.draw(renderContext, opacity * this.get_opacity(), false);\r\n }\r\n if (this.lineList != null) {\r\n this.lineList.sky = this.get_astronomical();\r\n this.lineList.decay = this.decay;\r\n this.lineList.timeSeries = this.timeSeries;\r\n this.lineList.jNow = jNow;\r\n this.lineList.drawLines(renderContext, opacity * this.get_opacity());\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.sky = this.get_astronomical();\r\n this.lineList2d.decay = this.decay;\r\n this.lineList2d.timeSeries = this.timeSeries;\r\n this.lineList2d.showFarSide = this.get_showFarSide();\r\n this.lineList2d.jNow = jNow;\r\n this.lineList2d.drawLines(renderContext, opacity * this.get_opacity());\r\n }\r\n return true;\r\n },\r\n initFromXml: function(node) {\r\n Layer.prototype.initFromXml.call(this, node);\r\n },\r\n cleanUp: function() {\r\n if (this.lineList != null) {\r\n this.lineList.clear();\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.clear();\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.clear();\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.clear();\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.clear();\r\n }\r\n },\r\n dynamicUpdate: function() {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.VoTableLayer\r\n\r\n function VoTableLayer() {\r\n this.isLongIndex = false;\r\n this.shapeVertexCount = 0;\r\n this.lines = false;\r\n this.latColumn = -1;\r\n this.fixedSize = 1;\r\n this.decay = 0;\r\n this.timeSeries = false;\r\n this._dynamicData$1 = false;\r\n this._autoUpdate$1 = false;\r\n this._dataSourceUrl$1 = '';\r\n this._beginRange$1 = new Date('1/1/2100');\r\n this._endRange$1 = new Date('01/01/1800');\r\n this.markerDomainValues = {};\r\n this.colorDomainValues = {};\r\n this._coordinatesType$1 = 0;\r\n this.lngColumn = -1;\r\n this.geometryColumn = -1;\r\n this._xAxisColumn$1 = -1;\r\n this._yAxisColumn$1 = -1;\r\n this._zAxisColumn$1 = -1;\r\n this._xAxisReverse$1 = false;\r\n this._yAxisReverse$1 = false;\r\n this._zAxisReverse$1 = false;\r\n this._altType$1 = 3;\r\n this._markerMix$1 = 0;\r\n this._raUnits$1 = 0;\r\n this._colorMap$1 = 3;\r\n this._markerColumn$1 = -1;\r\n this._colorMapColumn$1 = -1;\r\n this._plotType$1 = 0;\r\n this._markerIndex$1 = 0;\r\n this._showFarSide$1 = false;\r\n this._markerScale$1 = 1;\r\n this._altUnit$1 = 1;\r\n this._cartesianScale$1 = 1;\r\n this._cartesianCustomScale$1 = 1;\r\n this.altColumn = -1;\r\n this.startDateColumn = -1;\r\n this.endDateColumn = -1;\r\n this.sizeColumn = -1;\r\n this.nameColumn = 0;\r\n this._hyperlinkFormat$1 = '';\r\n this._hyperlinkColumn$1 = -1;\r\n this.scaleFactor = 1;\r\n this.pointScaleType = 1;\r\n this.positions = [];\r\n this.bufferIsFlat = false;\r\n this.baseDate = new Date(2010, 0, 1, 12, 0, 0);\r\n this.dirty = true;\r\n this._filename$1 = '';\r\n Layer.call(this);\r\n this._table$1 = null;\r\n this._filename$1 = '';\r\n this.set_plotType(2);\r\n }\r\n VoTableLayer.get__circleTexture$1 = function() {\r\n if (VoTableLayer._circleTexture$1 == null) {\r\n var url = URLHelpers.singleton.engineAssetUrl('circle.png');\r\n VoTableLayer._circleTexture$1 = Planets.loadPlanetTexture(url);\r\n }\r\n return VoTableLayer._circleTexture$1;\r\n };\r\n VoTableLayer.create = function(table, plotType) {\r\n var layer = new VoTableLayer();\r\n layer._table$1 = table;\r\n layer._filename$1 = table.loadFilename;\r\n layer.set_lngColumn(table.getRAColumn().index);\r\n layer.set_latColumn(table.getDecColumn().index);\r\n layer.sizeColumn = table.getColumnByUcd('phot.mag').index;\r\n layer.set_plotType(plotType);\r\n return layer;\r\n };\r\n var VoTableLayer$ = {\r\n get_dynamicData: function() {\r\n return this._dynamicData$1;\r\n },\r\n set_dynamicData: function(value) {\r\n this._dynamicData$1 = value;\r\n return value;\r\n },\r\n get_autoUpdate: function() {\r\n return this._autoUpdate$1;\r\n },\r\n set_autoUpdate: function(value) {\r\n this._autoUpdate$1 = value;\r\n return value;\r\n },\r\n get_dataSourceUrl: function() {\r\n return this._dataSourceUrl$1;\r\n },\r\n set_dataSourceUrl: function(value) {\r\n this._dataSourceUrl$1 = value;\r\n return value;\r\n },\r\n get_timeSeries: function() {\r\n return this.timeSeries;\r\n },\r\n set_timeSeries: function(value) {\r\n if (this.timeSeries !== value) {\r\n this.version++;\r\n this.timeSeries = value;\r\n }\r\n return value;\r\n },\r\n get_beginRange: function() {\r\n return this._beginRange$1;\r\n },\r\n set_beginRange: function(value) {\r\n if (!ss.compareDates(this._beginRange$1, value)) {\r\n this.version++;\r\n this._beginRange$1 = value;\r\n }\r\n return value;\r\n },\r\n get_endRange: function() {\r\n return this._endRange$1;\r\n },\r\n set_endRange: function(value) {\r\n if (!ss.compareDates(this._endRange$1, value)) {\r\n this.version++;\r\n this._endRange$1 = value;\r\n }\r\n return value;\r\n },\r\n initializeFromXml: function(node) {\r\n this.set_timeSeries(ss.boolean(node.attributes.getNamedItem('TimeSeries').nodeValue));\r\n this.set_beginRange(new Date(node.attributes.getNamedItem('BeginRange').nodeValue));\r\n this.set_endRange(new Date(node.attributes.getNamedItem('EndRange').nodeValue));\r\n this.set_decay(parseFloat(node.attributes.getNamedItem('Decay').nodeValue));\r\n this.set_coordinatesType(Enums.parse('CoordinatesTypes', node.attributes.getNamedItem('CoordinatesType').nodeValue));\r\n if (this.get_coordinatesType() < 0) {\r\n this.set_coordinatesType(0);\r\n }\r\n this.set_latColumn(parseInt(node.attributes.getNamedItem('LatColumn').nodeValue));\r\n this.set_lngColumn(parseInt(node.attributes.getNamedItem('LngColumn').nodeValue));\r\n if (node.attributes.getNamedItem('GeometryColumn') != null) {\r\n this.set_geometryColumn(parseInt(node.attributes.getNamedItem('GeometryColumn').nodeValue));\r\n }\r\n switch (node.attributes.getNamedItem('AltType').nodeValue) {\r\n case 'Depth':\r\n this.set_altType(0);\r\n break;\r\n case 'Altitude':\r\n this.set_altType(1);\r\n break;\r\n case 'Distance':\r\n this.set_altType(2);\r\n break;\r\n case 'SeaLevel':\r\n this.set_altType(3);\r\n break;\r\n case 'Terrain':\r\n this.set_altType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_markerMix(0);\r\n switch (node.attributes.getNamedItem('ColorMap').nodeValue) {\r\n case 'Same_For_All':\r\n this.set__colorMap(0);\r\n break;\r\n case 'Group_by_Values':\r\n this.set__colorMap(2);\r\n break;\r\n case 'Per_Column_Literal':\r\n this.set__colorMap(3);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_markerColumn(parseInt(node.attributes.getNamedItem('MarkerColumn').nodeValue));\r\n this.set_colorMapColumn(parseInt(node.attributes.getNamedItem('ColorMapColumn').nodeValue));\r\n switch (node.attributes.getNamedItem('PlotType').nodeValue) {\r\n case 'Gaussian':\r\n this.set_plotType(0);\r\n break;\r\n case 'Point':\r\n this.set_plotType(1);\r\n break;\r\n case 'Circle':\r\n this.set_plotType(2);\r\n break;\r\n case 'PushPin':\r\n this.set_plotType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_markerIndex(parseInt(node.attributes.getNamedItem('MarkerIndex').nodeValue));\r\n switch (node.attributes.getNamedItem('MarkerScale').nodeValue) {\r\n case 'Screen':\r\n this.set_markerScale(0);\r\n break;\r\n case 'World':\r\n this.set_markerScale(1);\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (node.attributes.getNamedItem('AltUnit').nodeValue) {\r\n case 'Meters':\r\n this.set_altUnit(1);\r\n break;\r\n case 'Feet':\r\n this.set_altUnit(2);\r\n break;\r\n case 'Inches':\r\n this.set_altUnit(3);\r\n break;\r\n case 'Miles':\r\n this.set_altUnit(4);\r\n break;\r\n case 'Kilometers':\r\n this.set_altUnit(5);\r\n break;\r\n case 'AstronomicalUnits':\r\n this.set_altUnit(6);\r\n break;\r\n case 'LightYears':\r\n this.set_altUnit(7);\r\n break;\r\n case 'Parsecs':\r\n this.set_altUnit(8);\r\n break;\r\n case 'MegaParsecs':\r\n this.set_altUnit(9);\r\n break;\r\n case 'Custom':\r\n this.set_altUnit(10);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_altColumn(parseInt(node.attributes.getNamedItem('AltColumn').nodeValue));\r\n this.set_startDateColumn(parseInt(node.attributes.getNamedItem('StartDateColumn').nodeValue));\r\n this.set_endDateColumn(parseInt(node.attributes.getNamedItem('EndDateColumn').nodeValue));\r\n this.set_sizeColumn(parseInt(node.attributes.getNamedItem('SizeColumn').nodeValue));\r\n this.set_hyperlinkFormat(node.attributes.getNamedItem('HyperlinkFormat').nodeValue);\r\n this.set_hyperlinkColumn(parseInt(node.attributes.getNamedItem('HyperlinkColumn').nodeValue));\r\n this.set_scaleFactor(parseFloat(node.attributes.getNamedItem('ScaleFactor').nodeValue));\r\n switch (node.attributes.getNamedItem('PointScaleType').nodeValue) {\r\n case 'Linear':\r\n this.set_pointScaleType(0);\r\n break;\r\n case 'Power':\r\n this.set_pointScaleType(1);\r\n break;\r\n case 'Log':\r\n this.set_pointScaleType(2);\r\n break;\r\n case 'Constant':\r\n this.set_pointScaleType(3);\r\n break;\r\n case 'StellarMagnitude':\r\n this.set_pointScaleType(4);\r\n break;\r\n default:\r\n break;\r\n }\r\n if (node.attributes.getNamedItem('ShowFarSide') != null) {\r\n this.set_showFarSide(ss.boolean(node.attributes.getNamedItem('ShowFarSide').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('RaUnits') != null) {\r\n switch (node.attributes.getNamedItem('RaUnits').nodeValue) {\r\n case 'Hours':\r\n this.set_raUnits(0);\r\n break;\r\n case 'Degrees':\r\n this.set_raUnits(1);\r\n break;\r\n }\r\n }\r\n if (node.attributes.getNamedItem('HoverTextColumn') != null) {\r\n this.set_nameColumn(parseInt(node.attributes.getNamedItem('HoverTextColumn').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('XAxisColumn') != null) {\r\n this.set_xAxisColumn(parseInt(node.attributes.getNamedItem('XAxisColumn').nodeValue));\r\n this.set_xAxisReverse(ss.boolean(node.attributes.getNamedItem('XAxisReverse').nodeValue));\r\n this.set_yAxisColumn(parseInt(node.attributes.getNamedItem('YAxisColumn').nodeValue));\r\n this.set_yAxisReverse(ss.boolean(node.attributes.getNamedItem('YAxisReverse').nodeValue));\r\n this.set_zAxisColumn(parseInt(node.attributes.getNamedItem('ZAxisColumn').nodeValue));\r\n this.set_zAxisReverse(ss.boolean(node.attributes.getNamedItem('ZAxisReverse').nodeValue));\r\n switch (node.attributes.getNamedItem('CartesianScale').nodeValue) {\r\n case 'Meters':\r\n this.set_cartesianScale(1);\r\n break;\r\n case 'Feet':\r\n this.set_cartesianScale(2);\r\n break;\r\n case 'Inches':\r\n this.set_cartesianScale(3);\r\n break;\r\n case 'Miles':\r\n this.set_cartesianScale(4);\r\n break;\r\n case 'Kilometers':\r\n this.set_cartesianScale(5);\r\n break;\r\n case 'AstronomicalUnits':\r\n this.set_cartesianScale(6);\r\n break;\r\n case 'LightYears':\r\n this.set_cartesianScale(7);\r\n break;\r\n case 'Parsecs':\r\n this.set_cartesianScale(8);\r\n break;\r\n case 'MegaParsecs':\r\n this.set_cartesianScale(9);\r\n break;\r\n case 'Custom':\r\n this.set_cartesianScale(10);\r\n break;\r\n default:\r\n break;\r\n }\r\n this.set_cartesianCustomScale(parseFloat(node.attributes.getNamedItem('CartesianCustomScale').nodeValue));\r\n }\r\n if (node.attributes.getNamedItem('DynamicData') != null) {\r\n this.set_dynamicData(ss.boolean(node.attributes.getNamedItem('DynamicData').nodeValue));\r\n this.set_autoUpdate(ss.boolean(node.attributes.getNamedItem('AutoUpdate').nodeValue));\r\n this.set_dataSourceUrl(node.attributes.getNamedItem('DataSourceUrl').nodeValue);\r\n }\r\n },\r\n get_decay: function() {\r\n return this.decay;\r\n },\r\n set_decay: function(value) {\r\n if (this.decay !== value) {\r\n this.version++;\r\n this.decay = value;\r\n }\r\n return value;\r\n },\r\n get_coordinatesType: function() {\r\n return this._coordinatesType$1;\r\n },\r\n set_coordinatesType: function(value) {\r\n if (this._coordinatesType$1 !== value) {\r\n this.version++;\r\n this._coordinatesType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_latColumn: function() {\r\n return this.latColumn;\r\n },\r\n set_latColumn: function(value) {\r\n if (this.latColumn !== value) {\r\n this.version++;\r\n this.latColumn = value;\r\n }\r\n return value;\r\n },\r\n get_lngColumn: function() {\r\n return this.lngColumn;\r\n },\r\n set_lngColumn: function(value) {\r\n if (this.lngColumn !== value) {\r\n this.version++;\r\n this.lngColumn = value;\r\n }\r\n return value;\r\n },\r\n get_geometryColumn: function() {\r\n return this.geometryColumn;\r\n },\r\n set_geometryColumn: function(value) {\r\n if (this.geometryColumn !== value) {\r\n this.version++;\r\n this.geometryColumn = value;\r\n }\r\n return value;\r\n },\r\n get_xAxisColumn: function() {\r\n return this._xAxisColumn$1;\r\n },\r\n set_xAxisColumn: function(value) {\r\n if (this._xAxisColumn$1 !== value) {\r\n this.version++;\r\n this._xAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_yAxisColumn: function() {\r\n return this._yAxisColumn$1;\r\n },\r\n set_yAxisColumn: function(value) {\r\n if (this._yAxisColumn$1 !== value) {\r\n this.version++;\r\n this._yAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_zAxisColumn: function() {\r\n return this._zAxisColumn$1;\r\n },\r\n set_zAxisColumn: function(value) {\r\n if (this._zAxisColumn$1 !== value) {\r\n this.version++;\r\n this._zAxisColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_xAxisReverse: function() {\r\n return this._xAxisReverse$1;\r\n },\r\n set_xAxisReverse: function(value) {\r\n if (this._xAxisReverse$1 !== value) {\r\n this.version++;\r\n this._xAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_yAxisReverse: function() {\r\n return this._yAxisReverse$1;\r\n },\r\n set_yAxisReverse: function(value) {\r\n if (this._yAxisReverse$1 !== value) {\r\n this.version++;\r\n this._yAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_zAxisReverse: function() {\r\n return this._zAxisReverse$1;\r\n },\r\n set_zAxisReverse: function(value) {\r\n if (this._zAxisReverse$1 !== value) {\r\n this.version++;\r\n this._zAxisReverse$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altType: function() {\r\n return this._altType$1;\r\n },\r\n set_altType: function(value) {\r\n if (this._altType$1 !== value) {\r\n this.version++;\r\n this._altType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerMix: function() {\r\n return this._markerMix$1;\r\n },\r\n set_markerMix: function(value) {\r\n if (this._markerMix$1 !== value) {\r\n this.version++;\r\n this._markerMix$1 = value;\r\n }\r\n return value;\r\n },\r\n get_raUnits: function() {\r\n return this._raUnits$1;\r\n },\r\n set_raUnits: function(value) {\r\n if (this._raUnits$1 !== value) {\r\n this.version++;\r\n this._raUnits$1 = value;\r\n }\r\n return value;\r\n },\r\n get__colorMap: function() {\r\n return this._colorMap$1;\r\n },\r\n set__colorMap: function(value) {\r\n if (this._colorMap$1 !== value) {\r\n this.version++;\r\n this._colorMap$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerColumn: function() {\r\n return this._markerColumn$1;\r\n },\r\n set_markerColumn: function(value) {\r\n if (this._markerColumn$1 !== value) {\r\n this.version++;\r\n this._markerColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_colorMapColumn: function() {\r\n return this._colorMapColumn$1;\r\n },\r\n set_colorMapColumn: function(value) {\r\n if (this._colorMapColumn$1 !== value) {\r\n this.version++;\r\n this._colorMapColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_plotType: function() {\r\n return this._plotType$1;\r\n },\r\n set_plotType: function(value) {\r\n if (this._plotType$1 !== value) {\r\n this.version++;\r\n this._plotType$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerIndex: function() {\r\n return this._markerIndex$1;\r\n },\r\n set_markerIndex: function(value) {\r\n if (this._markerIndex$1 !== value) {\r\n this.version++;\r\n this._markerIndex$1 = value;\r\n }\r\n return value;\r\n },\r\n get_showFarSide: function() {\r\n return this._showFarSide$1;\r\n },\r\n set_showFarSide: function(value) {\r\n if (this._showFarSide$1 !== value) {\r\n this.version++;\r\n this._showFarSide$1 = value;\r\n }\r\n return value;\r\n },\r\n get_markerScale: function() {\r\n return this._markerScale$1;\r\n },\r\n set_markerScale: function(value) {\r\n if (this._markerScale$1 !== value) {\r\n this.version++;\r\n this._markerScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altUnit: function() {\r\n return this._altUnit$1;\r\n },\r\n set_altUnit: function(value) {\r\n if (this._altUnit$1 !== value) {\r\n this.version++;\r\n this._altUnit$1 = value;\r\n }\r\n return value;\r\n },\r\n get_cartesianScale: function() {\r\n return this._cartesianScale$1;\r\n },\r\n set_cartesianScale: function(value) {\r\n if (this._cartesianScale$1 !== value) {\r\n this.version++;\r\n this._cartesianScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_cartesianCustomScale: function() {\r\n return this._cartesianCustomScale$1;\r\n },\r\n set_cartesianCustomScale: function(value) {\r\n if (this._cartesianCustomScale$1 !== value) {\r\n this.version++;\r\n this._cartesianCustomScale$1 = value;\r\n }\r\n return value;\r\n },\r\n get_altColumn: function() {\r\n return this.altColumn;\r\n },\r\n set_altColumn: function(value) {\r\n if (this.altColumn !== value) {\r\n this.version++;\r\n this.altColumn = value;\r\n }\r\n return value;\r\n },\r\n get_startDateColumn: function() {\r\n return this.startDateColumn;\r\n },\r\n set_startDateColumn: function(value) {\r\n if (this.startDateColumn !== value) {\r\n this.version++;\r\n this.startDateColumn = value;\r\n }\r\n return value;\r\n },\r\n get_endDateColumn: function() {\r\n return this.endDateColumn;\r\n },\r\n set_endDateColumn: function(value) {\r\n if (this.endDateColumn !== value) {\r\n this.version++;\r\n this.endDateColumn = value;\r\n }\r\n return value;\r\n },\r\n get_sizeColumn: function() {\r\n return this.sizeColumn;\r\n },\r\n set_sizeColumn: function(value) {\r\n if (this.sizeColumn !== value) {\r\n this.version++;\r\n this.sizeColumn = value;\r\n }\r\n return value;\r\n },\r\n get_nameColumn: function() {\r\n return this.nameColumn;\r\n },\r\n set_nameColumn: function(value) {\r\n if (this.nameColumn !== value) {\r\n this.version++;\r\n this.nameColumn = value;\r\n }\r\n return value;\r\n },\r\n get_hyperlinkFormat: function() {\r\n return this._hyperlinkFormat$1;\r\n },\r\n set_hyperlinkFormat: function(value) {\r\n if (this._hyperlinkFormat$1 !== value) {\r\n this.version++;\r\n this._hyperlinkFormat$1 = value;\r\n }\r\n return value;\r\n },\r\n get_hyperlinkColumn: function() {\r\n return this._hyperlinkColumn$1;\r\n },\r\n set_hyperlinkColumn: function(value) {\r\n if (this._hyperlinkColumn$1 !== value) {\r\n this.version++;\r\n this._hyperlinkColumn$1 = value;\r\n }\r\n return value;\r\n },\r\n get_scaleFactor: function() {\r\n return this.scaleFactor;\r\n },\r\n set_scaleFactor: function(value) {\r\n if (this.scaleFactor !== value) {\r\n this.version++;\r\n this.scaleFactor = value;\r\n }\r\n return value;\r\n },\r\n get_pointScaleType: function() {\r\n return this.pointScaleType;\r\n },\r\n set_pointScaleType: function(value) {\r\n if (this.pointScaleType !== value) {\r\n this.version++;\r\n this.pointScaleType = value;\r\n }\r\n return value;\r\n },\r\n draw: function(renderContext, opacity, flat) {\r\n var device = renderContext;\r\n if (this.bufferIsFlat !== flat) {\r\n this.cleanUp();\r\n this.bufferIsFlat = flat;\r\n }\r\n if (this.dirty) {\r\n this.prepVertexBuffer(renderContext, opacity);\r\n this.dirty = false;\r\n }\r\n var jNow = SpaceTimeController.get_jNow() - SpaceTimeController.utcToJulian(this.baseDate);\r\n var adjustedScale = this.scaleFactor;\r\n if (flat && this.astronomical && (this._markerScale$1 === 1)) {\r\n adjustedScale = (this.scaleFactor / (renderContext.viewCamera.zoom / 360));\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.decay = this.decay;\r\n this.triangleList2d.sky = this.get_astronomical();\r\n this.triangleList2d.timeSeries = this.timeSeries;\r\n this.triangleList2d.jNow = jNow;\r\n this.triangleList2d.draw(renderContext, opacity * this.get_opacity(), 1);\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.decay = this.decay;\r\n this.triangleList.sky = this.get_astronomical();\r\n this.triangleList.timeSeries = this.timeSeries;\r\n this.triangleList.jNow = jNow;\r\n this.triangleList.draw(renderContext, opacity * this.get_opacity(), 1);\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.depthBuffered = false;\r\n this.pointList.showFarSide = this.get_showFarSide();\r\n this.pointList.decay = (this.timeSeries) ? this.decay : 0;\r\n this.pointList.sky = this.get_astronomical();\r\n this.pointList.timeSeries = this.timeSeries;\r\n this.pointList.jNow = jNow;\r\n this.pointList.scale = (this._markerScale$1 === 1) ? adjustedScale : -adjustedScale;\r\n switch (this._plotType$1) {\r\n case 0:\r\n this.pointList.draw(renderContext, opacity * this.get_opacity(), false);\r\n break;\r\n case 2:\r\n case 1:\r\n case 3:\r\n this.pointList.drawTextured(renderContext, VoTableLayer.get__circleTexture$1().texture2d, opacity * this.get_opacity());\r\n break;\r\n case 5:\r\n case 4:\r\n this.pointList.drawTextured(renderContext, PushPin.getPushPinTexture(this._markerIndex$1), opacity * this.get_opacity());\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (this.lineList != null) {\r\n this.lineList.sky = this.get_astronomical();\r\n this.lineList.decay = this.decay;\r\n this.lineList.timeSeries = this.timeSeries;\r\n this.lineList.jNow = jNow;\r\n this.lineList.drawLines(renderContext, opacity * this.get_opacity());\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.sky = this.get_astronomical();\r\n this.lineList2d.decay = this.decay;\r\n this.lineList2d.timeSeries = this.timeSeries;\r\n this.lineList2d.showFarSide = this.get_showFarSide();\r\n this.lineList2d.jNow = jNow;\r\n this.lineList2d.drawLines(renderContext, opacity * this.get_opacity());\r\n }\r\n return true;\r\n },\r\n initFromXml: function(node) {\r\n Layer.prototype.initFromXml.call(this, node);\r\n },\r\n cleanUp: function() {\r\n this.dirty = true;\r\n if (this.lineList != null) {\r\n this.lineList.clear();\r\n }\r\n if (this.lineList2d != null) {\r\n this.lineList2d.clear();\r\n }\r\n if (this.triangleList2d != null) {\r\n this.triangleList2d.clear();\r\n }\r\n if (this.pointList != null) {\r\n this.pointList.clear();\r\n }\r\n if (this.triangleList != null) {\r\n this.triangleList.clear();\r\n }\r\n },\r\n dynamicUpdate: function() {\r\n return false;\r\n },\r\n addFilesToCabinet: function(fc) {\r\n var fName = this._filename$1;\r\n var fileName = fc.tempDirectory + ss.format('{0}\\\\{1}.txt', fc.get_packageID(), this.id.toString());\r\n var path = fName.substring(0, fName.lastIndexOf('\\\\') + 1);\r\n var path2 = fileName.substring(0, fileName.lastIndexOf('\\\\') + 1);\r\n },\r\n loadData: function(tourDoc, filename) {\r\n var $this = this;\r\n\r\n var blob = tourDoc.getFileBlob(filename);\r\n var doc = new FileReader();\r\n doc.onloadend = function(ee) {\r\n var data = ss.safeCast(doc.result, String);\r\n $this._table$1 = VoTable.loadFromString(data);\r\n $this.set_lngColumn($this._table$1.getRAColumn().index);\r\n $this.set_latColumn($this._table$1.getDecColumn().index);\r\n };\r\n doc.readAsText(blob);\r\n },\r\n canCopyToClipboard: function() {\r\n return true;\r\n },\r\n copyToClipboard: function() {\r\n },\r\n findClosest: function(target, distance, defaultPlace, astronomical) {\r\n var searchPoint = Coordinates.geoTo3dDouble(target.get_lat(), target.get_lng());\r\n var dist;\r\n if (defaultPlace != null) {\r\n var testPoint = Coordinates.raDecTo3dAu(defaultPlace.get_RA(), -defaultPlace.get_dec(), -1);\r\n dist = Vector3d.subtractVectors(searchPoint, testPoint);\r\n distance = dist.length();\r\n }\r\n var closestItem = -1;\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this.positions);\r\n while ($enum1.moveNext()) {\r\n var point = $enum1.current;\r\n dist = Vector3d.subtractVectors(searchPoint, point);\r\n if (dist.length() < distance) {\r\n distance = dist.length();\r\n closestItem = index;\r\n }\r\n index++;\r\n }\r\n if (closestItem === -1) {\r\n return defaultPlace;\r\n }\r\n var pnt = Coordinates.cartesianToSpherical2(this.positions[closestItem]);\r\n var name = this._table$1.rows[closestItem].columnData[this.nameColumn].toString();\r\n if (this.nameColumn === this.startDateColumn || this.nameColumn === this.endDateColumn) {\r\n name = SpreadSheetLayer.parseDate(name).toString();\r\n }\r\n if (ss.emptyString(name)) {\r\n name = ss.format('RA={0}, Dec={1}', Coordinates.formatHMS(pnt.get_RA()), Coordinates.formatDMS(pnt.get_dec()));\r\n }\r\n var place = Place.create(name, pnt.get_lat(), pnt.get_RA(), 268435456, '', 2, -1);\r\n var rowData = {};\r\n for (var i = 0; i < ss.keyCount(this._table$1.columns); i++) {\r\n var colValue = this._table$1.rows[closestItem].get_item(i).toString();\r\n if (i === this.startDateColumn || i === this.endDateColumn) {\r\n colValue = SpreadSheetLayer.parseDate(colValue).toString();\r\n }\r\n if (!ss.keyExists(rowData, this._table$1.column[i].name) && !ss.emptyString(this._table$1.column[i].name)) {\r\n rowData[this._table$1.column[i].name] = colValue;\r\n }\r\n else {\r\n rowData['Column' + i.toString()] = colValue;\r\n }\r\n }\r\n place.set_tag(rowData);\r\n return place;\r\n },\r\n prepVertexBuffer: function(renderContext, opacity) {\r\n var col = this._table$1.getColumnByUcd('meta.id');\r\n if (col == null) {\r\n col = this._table$1.column[0];\r\n }\r\n var siapSet = this.isSiapResultSet();\r\n if (this.pointList == null) {\r\n this.pointList = new PointList(renderContext);\r\n }\r\n if (this.lineList2d == null) {\r\n this.lineList2d = new LineList();\r\n }\r\n this.lineList2d.clear();\r\n var stcsCol = this._table$1.getColumnByUcd('phys.area;obs.field');\r\n if (stcsCol == null && ss.keyExists(this._table$1.columns, 'regionSTCS')) {\r\n stcsCol = this._table$1.columns['regionSTCS'];\r\n }\r\n if (!this.get_plotType()) {\r\n this.set_markerScale(1);\r\n }\r\n else {\r\n this.set_markerScale(0);\r\n }\r\n var vertList = [];\r\n var indexList = [];\r\n var lastItem = new TimeSeriesPointVertex();\r\n this.positions.length = 0;\r\n var currentIndex = 0;\r\n var color = Color.fromArgb(ss.truncate((opacity * this.get_color().a)), this.get_color().r, this.get_color().g, this.get_color().b);\r\n this.pointScaleType = 4;\r\n var $enum1 = ss.enumerate(this._table$1.rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n try {\r\n if (this.lngColumn > -1 && this.latColumn > -1) {\r\n var ra = parseFloat(row.get_item(this.get_lngColumn()).toString());\r\n var dec = parseFloat(row.get_item(this.get_latColumn()).toString());\r\n var position = Coordinates.geoTo3dDouble(dec, ra);\r\n lastItem.position = position;\r\n this.positions.push(lastItem.position);\r\n lastItem.set_color(color);\r\n if (this.sizeColumn > -1) {\r\n try {\r\n if (!this.get_markerScale()) {\r\n lastItem.pointSize = 20;\r\n }\r\n else {\r\n switch (this.pointScaleType) {\r\n case 0:\r\n lastItem.pointSize = parseFloat(row.get_item(this.sizeColumn).toString());\r\n break;\r\n case 2:\r\n lastItem.pointSize = Math.log(parseFloat(row.get_item(this.sizeColumn).toString()));\r\n break;\r\n case 1:\r\n lastItem.pointSize = Math.pow(2, parseFloat(row.get_item(this.sizeColumn).toString()));\r\n break;\r\n case 4:\r\n var size = parseFloat(row.get_item(this.sizeColumn).toString());\r\n lastItem.pointSize = (40 / Math.pow(1.6, size)) * 10;\r\n break;\r\n case 3:\r\n lastItem.pointSize = 1;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n catch ($e2) {\r\n lastItem.pointSize = 0.01;\r\n }\r\n }\r\n else {\r\n if (!this.get_markerScale()) {\r\n lastItem.pointSize = 20;\r\n }\r\n else {\r\n lastItem.pointSize = Math.pow(2, 1) * 100;\r\n }\r\n }\r\n if (this.startDateColumn > -1) {\r\n var dateTime = ss.date(row.get_item(this.startDateColumn).toString());\r\n lastItem.tu = SpaceTimeController.utcToJulian(dateTime);\r\n lastItem.tv = 0;\r\n }\r\n vertList.push(lastItem);\r\n this.pointList.addPoint(lastItem.position, lastItem.color, new Dates(lastItem.tu, lastItem.tv), lastItem.pointSize);\r\n currentIndex++;\r\n }\r\n if (siapSet && stcsCol != null) {\r\n this._addSiapStcRow$1(stcsCol.name, row, row === this._table$1.selectedRow);\r\n }\r\n }\r\n catch ($e3) {\r\n }\r\n this.lines = false;\r\n }\r\n if (siapSet && stcsCol != null) {\r\n this._addSiapStcRow$1(stcsCol.name, this._table$1.selectedRow, true);\r\n }\r\n return true;\r\n },\r\n _addSiapStcRow$1: function(stcsColName, row, selected) {\r\n var stcs = ss.replaceString(row.getColumnData(stcsColName).toString(), ' ', ' ');\r\n var col = Color.fromArgb(120, 255, 255, 255);\r\n if (selected) {\r\n col = Colors.get_yellow();\r\n }\r\n if (ss.startsWith(stcs, 'Polygon J2000')) {\r\n var parts = stcs.split(' ');\r\n var len = parts.length;\r\n var index = 0;\r\n while (index < len) {\r\n if (parts[index] === 'Polygon') {\r\n index += 2;\r\n var lastPoint = new Vector3d();\r\n var firstPoint = new Vector3d();\r\n var start = true;\r\n for (var i = index; i < len; i += 2) {\r\n if (parts[i] === 'Polygon') {\r\n start = true;\r\n break;\r\n }\r\n else {\r\n var Xcoord = Coordinates.parseRA(parts[i], true) * 15 + 180;\r\n var Ycoord = Coordinates.parseDec(parts[i + 1]);\r\n var pnt = Coordinates.geoTo3dDouble(Ycoord, Xcoord);\r\n if (!start) {\r\n this.lineList2d.addLine(lastPoint, pnt, col, new Dates(0, 0));\r\n }\r\n else {\r\n firstPoint = pnt;\r\n start = false;\r\n }\r\n lastPoint = pnt;\r\n }\r\n index += 2;\r\n }\r\n if (len > 4) {\r\n this.lineList2d.addLine(firstPoint, lastPoint, col, new Dates(0, 0));\r\n }\r\n }\r\n }\r\n }\r\n },\r\n isSiapResultSet: function() {\r\n return this._table$1.getColumnByUcd('vox:image.title') != null && this._table$1.getColumnByUcd('VOX:Image.AccessReference') != null;\r\n },\r\n get_header: function() {\r\n var header = new Array(ss.keyCount(this._table$1.columns));\r\n var index = 0;\r\n var $enum1 = ss.enumerate(this._table$1.column);\r\n while ($enum1.moveNext()) {\r\n var col = $enum1.current;\r\n header[index++] = col.name;\r\n }\r\n return header;\r\n },\r\n get_table: function() {\r\n return this._table$1;\r\n },\r\n set_table: function(value) {\r\n this._table$1 = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.MercatorTile\r\n\r\n function MercatorTile() {\r\n this._tileDegrees$1 = 0;\r\n this._latMin$1 = 0;\r\n this._latMax$1 = 0;\r\n this._lngMin$1 = 0;\r\n this._lngMax$1 = 0;\r\n this._subDivisionLevel$1 = 32;\r\n Tile.call(this);\r\n }\r\n MercatorTile.create = function(level, X, Y, dataset, parent) {\r\n var temp = new MercatorTile();\r\n temp.parent = parent;\r\n temp.level = level;\r\n temp.tileX = X;\r\n temp.tileY = Y;\r\n temp.dataset = dataset;\r\n temp.computeBoundingSphere();\r\n return temp;\r\n };\r\n MercatorTile.getCentrePointOffsetAsTileRatio = function(lat, lon, zoom) {\r\n var metersX = MercatorTile.absoluteLonToMetersAtZoom(lon, zoom);\r\n var relativeXIntoCell = (metersX / 256) - Math.floor(metersX / 256);\r\n var metersY = MercatorTile.absoluteLatToMetersAtZoom(lat, zoom);\r\n var relativeYIntoCell = (metersY / 256) - Math.floor(metersY / 256);\r\n return Vector2d.create(relativeXIntoCell, relativeYIntoCell);\r\n };\r\n MercatorTile.relativeMetersToLatAtZoom = function(Y, zoom) {\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n var metersY = Y * metersPerPixel;\r\n return MercatorTile._radToDeg$1(Math.PI / 2 - 2 * Math.atan(Math.exp(0 - metersY / 6378137)));\r\n };\r\n MercatorTile.relativeMetersToLonAtZoom = function(X, zoom) {\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n var metersX = X * metersPerPixel;\r\n return MercatorTile._radToDeg$1(metersX / 6378137);\r\n };\r\n MercatorTile.absoluteLatToMetersAtZoom = function(latitude, zoom) {\r\n var sinLat = Math.sin(MercatorTile._degToRad$1(latitude));\r\n var metersY = 6378137 / 2 * Math.log((1 + sinLat) / (1 - sinLat));\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n return ss.truncate((Math.round(20037508 - metersY) / metersPerPixel));\r\n };\r\n MercatorTile.absoluteMetersToLatAtZoom = function(Y, zoom) {\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n var metersY = 20037508 - Y * metersPerPixel;\r\n return MercatorTile._radToDeg$1(Math.PI / 2 - 2 * Math.atan(Math.exp(0 - metersY / 6378137)));\r\n };\r\n MercatorTile.absoluteLonToMetersAtZoom = function(longitude, zoom) {\r\n var metersX = 6378137 * MercatorTile._degToRad$1(longitude);\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n return ss.truncate(((metersX + 20037508) / metersPerPixel));\r\n };\r\n MercatorTile.absoluteMetersToLonAtZoom = function(X, zoom) {\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n var metersX = X * metersPerPixel - 20037508;\r\n return MercatorTile._radToDeg$1(metersX / 6378137);\r\n };\r\n MercatorTile.absoluteLonToMetersAtZoomTile = function(longitude, zoom, tileX) {\r\n var metersX = 6378137 * MercatorTile._degToRad$1(longitude);\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n return ss.truncate(((metersX + 20037508) / metersPerPixel));\r\n };\r\n MercatorTile.absoluteLatToMetersAtZoomTile = function(latitude, zoom, tileX) {\r\n var sinLat = Math.sin(MercatorTile._degToRad$1(latitude));\r\n var metersY = 6378137 / 2 * Math.log((1 + sinLat) / (1 - sinLat));\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n return ss.truncate((Math.round(20037508 - metersY) / metersPerPixel));\r\n };\r\n MercatorTile.absoluteMetersToLonAtZoomByTileY = function(X, zoom, tileY) {\r\n var metersPerPixel = MercatorTile.metersPerPixel2(zoom);\r\n var metersX = X * metersPerPixel - 20037508;\r\n return MercatorTile._radToDeg$1(metersX / 6378137);\r\n };\r\n MercatorTile._degToRad$1 = function(deg) {\r\n return (deg * Math.PI / 180);\r\n };\r\n MercatorTile.metersPerPixel2 = function(zoom) {\r\n return (156543 / (1 << zoom));\r\n };\r\n MercatorTile._radToDeg$1 = function(rad) {\r\n return (rad * 180 / Math.PI);\r\n };\r\n var MercatorTile$ = {\r\n computeBoundingSphere: function() {\r\n this._tileDegrees$1 = 360 / Math.pow(2, this.level);\r\n this._latMin$1 = MercatorTile.absoluteMetersToLatAtZoom(this.tileY * 256, this.level);\r\n this._latMax$1 = MercatorTile.absoluteMetersToLatAtZoom((this.tileY + 1) * 256, this.level);\r\n this._lngMin$1 = ((this.tileX * this._tileDegrees$1) - 180);\r\n this._lngMax$1 = ((((this.tileX + 1)) * this._tileDegrees$1) - 180);\r\n var latCenter = (this._latMin$1 + this._latMax$1) / 2;\r\n var lngCenter = (this._lngMin$1 + this._lngMax$1) / 2;\r\n this.sphereCenter = this.geoTo3d(latCenter, lngCenter, false);\r\n this.topLeft = this.geoTo3d(this._latMin$1, this._lngMin$1, false);\r\n this.bottomRight = this.geoTo3d(this._latMax$1, this._lngMax$1, false);\r\n this.topRight = this.geoTo3d(this._latMin$1, this._lngMax$1, false);\r\n this.bottomLeft = this.geoTo3d(this._latMax$1, this._lngMin$1, false);\r\n if (!this.tileY) {\r\n this.topLeft = Vector3d.create(0, 1, 0);\r\n this.topRight = Vector3d.create(0, 1, 0);\r\n }\r\n if (this.tileY === Math.pow(2, this.level) - 1) {\r\n this.bottomRight = Vector3d.create(0, -1, 0);\r\n this.bottomLeft = Vector3d.create(0, -1, 0);\r\n }\r\n var distVect = this.topLeft;\r\n distVect.subtract(this.sphereCenter);\r\n this.sphereRadius = distVect.length();\r\n distVect = this.bottomRight;\r\n distVect.subtract(this.sphereCenter);\r\n var len = distVect.length();\r\n if (this.sphereRadius < len) {\r\n this.sphereRadius = len;\r\n }\r\n this._tileDegrees$1 = Math.abs(this._latMax$1 - this._latMin$1);\r\n },\r\n isPointInTile: function(lat, lng) {\r\n if (!this.demReady || this.demData == null || lat < Math.min(this._latMin$1, this._latMax$1) || lat > Math.max(this._latMax$1, this._latMin$1) || lng < Math.min(this._lngMin$1, this._lngMax$1) || lng > Math.max(this._lngMin$1, this._lngMax$1)) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n getSurfacePointAltitude: function(lat, lng, meters) {\r\n if (this.level < Tile.lastDeepestLevel) {\r\n var $enum1 = ss.enumerate(this.children);\r\n while ($enum1.moveNext()) {\r\n var child = $enum1.current;\r\n if (child != null) {\r\n if (child.isPointInTile(lat, lng)) {\r\n var retVal = child.getSurfacePointAltitude(lat, lng, meters);\r\n if (!!retVal) {\r\n return retVal;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var alt = this._getAltitudeAtLatLng$1(lat, lng, (meters) ? 1 : this.get__demScaleFactor());\r\n return alt;\r\n },\r\n _getAltitudeAtLatLng$1: function(lat, lng, scaleFactor) {\r\n var height = Math.abs(this._latMax$1 - this._latMin$1);\r\n var width = Math.abs(this._lngMax$1 - this._lngMin$1);\r\n var yy = ((lat - Math.min(this._latMax$1, this._latMin$1)) / height * 32);\r\n var xx = ((lng - Math.min(this._lngMax$1, this._lngMin$1)) / width * 32);\r\n var indexY = Math.min(31, ss.truncate(yy));\r\n var indexX = Math.min(31, ss.truncate(xx));\r\n var ha = xx - indexX;\r\n var va = yy - indexY;\r\n var ul = this.demData[indexY * 33 + indexX];\r\n var ur = this.demData[indexY * 33 + (indexX + 1)];\r\n var ll = this.demData[(indexY + 1) * 33 + indexX];\r\n var lr = this.demData[(indexY + 1) * 33 + (indexX + 1)];\r\n var top = ul * (1 - ha) + ha * ur;\r\n var bottom = ll * (1 - ha) + ha * lr;\r\n var val = top * (1 - va) + va * bottom;\r\n return val / scaleFactor;\r\n },\r\n createGeometry: function(renderContext) {\r\n Tile.prototype.createGeometry.call(this, renderContext);\r\n if (this.geometryCreated) {\r\n return true;\r\n }\r\n this.geometryCreated = true;\r\n if (Tile.uvMultiple === 256) {\r\n if (!this.dataset.get_dataSetType() || this.dataset.get_dataSetType() === 1) {\r\n this._subDivisionLevel$1 = Math.max(2, (6 - this.level) * 2);\r\n }\r\n }\r\n for (var i = 0; i < 4; i++) {\r\n this._renderTriangleLists[i] = [];\r\n }\r\n var lat, lng;\r\n var index = 0;\r\n var tileDegrees = 360 / Math.pow(2, this.level);\r\n this._latMin$1 = MercatorTile.absoluteMetersToLatAtZoom(this.tileY * 256, this.level);\r\n this._latMax$1 = MercatorTile.absoluteMetersToLatAtZoom((this.tileY + 1) * 256, this.level);\r\n this._lngMin$1 = ((this.tileX * tileDegrees) - 180);\r\n this._lngMax$1 = ((((this.tileX + 1)) * tileDegrees) - 180);\r\n var latCenter = MercatorTile.absoluteMetersToLatAtZoom(((this.tileY * 2) + 1) * 256, this.level + 1);\r\n this.topLeft = this.geoTo3d(this._latMin$1, this._lngMin$1, false);\r\n this.bottomRight = this.geoTo3d(this._latMax$1, this._lngMax$1, false);\r\n this.topRight = this.geoTo3d(this._latMin$1, this._lngMax$1, false);\r\n this.bottomLeft = this.geoTo3d(this._latMax$1, this._lngMin$1, false);\r\n var verts = new Array((this._subDivisionLevel$1 + 1) * (this._subDivisionLevel$1 + 1));\r\n tileDegrees = this._lngMax$1 - this._lngMin$1;\r\n var dGrid = (tileDegrees / this._subDivisionLevel$1);\r\n var x1, y1;\r\n var textureStep = 1 / this._subDivisionLevel$1;\r\n var latDegrees = this._latMax$1 - latCenter;\r\n for (y1 = 0; y1 < this._subDivisionLevel$1 / 2; y1++) {\r\n if (y1 !== this._subDivisionLevel$1 / 2) {\r\n lat = this._latMax$1 - (2 * textureStep * latDegrees * y1);\r\n }\r\n else {\r\n lat = latCenter;\r\n }\r\n for (x1 = 0; x1 <= this._subDivisionLevel$1; x1++) {\r\n if (x1 !== this._subDivisionLevel$1) {\r\n lng = this._lngMin$1 + (textureStep * tileDegrees * x1);\r\n }\r\n else {\r\n lng = this._lngMax$1;\r\n }\r\n index = y1 * (this._subDivisionLevel$1 + 1) + x1;\r\n verts[index] = new PositionTexture();\r\n verts[index].position = this.geoTo3dWithAlt(lat, lng, false, true);\r\n verts[index].tu = (x1 * textureStep) * Tile.uvMultiple;\r\n verts[index].tv = ((MercatorTile.absoluteLatToMetersAtZoom(lat, this.level) - (this.tileY * 256)) / 256) * Tile.uvMultiple;\r\n this.demIndex++;\r\n }\r\n }\r\n latDegrees = this._latMin$1 - latCenter;\r\n for (y1 = this._subDivisionLevel$1 / 2; y1 <= this._subDivisionLevel$1; y1++) {\r\n if (y1 !== this._subDivisionLevel$1) {\r\n lat = latCenter + (2 * textureStep * latDegrees * (y1 - (this._subDivisionLevel$1 / 2)));\r\n }\r\n else {\r\n lat = this._latMin$1;\r\n }\r\n for (x1 = 0; x1 <= this._subDivisionLevel$1; x1++) {\r\n if (x1 !== this._subDivisionLevel$1) {\r\n lng = this._lngMin$1 + (textureStep * tileDegrees * x1);\r\n }\r\n else {\r\n lng = this._lngMax$1;\r\n }\r\n index = y1 * (this._subDivisionLevel$1 + 1) + x1;\r\n verts[index] = new PositionTexture();\r\n verts[index].position = this.geoTo3dWithAlt(lat, lng, false, true);\r\n verts[index].tu = (x1 * textureStep) * Tile.uvMultiple;\r\n verts[index].tv = ((MercatorTile.absoluteLatToMetersAtZoom(lat, this.level) - (this.tileY * 256)) / 256) * Tile.uvMultiple;\r\n this.demIndex++;\r\n }\r\n }\r\n if (!this.tileY) {\r\n y1 = this._subDivisionLevel$1;\r\n for (x1 = 0; x1 <= this._subDivisionLevel$1; x1++) {\r\n index = y1 * (this._subDivisionLevel$1 + 1) + x1;\r\n verts[index].position = Vector3d.create(0, 1, 0);\r\n }\r\n }\r\n if (this.tileY === Math.pow(2, this.level) - 1) {\r\n y1 = 0;\r\n for (x1 = 0; x1 <= this._subDivisionLevel$1; x1++) {\r\n index = y1 * (this._subDivisionLevel$1 + 1) + x1;\r\n verts[index].position = Vector3d.create(0, -1, 0);\r\n }\r\n }\r\n this.triangleCount = this._subDivisionLevel$1 * this._subDivisionLevel$1 * 2;\r\n var quarterDivisions = this._subDivisionLevel$1 / 2;\r\n var part = 0;\r\n if (renderContext.gl == null) {\r\n for (var y2 = 0; y2 < 2; y2++) {\r\n for (var x2 = 0; x2 < 2; x2++) {\r\n index = 0;\r\n for (y1 = (quarterDivisions * y2); y1 < (quarterDivisions * (y2 + 1)); y1++) {\r\n for (x1 = (quarterDivisions * x2); x1 < (quarterDivisions * (x2 + 1)); x1++) {\r\n var p1;\r\n var p2;\r\n var p3;\r\n p1 = verts[(y1 * (this._subDivisionLevel$1 + 1) + x1)];\r\n p2 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1)];\r\n p3 = verts[(y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n var tri = RenderTriangle.create(p1, p2, p3, this.texture, this.level);\r\n this._renderTriangleLists[part].push(tri);\r\n p1 = verts[(y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n p2 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1)];\r\n p3 = verts[((y1 + 1) * (this._subDivisionLevel$1 + 1) + (x1 + 1))];\r\n tri = RenderTriangle.create(p1, p2, p3, this.texture, this.level);\r\n this._renderTriangleLists[part].push(tri);\r\n }\r\n }\r\n part++;\r\n }\r\n }\r\n }\r\n else {\r\n this._vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this._vertexBuffer);\r\n var f32array = new Float32Array(verts.length * 5);\r\n var buffer = f32array;\r\n index = 0;\r\n var $enum1 = ss.enumerate(verts);\r\n while ($enum1.moveNext()) {\r\n var pt = $enum1.current;\r\n index = this.addVertex(buffer, index, pt);\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n for (var y2 = 0; y2 < 2; y2++) {\r\n for (var x2 = 0; x2 < 2; x2++) {\r\n var ui16array = new Uint16Array(this.triangleCount * 3);\r\n var indexArray = ui16array;\r\n index = 0;\r\n for (y1 = (quarterDivisions * y2); y1 < (quarterDivisions * (y2 + 1)); y1++) {\r\n for (x1 = (quarterDivisions * x2); x1 < (quarterDivisions * (x2 + 1)); x1++) {\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n indexArray[index++] = (y1 * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + x1);\r\n indexArray[index++] = ((y1 + 1) * (this._subDivisionLevel$1 + 1) + (x1 + 1));\r\n }\r\n }\r\n this._indexBuffers[part] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this._indexBuffers[part]);\r\n Tile.prepDevice.bufferData(34963, ui16array, 35044);\r\n part++;\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n _getDemSample$1: function(x, y) {\r\n return this.demData[(32 - y) * 33 + x];\r\n },\r\n createDemFromParent: function() {\r\n var parent = ss.safeCast(this.parent, MercatorTile);\r\n if (parent == null || parent.demData == null) {\r\n return false;\r\n }\r\n var offsetX = (((this.tileX % 2) === 1) ? 16 : 0);\r\n var offsetY = (((this.tileY % 2) === 1) ? 16 : 0);\r\n this.demData = new Array(this.demSize);\r\n for (var y = 0; y < 33; y += 2) {\r\n var copy = true;\r\n for (var x = 0; x < 33; x++) {\r\n if (copy) {\r\n this.demData[(32 - y) * 33 + x] = parent._getDemSample$1((x / 2) + offsetX, (y / 2) + offsetY);\r\n }\r\n else {\r\n this.demData[(32 - y) * 33 + x] = ((parent._getDemSample$1((x / 2) + offsetX, (y / 2) + offsetY) + parent._getDemSample$1(((x / 2) + offsetX) + 1, (y / 2) + offsetY)) / 2);\r\n }\r\n copy = !copy;\r\n }\r\n }\r\n for (var y = 1; y < 33; y += 2) {\r\n for (var x = 0; x < 33; x++) {\r\n this.demData[(32 - y) * 33 + x] = ((this._getDemSample$1(x, y - 1) + this._getDemSample$1(x, y + 1)) / 2);\r\n }\r\n }\r\n var $enum1 = ss.enumerate(this.demData);\r\n while ($enum1.moveNext()) {\r\n var sample = $enum1.current;\r\n this.demAverage += sample;\r\n }\r\n this.demAverage /= this.demData.length;\r\n this.demReady = true;\r\n return true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.PlotTile\r\n\r\n function PlotTile() {\r\n this._topDown$1 = true;\r\n this.backslash = false;\r\n this._vertexList$1 = null;\r\n this._childTriangleList$1 = null;\r\n this._stars$1 = [];\r\n this._subDivisionLevel$1 = 4;\r\n this._subDivided$1 = false;\r\n Tile.call(this);\r\n }\r\n PlotTile.create = function(level, xc, yc, dataset, parent) {\r\n var temp = new PlotTile();\r\n temp.parent = parent;\r\n temp.level = level;\r\n temp.tileX = xc;\r\n temp.tileY = yc;\r\n temp.dataset = dataset;\r\n temp._topDown$1 = !dataset.get_bottomsUp();\r\n if (temp.tileX !== xc) {\r\n alert('bad');\r\n }\r\n if (!!dataset.get_meanRadius()) {\r\n temp.set__demScaleFactor(dataset.get_meanRadius());\r\n }\r\n else {\r\n if (!dataset.get_dataSetType()) {\r\n temp.set__demScaleFactor(6371000);\r\n }\r\n else {\r\n temp.set__demScaleFactor(3396010);\r\n }\r\n }\r\n temp.computeBoundingSphere();\r\n return temp;\r\n };\r\n var PlotTile$ = {\r\n computeBoundingSphere: function() {\r\n this._initializeGrids$1();\r\n this.topLeft = this.bounds[0 + 3 * 0].position.copy();\r\n this.bottomRight = this.bounds[2 + 3 * 2].position.copy();\r\n this.topRight = this.bounds[2 + 3 * 0].position.copy();\r\n this.bottomLeft = this.bounds[0 + 3 * 2].position.copy();\r\n this.calcSphere();\r\n },\r\n renderPart: function(renderContext, part, opacity, combine) {\r\n if (renderContext.gl != null) {\r\n }\r\n else {\r\n if (!part) {\r\n var $enum1 = ss.enumerate(this._stars$1);\r\n while ($enum1.moveNext()) {\r\n var star = $enum1.current;\r\n var radDec = 25 / Math.pow(1.6, star.magnitude);\r\n Planets.drawPointPlanet(renderContext, star.position, radDec, star.col, false);\r\n }\r\n }\r\n }\r\n },\r\n requestImage: function() {\r\n if (!this.downloading && !this.readyToRender) {\r\n this.downloading = true;\r\n this._webFile$1 = new WebFile(URLHelpers.singleton.rewrite(this.get_URL(), 0));\r\n this._webFile$1.onStateChange = ss.bind('fileStateChange', this);\r\n this._webFile$1.send();\r\n }\r\n },\r\n fileStateChange: function() {\r\n if (this._webFile$1.get_state() === 2) {\r\n this.downloading = false;\r\n this.readyToRender = false;\r\n this.errored = true;\r\n this.requestPending = false;\r\n TileCache.removeFromQueue(this.get_key(), true);\r\n }\r\n else if (this._webFile$1.get_state() === 1) {\r\n this.texReady = true;\r\n this.downloading = false;\r\n this.errored = false;\r\n this.readyToRender = this.texReady && (this.demReady || !this.demTile);\r\n this.requestPending = false;\r\n TileCache.removeFromQueue(this.get_key(), true);\r\n this._loadData$1(this._webFile$1.getText());\r\n }\r\n },\r\n _loadData$1: function(data) {\r\n var rows = ss.replaceString(data, '\\r\\n', '\\n').split('\\n');\r\n var firstRow = true;\r\n var type = 0;\r\n var star = null;\r\n var $enum1 = ss.enumerate(rows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n if (firstRow) {\r\n firstRow = false;\r\n continue;\r\n }\r\n if (ss.trim(row).length > 5) {\r\n star = new Star(row);\r\n star.position = Coordinates.raDecTo3dAu(star.RA, star.dec, 1);\r\n this._stars$1.push(star);\r\n }\r\n }\r\n },\r\n isPointInTile: function(lat, lng) {\r\n if (!this.level) {\r\n return true;\r\n }\r\n if (this.level === 1) {\r\n if ((lng >= 0 && lng <= 90) && (!this.tileX && this.tileY === 1)) {\r\n return true;\r\n }\r\n if ((lng > 90 && lng <= 180) && (this.tileX === 1 && this.tileY === 1)) {\r\n return true;\r\n }\r\n if ((lng < 0 && lng >= -90) && (!this.tileX && !this.tileY)) {\r\n return true;\r\n }\r\n if ((lng < -90 && lng >= -180) && (this.tileX === 1 && !this.tileY)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n if (!this.demReady || this.demData == null) {\r\n return false;\r\n }\r\n var testPoint = Coordinates.geoTo3dDouble(-lat, lng);\r\n var top = this._isLeftOfHalfSpace$1(this.topLeft.copy(), this.topRight.copy(), testPoint);\r\n var right = this._isLeftOfHalfSpace$1(this.topRight.copy(), this.bottomRight.copy(), testPoint);\r\n var bottom = this._isLeftOfHalfSpace$1(this.bottomRight.copy(), this.bottomLeft.copy(), testPoint);\r\n var left = this._isLeftOfHalfSpace$1(this.bottomLeft.copy(), this.topLeft.copy(), testPoint);\r\n if (top && right && bottom && left) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n _isLeftOfHalfSpace$1: function(pntA, pntB, pntTest) {\r\n pntA.normalize();\r\n pntB.normalize();\r\n var cross = Vector3d.cross(pntA, pntB);\r\n var dot = Vector3d.dot(cross, pntTest);\r\n return dot < 0;\r\n },\r\n _initializeGrids$1: function() {\r\n this._vertexList$1 = [];\r\n this._childTriangleList$1 = new Array(4);\r\n this._childTriangleList$1[0] = [];\r\n this._childTriangleList$1[1] = [];\r\n this._childTriangleList$1[2] = [];\r\n this._childTriangleList$1[3] = [];\r\n this.bounds = new Array(9);\r\n if (this.level > 0) {\r\n if (this.parent == null) {\r\n this.parent = TileCache.getTile(this.level - 1, this.tileX / 2, this.tileY / 2, this.dataset, null);\r\n }\r\n var parent = this.parent;\r\n var xIndex = this.tileX % 2;\r\n var yIndex = this.tileY % 2;\r\n if (this.level > 1) {\r\n this.backslash = parent.backslash;\r\n }\r\n else {\r\n this.backslash = (xIndex === 1 ^ yIndex === 1) === 1;\r\n }\r\n this.bounds[0 + 3 * 0] = parent.bounds[xIndex + 3 * yIndex].copy();\r\n this.bounds[1 + 3 * 0] = this._midpoint$1(parent.bounds[xIndex + 3 * yIndex], parent.bounds[xIndex + 1 + 3 * yIndex]);\r\n this.bounds[2 + 3 * 0] = parent.bounds[xIndex + 1 + 3 * yIndex].copy();\r\n this.bounds[0 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 3 * yIndex], parent.bounds[xIndex + 3 * (yIndex + 1)]);\r\n if (this.backslash) {\r\n this.bounds[1 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 3 * yIndex], parent.bounds[xIndex + 1 + 3 * (yIndex + 1)]);\r\n }\r\n else {\r\n this.bounds[1 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 1 + 3 * yIndex], parent.bounds[xIndex + 3 * (yIndex + 1)]);\r\n }\r\n this.bounds[2 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 1 + 3 * yIndex], parent.bounds[xIndex + 1 + 3 * (yIndex + 1)]);\r\n this.bounds[0 + 3 * 2] = parent.bounds[xIndex + 3 * (yIndex + 1)].copy();\r\n this.bounds[1 + 3 * 2] = this._midpoint$1(parent.bounds[xIndex + 3 * (yIndex + 1)], parent.bounds[xIndex + 1 + 3 * (yIndex + 1)]);\r\n this.bounds[2 + 3 * 2] = parent.bounds[xIndex + 1 + 3 * (yIndex + 1)].copy();\r\n this.bounds[0 + 3 * 0].tu = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 0].tv = 0 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 0].tu = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 0].tv = 0 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 0].tu = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 0].tv = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 1].tu = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 1].tv = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 1].tu = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 1].tv = 0.5 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 1].tu = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 1].tv = 0.5 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 2].tu = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 2].tv = 1 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 2].tu = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 2].tv = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 2].tu = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 2].tv = 1 * Tile.uvMultiple;\r\n }\r\n else {\r\n this.bounds[0 + 3 * 0] = PositionTexture.create(0, -1, 0, 0, 0);\r\n this.bounds[1 + 3 * 0] = PositionTexture.create(0, 0, 1, 0.5, 0);\r\n this.bounds[2 + 3 * 0] = PositionTexture.create(0, -1, 0, 1, 0);\r\n this.bounds[0 + 3 * 1] = PositionTexture.create(-1, 0, 0, 0, 0.5);\r\n this.bounds[1 + 3 * 1] = PositionTexture.create(0, 1, 0, 0.5, 0.5);\r\n this.bounds[2 + 3 * 1] = PositionTexture.create(1, 0, 0, 1, 0.5);\r\n this.bounds[0 + 3 * 2] = PositionTexture.create(0, -1, 0, 0, 1);\r\n this.bounds[1 + 3 * 2] = PositionTexture.create(0, 0, -1, 0.5, 1);\r\n this.bounds[2 + 3 * 2] = PositionTexture.create(0, -1, 0, 1, 1);\r\n }\r\n },\r\n _midpoint$1: function(positionNormalTextured, positionNormalTextured_2) {\r\n var a1 = Vector3d.lerp(positionNormalTextured.position, positionNormalTextured_2.position, 0.5);\r\n var a1uv = Vector2d.lerp(Vector2d.create(positionNormalTextured.tu, positionNormalTextured.tv), Vector2d.create(positionNormalTextured_2.tu, positionNormalTextured_2.tv), 0.5);\r\n a1.normalize();\r\n return PositionTexture.createPos(a1, a1uv.x, a1uv.y);\r\n },\r\n createGeometry: function(renderContext) {\r\n if (this.geometryCreated) {\r\n return true;\r\n }\r\n this.geometryCreated = true;\r\n Tile.prototype.createGeometry.call(this, renderContext);\r\n return true;\r\n },\r\n cleanUp: function(removeFromParent) {\r\n Tile.prototype.cleanUp.call(this, removeFromParent);\r\n if (this._vertexList$1 != null) {\r\n this._vertexList$1 = null;\r\n }\r\n if (this._childTriangleList$1 != null) {\r\n this._childTriangleList$1 = null;\r\n }\r\n this._subDivided$1 = false;\r\n this.demArray = null;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TangentTile\r\n\r\n function TangentTile(level, x, y, dataset, parent) {\r\n this._topDown$1 = true;\r\n Tile.call(this);\r\n this.parent = parent;\r\n this.level = level;\r\n this.tileX = x;\r\n this.tileY = y;\r\n this.dataset = dataset;\r\n this._topDown$1 = !dataset.get_bottomsUp();\r\n this.computeBoundingSphere();\r\n }\r\n var TangentTile$ = {\r\n computeBoundingSphere: function() {\r\n if (!this._topDown$1) {\r\n this.computeBoundingSphereBottomsUp();\r\n return;\r\n }\r\n var tileDegrees = this.dataset.get_baseTileDegrees() / Math.pow(2, this.level);\r\n var latMin = ((this.dataset.get_baseTileDegrees() / 2 - ((this.tileY) * tileDegrees)) + this.dataset.get_offsetY());\r\n var latMax = ((this.dataset.get_baseTileDegrees() / 2 - (((this.tileY + 1)) * tileDegrees)) + this.dataset.get_offsetY());\r\n var lngMin = (((this.tileX * tileDegrees) - this.dataset.get_baseTileDegrees() / this.dataset.get_widthFactor()) + this.dataset.get_offsetX());\r\n var lngMax = (((((this.tileX + 1)) * tileDegrees) - this.dataset.get_baseTileDegrees() / this.dataset.get_widthFactor()) + this.dataset.get_offsetX());\r\n var latCenter = (latMin + latMax) / 2;\r\n var lngCenter = (lngMin + lngMax) / 2;\r\n this.sphereCenter = this.geoTo3dTan(latCenter, lngCenter);\r\n this.topLeft = this.geoTo3dTan(latMin, lngMin);\r\n this.bottomRight = this.geoTo3dTan(latMax, lngMax);\r\n this.topRight = this.geoTo3dTan(latMin, lngMax);\r\n this.bottomLeft = this.geoTo3dTan(latMax, lngMin);\r\n var distVect = this.geoTo3dTan(latMin, lngMin);\r\n distVect.subtract(this.sphereCenter);\r\n this.sphereRadius = distVect.length();\r\n },\r\n geoTo3dTan: function(lat, lng) {\r\n lng = -lng;\r\n var fac1 = this.dataset.get_baseTileDegrees() / 2;\r\n var factor = Math.tan(fac1 * Tile.RC);\r\n return this.dataset.get_matrix().transform(Vector3d.create(1, (lat / fac1 * factor), (lng / fac1 * factor)));\r\n },\r\n requestImage: function() {\r\n this.fitsImage = ss.safeCast(this.dataset.get_wcsImage(), FitsImage);\r\n if (this.fitsImage != null) {\r\n this.texReady = true;\r\n this.downloading = false;\r\n this.errored = this.fitsImage.errored;\r\n this.requestPending = false;\r\n TileCache.removeFromQueue(this.get_key(), true);\r\n if (RenderContext.useGlVersion2) {\r\n this.makeTexture();\r\n this.readyToRender = true;\r\n }\r\n else {\r\n this.bmp = this.fitsImage.getBitmap();\r\n this.texture2d = this.bmp.getTexture();\r\n this.readyToRender = true;\r\n }\r\n }\r\n else {\r\n Tile.prototype.requestImage.call(this);\r\n }\r\n },\r\n computeBoundingSphereBottomsUp: function() {\r\n var tileDegrees = this.dataset.get_baseTileDegrees() / (Math.pow(2, this.level));\r\n var latMin = (this.dataset.get_baseTileDegrees() / 2 + (((this.tileY + 1)) * tileDegrees)) + this.dataset.get_offsetY();\r\n var latMax = (this.dataset.get_baseTileDegrees() / 2 + ((this.tileY) * tileDegrees)) + this.dataset.get_offsetY();\r\n var lngMin = ((this.tileX * tileDegrees) - this.dataset.get_baseTileDegrees() / this.dataset.get_widthFactor()) + this.dataset.get_offsetX();\r\n var lngMax = ((((this.tileX + 1)) * tileDegrees) - this.dataset.get_baseTileDegrees() / this.dataset.get_widthFactor()) + this.dataset.get_offsetX();\r\n var latCenter = (latMin + latMax) / 2;\r\n var lngCenter = (lngMin + lngMax) / 2;\r\n this.topLeft = this.geoTo3dTan(latMin, lngMin);\r\n this.bottomRight = this.geoTo3dTan(latMax, lngMax);\r\n this.topRight = this.geoTo3dTan(latMin, lngMax);\r\n this.bottomLeft = this.geoTo3dTan(latMax, lngMin);\r\n },\r\n createGeometry: function(renderContext) {\r\n if (this.geometryCreated) {\r\n return true;\r\n }\r\n this.geometryCreated = true;\r\n for (var i = 0; i < 4; i++) {\r\n this._renderTriangleLists[i] = [];\r\n }\r\n this.globalCenter = this.geoTo3dTan(0, 0);\r\n var edges = this.getLatLngEdges();\r\n this.topLeft = this.geoTo3dTan(edges.latMin, edges.lngMin).subtract(this.globalCenter);\r\n this.bottomRight = this.geoTo3dTan(edges.latMax, edges.lngMax).subtract(this.globalCenter);\r\n this.topRight = this.geoTo3dTan(edges.latMin, edges.lngMax).subtract(this.globalCenter);\r\n this.bottomLeft = this.geoTo3dTan(edges.latMax, edges.lngMin).subtract(this.globalCenter);\r\n var center = Vector3d.midPoint(this.topLeft, this.bottomRight);\r\n var leftCenter = Vector3d.midPoint(this.topLeft, this.bottomLeft);\r\n var rightCenter = Vector3d.midPoint(this.topRight, this.bottomRight);\r\n var topCenter = Vector3d.midPoint(this.topLeft, this.topRight);\r\n var bottomCenter = Vector3d.midPoint(this.bottomLeft, this.bottomRight);\r\n if (renderContext.gl == null) {\r\n this._renderTriangleLists[0].push(RenderTriangle.create(PositionTexture.createPos(this.topLeft, 0, 0), PositionTexture.createPos(leftCenter, 0, 0.5), PositionTexture.createPos(topCenter, 0.5, 0), this.texture, this.level));\r\n this._renderTriangleLists[0].push(RenderTriangle.create(PositionTexture.createPos(leftCenter, 0, 0.5), PositionTexture.createPos(center, 0.5, 0.5), PositionTexture.createPos(topCenter, 0.5, 0), this.texture, this.level));\r\n this._renderTriangleLists[1].push(RenderTriangle.create(PositionTexture.createPos(topCenter, 0.5, 0), PositionTexture.createPos(rightCenter, 1, 0.5), PositionTexture.createPos(this.topRight, 1, 0), this.texture, this.level));\r\n this._renderTriangleLists[1].push(RenderTriangle.create(PositionTexture.createPos(topCenter, 0.5, 0), PositionTexture.createPos(center, 0.5, 0.5), PositionTexture.createPos(rightCenter, 1, 0.5), this.texture, this.level));\r\n this._renderTriangleLists[2].push(RenderTriangle.create(PositionTexture.createPos(leftCenter, 0, 0.5), PositionTexture.createPos(bottomCenter, 0.5, 1), PositionTexture.createPos(center, 0.5, 0.5), this.texture, this.level));\r\n this._renderTriangleLists[2].push(RenderTriangle.create(PositionTexture.createPos(leftCenter, 0, 0.5), PositionTexture.createPos(this.bottomLeft, 0, 1), PositionTexture.createPos(bottomCenter, 0.5, 1), this.texture, this.level));\r\n this._renderTriangleLists[3].push(RenderTriangle.create(PositionTexture.createPos(center, 0.5, 0.5), PositionTexture.createPos(this.bottomRight, 1, 1), PositionTexture.createPos(rightCenter, 1, 0.5), this.texture, this.level));\r\n this._renderTriangleLists[3].push(RenderTriangle.create(PositionTexture.createPos(center, 0.5, 0.5), PositionTexture.createPos(bottomCenter, 0.5, 1), PositionTexture.createPos(this.bottomRight, 1, 1), this.texture, this.level));\r\n this.readyToRender = true;\r\n }\r\n else {\r\n this._vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this._vertexBuffer);\r\n var f32array = new Float32Array(9 * 5);\r\n var buffer = f32array;\r\n var index = 0;\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(bottomCenter, 0.5, 1));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(this.bottomLeft, 0, 1));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(this.bottomRight, 1, 1));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(center, 0.5, 0.5));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(leftCenter, 0, 0.5));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(rightCenter, 1, 0.5));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(topCenter, 0.5, 0));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(this.topLeft, 0, 0));\r\n index = this.addVertex(buffer, index, PositionTexture.createPos(this.topRight, 1, 0));\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n for (var i = 0; i < 4; i++) {\r\n index = 0;\r\n this.triangleCount = 2;\r\n var ui16array = new Uint16Array(this.triangleCount * 3);\r\n var indexArray = ui16array;\r\n switch (i) {\r\n case 0:\r\n indexArray[index++] = 7;\r\n indexArray[index++] = 4;\r\n indexArray[index++] = 6;\r\n indexArray[index++] = 4;\r\n indexArray[index++] = 3;\r\n indexArray[index++] = 6;\r\n break;\r\n case 1:\r\n indexArray[index++] = 6;\r\n indexArray[index++] = 5;\r\n indexArray[index++] = 8;\r\n indexArray[index++] = 6;\r\n indexArray[index++] = 3;\r\n indexArray[index++] = 5;\r\n break;\r\n case 2:\r\n indexArray[index++] = 4;\r\n indexArray[index++] = 0;\r\n indexArray[index++] = 3;\r\n indexArray[index++] = 4;\r\n indexArray[index++] = 1;\r\n indexArray[index++] = 0;\r\n break;\r\n case 3:\r\n indexArray[index++] = 3;\r\n indexArray[index++] = 2;\r\n indexArray[index++] = 5;\r\n indexArray[index++] = 3;\r\n indexArray[index++] = 0;\r\n indexArray[index++] = 2;\r\n break;\r\n }\r\n this._indexBuffers[i] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, this._indexBuffers[i]);\r\n Tile.prepDevice.bufferData(34963, ui16array, 35044);\r\n }\r\n }\r\n return true;\r\n },\r\n getLatLngEdges: function() {\r\n var tileDegrees = this.dataset.get_baseTileDegrees() / Math.pow(2, this.level);\r\n var edges = new LatLngEdges();\r\n edges.latMin = ((this.dataset.get_baseTileDegrees() / 2 - ((this.tileY) * tileDegrees)) + this.dataset.get_offsetY());\r\n edges.latMax = ((this.dataset.get_baseTileDegrees() / 2 - (((this.tileY + 1)) * tileDegrees)) + this.dataset.get_offsetY());\r\n edges.lngMin = (((this.tileX * tileDegrees) - this.dataset.get_baseTileDegrees() / this.dataset.get_widthFactor()) + this.dataset.get_offsetX());\r\n edges.lngMax = (((((this.tileX + 1)) * tileDegrees) - this.dataset.get_baseTileDegrees() / this.dataset.get_widthFactor()) + this.dataset.get_offsetX());\r\n return edges;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ToastTile\r\n\r\n function ToastTile() {\r\n this._topDown$1 = true;\r\n this.backslash = false;\r\n this._vertexList$1 = null;\r\n this._childTriangleList$1 = null;\r\n this._subDivisionLevel$1 = 4;\r\n this._subDivided$1 = false;\r\n Tile.call(this);\r\n }\r\n ToastTile._cloneArray$1 = function(indexArray) {\r\n var count = indexArray.length;\r\n var ui16array = new Uint16Array(count);\r\n var indexArrayNew = ui16array;\r\n for (var i = 0; i < count; i++) {\r\n indexArrayNew[i] = indexArray[i];\r\n }\r\n return indexArrayNew;\r\n };\r\n ToastTile.create = function(level, xc, yc, dataset, parent) {\r\n var temp = new ToastTile();\r\n temp.parent = parent;\r\n temp.level = level;\r\n temp.tileX = xc;\r\n temp.tileY = yc;\r\n temp.dataset = dataset;\r\n temp._topDown$1 = !dataset.get_bottomsUp();\r\n if (temp.tileX !== xc) {\r\n alert('bad');\r\n }\r\n if (!!dataset.get_meanRadius()) {\r\n temp.set__demScaleFactor(dataset.get_meanRadius());\r\n }\r\n else {\r\n if (!dataset.get_dataSetType()) {\r\n temp.set__demScaleFactor(6371000);\r\n }\r\n else {\r\n temp.set__demScaleFactor(3396010);\r\n }\r\n }\r\n temp.computeBoundingSphere();\r\n return temp;\r\n };\r\n var ToastTile$ = {\r\n computeBoundingSphere: function() {\r\n this._initializeGrids$1();\r\n this.topLeft = this.bounds[0 + 3 * 0].position.copy();\r\n this.bottomRight = this.bounds[2 + 3 * 2].position.copy();\r\n this.topRight = this.bounds[2 + 3 * 0].position.copy();\r\n this.bottomLeft = this.bounds[0 + 3 * 2].position.copy();\r\n this.calcSphere();\r\n },\r\n getIndexBuffer: function(index, accomidation) {\r\n if (!this.level) {\r\n return ToastTile.rootIndexBuffer[index];\r\n }\r\n if (this.backslash) {\r\n return ToastTile.backSlashIndexBuffer[index * 16 + accomidation];\r\n }\r\n else {\r\n return ToastTile.slashIndexBuffer[index * 16 + accomidation];\r\n }\r\n },\r\n _processIndexBuffer$1: function(indexArray, part) {\r\n if (!this.level) {\r\n ToastTile.rootIndexBuffer[part] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, ToastTile.rootIndexBuffer[part]);\r\n Tile.prepDevice.bufferData(34963, indexArray, 35044);\r\n return;\r\n }\r\n for (var a = 0; a < 16; a++) {\r\n var partArray = ToastTile._cloneArray$1(indexArray);\r\n this._processAccomindations$1(partArray, a);\r\n if (this.backslash) {\r\n ToastTile.backSlashIndexBuffer[part * 16 + a] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, ToastTile.backSlashIndexBuffer[part * 16 + a]);\r\n Tile.prepDevice.bufferData(34963, partArray, 35044);\r\n }\r\n else {\r\n ToastTile.slashIndexBuffer[part * 16 + a] = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34963, ToastTile.slashIndexBuffer[part * 16 + a]);\r\n Tile.prepDevice.bufferData(34963, partArray, 35044);\r\n }\r\n }\r\n },\r\n _processAccomindations$1: function(indexArray, a) {\r\n var map = {};\r\n var gridMap = {};\r\n var $enum1 = ss.enumerate(indexArray);\r\n while ($enum1.moveNext()) {\r\n var index = $enum1.current;\r\n var vert = this._vertexList$1[index];\r\n var arrayX = ss.truncate((vert.tu * 16 + 0.5));\r\n var arrayY = ss.truncate((vert.tv * 16 + 0.5));\r\n var ii = (arrayY << 8) + arrayX;\r\n if (!ss.keyExists(gridMap, ii)) {\r\n gridMap[ii] = index;\r\n }\r\n }\r\n var sections = 16;\r\n if ((a & 1) === 1) {\r\n for (var x = 1; x < sections; x += 2) {\r\n var y = sections;\r\n var key = (y << 8) + x;\r\n var val = (y << 8) + x + 1;\r\n if (ss.keyExists(gridMap, key)) {\r\n map[gridMap[key]] = gridMap[val];\r\n }\r\n }\r\n }\r\n if ((a & 2) === 2) {\r\n for (var y = 1; y < sections; y += 2) {\r\n var x = sections;\r\n var key = (y << 8) + x;\r\n var val = ((y + 1) << 8) + x;\r\n if (ss.keyExists(gridMap, key)) {\r\n map[gridMap[key]] = gridMap[val];\r\n }\r\n }\r\n }\r\n if ((a & 4) === 4) {\r\n for (var x = 1; x < sections; x += 2) {\r\n var y = 0;\r\n var key = (y << 8) + x;\r\n var val = (y << 8) + x + 1;\r\n if (ss.keyExists(gridMap, key)) {\r\n map[gridMap[key]] = gridMap[val];\r\n }\r\n }\r\n }\r\n if ((a & 8) === 8) {\r\n for (var y = 1; y < sections; y += 2) {\r\n var x = 0;\r\n var key = (y << 8) + x;\r\n var val = ((y + 1) << 8) + x;\r\n if (ss.keyExists(gridMap, key)) {\r\n map[gridMap[key]] = gridMap[val];\r\n }\r\n }\r\n }\r\n if (!ss.keyCount(map)) {\r\n return;\r\n }\r\n for (var i = 0; i < indexArray.length; i++) {\r\n if (ss.keyExists(map, indexArray[i])) {\r\n indexArray[i] = map[indexArray[i]];\r\n }\r\n }\r\n },\r\n calculateFullSphere: function(list) {\r\n var result = ConvexHull.findEnclosingSphere(list);\r\n this.sphereCenter = result.center;\r\n this.sphereRadius = result.radius;\r\n },\r\n isPointInTile: function(lat, lng) {\r\n if (!this.level) {\r\n return true;\r\n }\r\n if (this.level === 1) {\r\n if ((lng >= 0 && lng <= 90) && (!this.tileX && this.tileY === 1)) {\r\n return true;\r\n }\r\n if ((lng > 90 && lng <= 180) && (this.tileX === 1 && this.tileY === 1)) {\r\n return true;\r\n }\r\n if ((lng < 0 && lng >= -90) && (!this.tileX && !this.tileY)) {\r\n return true;\r\n }\r\n if ((lng < -90 && lng >= -180) && (this.tileX === 1 && !this.tileY)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n if (!this.demReady || this.demData == null) {\r\n return false;\r\n }\r\n var testPoint = Coordinates.geoTo3dDouble(-lat, lng);\r\n var top = this._isLeftOfHalfSpace$1(this.topLeft.copy(), this.topRight.copy(), testPoint);\r\n var right = this._isLeftOfHalfSpace$1(this.topRight.copy(), this.bottomRight.copy(), testPoint);\r\n var bottom = this._isLeftOfHalfSpace$1(this.bottomRight.copy(), this.bottomLeft.copy(), testPoint);\r\n var left = this._isLeftOfHalfSpace$1(this.bottomLeft.copy(), this.topLeft.copy(), testPoint);\r\n if (top && right && bottom && left) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n _isLeftOfHalfSpace$1: function(pntA, pntB, pntTest) {\r\n pntA.normalize();\r\n pntB.normalize();\r\n var cross = Vector3d.cross(pntA, pntB);\r\n var dot = Vector3d.dot(cross, pntTest);\r\n return dot < 0;\r\n },\r\n getSurfacePointAltitude: function(lat, lng, meters) {\r\n if (this.level < Tile.lastDeepestLevel) {\r\n for (var ii = 0; ii < 4; ii++) {\r\n var child = this.children[ii];\r\n if (child != null) {\r\n if (child.isPointInTile(lat, lng)) {\r\n var retVal = child.getSurfacePointAltitude(lat, lng, meters);\r\n if (!!retVal) {\r\n return retVal;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n Tile.tileTargetLevel = this.level;\r\n Tile.tileTargetX = this.tileX;\r\n Tile.tileTargetY = this.tileY;\r\n var testPoint = Coordinates.geoTo3dDouble(-lat, lng);\r\n testPoint = Vector3d.subtractVectors(new Vector3d(), testPoint);\r\n var uv = DistanceCalc.getUVFromInnerPoint(this.topLeft.copy(), this.topRight.copy(), this.bottomLeft.copy(), this.bottomRight.copy(), testPoint.copy());\r\n var uud = Math.max(0, Math.min(16, (uv.x * 16)));\r\n var vvd = Math.max(0, Math.min(16, (uv.y * 16)));\r\n var uu = Math.max(0, Math.min(15, ss.truncate((uv.x * 16))));\r\n var vv = Math.max(0, Math.min(15, ss.truncate((uv.y * 16))));\r\n var ha = uud - uu;\r\n var va = vvd - vv;\r\n if (this.demArray != null) {\r\n var ul = this.demArray[uu + 17 * vv];\r\n var ur = this.demArray[(uu + 1) + 17 * vv];\r\n var ll = this.demArray[uu + 17 * (vv + 1)];\r\n var lr = this.demArray[(uu + 1) + 17 * (vv + 1)];\r\n var top = ul * (1 - ha) + ha * ur;\r\n var bottom = ll * (1 - ha) + ha * lr;\r\n var val = top * (1 - va) + va * bottom;\r\n return val / this.get__demScaleFactor();\r\n }\r\n return this.demAverage / this.get__demScaleFactor();\r\n },\r\n _initializeGrids$1: function() {\r\n this._vertexList$1 = [];\r\n this._childTriangleList$1 = new Array(4);\r\n this._childTriangleList$1[0] = [];\r\n this._childTriangleList$1[1] = [];\r\n this._childTriangleList$1[2] = [];\r\n this._childTriangleList$1[3] = [];\r\n this.bounds = new Array(9);\r\n if (this.level > 0) {\r\n if (this.parent == null) {\r\n this.parent = TileCache.getTile(this.level - 1, this.tileX / 2, this.tileY / 2, this.dataset, null);\r\n }\r\n var parent = this.parent;\r\n var xIndex = this.tileX % 2;\r\n var yIndex = this.tileY % 2;\r\n if (this.level > 1) {\r\n this.backslash = parent.backslash;\r\n }\r\n else {\r\n this.backslash = (xIndex === 1 ^ yIndex === 1) === 1;\r\n }\r\n this.bounds[0 + 3 * 0] = parent.bounds[xIndex + 3 * yIndex].copy();\r\n this.bounds[1 + 3 * 0] = this._midpoint$1(parent.bounds[xIndex + 3 * yIndex], parent.bounds[xIndex + 1 + 3 * yIndex]);\r\n this.bounds[2 + 3 * 0] = parent.bounds[xIndex + 1 + 3 * yIndex].copy();\r\n this.bounds[0 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 3 * yIndex], parent.bounds[xIndex + 3 * (yIndex + 1)]);\r\n if (this.backslash) {\r\n this.bounds[1 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 3 * yIndex], parent.bounds[xIndex + 1 + 3 * (yIndex + 1)]);\r\n }\r\n else {\r\n this.bounds[1 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 1 + 3 * yIndex], parent.bounds[xIndex + 3 * (yIndex + 1)]);\r\n }\r\n this.bounds[2 + 3 * 1] = this._midpoint$1(parent.bounds[xIndex + 1 + 3 * yIndex], parent.bounds[xIndex + 1 + 3 * (yIndex + 1)]);\r\n this.bounds[0 + 3 * 2] = parent.bounds[xIndex + 3 * (yIndex + 1)].copy();\r\n this.bounds[1 + 3 * 2] = this._midpoint$1(parent.bounds[xIndex + 3 * (yIndex + 1)], parent.bounds[xIndex + 1 + 3 * (yIndex + 1)]);\r\n this.bounds[2 + 3 * 2] = parent.bounds[xIndex + 1 + 3 * (yIndex + 1)].copy();\r\n this.bounds[0 + 3 * 0].tu = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 0].tv = 0 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 0].tu = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 0].tv = 0 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 0].tu = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 0].tv = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 1].tu = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 1].tv = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 1].tu = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 1].tv = 0.5 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 1].tu = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 1].tv = 0.5 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 2].tu = 0 * Tile.uvMultiple;\r\n this.bounds[0 + 3 * 2].tv = 1 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 2].tu = 0.5 * Tile.uvMultiple;\r\n this.bounds[1 + 3 * 2].tv = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 2].tu = 1 * Tile.uvMultiple;\r\n this.bounds[2 + 3 * 2].tv = 1 * Tile.uvMultiple;\r\n this._vertexList$1.push(this.bounds[0 + 3 * 0]);\r\n this._vertexList$1.push(this.bounds[1 + 3 * 0]);\r\n this._vertexList$1.push(this.bounds[2 + 3 * 0]);\r\n this._vertexList$1.push(this.bounds[0 + 3 * 1]);\r\n this._vertexList$1.push(this.bounds[1 + 3 * 1]);\r\n this._vertexList$1.push(this.bounds[2 + 3 * 1]);\r\n this._vertexList$1.push(this.bounds[0 + 3 * 2]);\r\n this._vertexList$1.push(this.bounds[1 + 3 * 2]);\r\n this._vertexList$1.push(this.bounds[2 + 3 * 2]);\r\n if (this.backslash) {\r\n this._childTriangleList$1[0].push(Triangle.create(4, 1, 0));\r\n this._childTriangleList$1[0].push(Triangle.create(3, 4, 0));\r\n this._childTriangleList$1[1].push(Triangle.create(5, 2, 1));\r\n this._childTriangleList$1[1].push(Triangle.create(4, 5, 1));\r\n this._childTriangleList$1[2].push(Triangle.create(7, 4, 3));\r\n this._childTriangleList$1[2].push(Triangle.create(6, 7, 3));\r\n this._childTriangleList$1[3].push(Triangle.create(8, 5, 4));\r\n this._childTriangleList$1[3].push(Triangle.create(7, 8, 4));\r\n }\r\n else {\r\n this._childTriangleList$1[0].push(Triangle.create(3, 1, 0));\r\n this._childTriangleList$1[0].push(Triangle.create(4, 1, 3));\r\n this._childTriangleList$1[1].push(Triangle.create(4, 2, 1));\r\n this._childTriangleList$1[1].push(Triangle.create(5, 2, 4));\r\n this._childTriangleList$1[2].push(Triangle.create(6, 4, 3));\r\n this._childTriangleList$1[2].push(Triangle.create(7, 4, 6));\r\n this._childTriangleList$1[3].push(Triangle.create(7, 5, 4));\r\n this._childTriangleList$1[3].push(Triangle.create(8, 5, 7));\r\n }\r\n }\r\n else {\r\n this.bounds[0 + 3 * 0] = PositionTexture.create(0, -1, 0, 0, 0);\r\n this.bounds[1 + 3 * 0] = PositionTexture.create(0, 0, 1, 0.5, 0);\r\n this.bounds[2 + 3 * 0] = PositionTexture.create(0, -1, 0, 1, 0);\r\n this.bounds[0 + 3 * 1] = PositionTexture.create(-1, 0, 0, 0, 0.5);\r\n this.bounds[1 + 3 * 1] = PositionTexture.create(0, 1, 0, 0.5, 0.5);\r\n this.bounds[2 + 3 * 1] = PositionTexture.create(1, 0, 0, 1, 0.5);\r\n this.bounds[0 + 3 * 2] = PositionTexture.create(0, -1, 0, 0, 1);\r\n this.bounds[1 + 3 * 2] = PositionTexture.create(0, 0, -1, 0.5, 1);\r\n this.bounds[2 + 3 * 2] = PositionTexture.create(0, -1, 0, 1, 1);\r\n this._vertexList$1.push(this.bounds[0 + 3 * 0]);\r\n this._vertexList$1.push(this.bounds[1 + 3 * 0]);\r\n this._vertexList$1.push(this.bounds[2 + 3 * 0]);\r\n this._vertexList$1.push(this.bounds[0 + 3 * 1]);\r\n this._vertexList$1.push(this.bounds[1 + 3 * 1]);\r\n this._vertexList$1.push(this.bounds[2 + 3 * 1]);\r\n this._vertexList$1.push(this.bounds[0 + 3 * 2]);\r\n this._vertexList$1.push(this.bounds[1 + 3 * 2]);\r\n this._vertexList$1.push(this.bounds[2 + 3 * 2]);\r\n this._childTriangleList$1[0].push(Triangle.create(3, 1, 0));\r\n this._childTriangleList$1[0].push(Triangle.create(4, 1, 3));\r\n this._childTriangleList$1[1].push(Triangle.create(5, 2, 1));\r\n this._childTriangleList$1[1].push(Triangle.create(4, 5, 1));\r\n this._childTriangleList$1[2].push(Triangle.create(7, 4, 3));\r\n this._childTriangleList$1[2].push(Triangle.create(6, 7, 3));\r\n this._childTriangleList$1[3].push(Triangle.create(7, 5, 4));\r\n this._childTriangleList$1[3].push(Triangle.create(8, 5, 7));\r\n }\r\n },\r\n _midpoint$1: function(positionNormalTextured, positionNormalTextured_2) {\r\n var a1 = Vector3d.lerp(positionNormalTextured.position, positionNormalTextured_2.position, 0.5);\r\n var a1uv = Vector2d.lerp(Vector2d.create(positionNormalTextured.tu, positionNormalTextured.tv), Vector2d.create(positionNormalTextured_2.tu, positionNormalTextured_2.tv), 0.5);\r\n a1.normalize();\r\n return PositionTexture.createPos(a1, a1uv.x, a1uv.y);\r\n },\r\n createGeometry: function(renderContext) {\r\n if (this.geometryCreated) {\r\n return true;\r\n }\r\n this.geometryCreated = true;\r\n Tile.prototype.createGeometry.call(this, renderContext);\r\n if (!this._subDivided$1) {\r\n if (this._vertexList$1 == null) {\r\n this._initializeGrids$1();\r\n }\r\n if (Tile.uvMultiple === 256) {\r\n if (!this.dataset.get_dataSetType() || this.dataset.get_dataSetType() === 1) {\r\n this._subDivisionLevel$1 = Math.min(5, Math.max(0, 5 - this.level));\r\n }\r\n else {\r\n this._subDivisionLevel$1 = Math.min(5, Math.max(0, 5 - this.level));\r\n }\r\n }\r\n else {\r\n if (this.demTile && this.level > 1) {\r\n this.demArray = new Array(17 * 17);\r\n this.demSize = 17 * 17;\r\n if (this.backslash) {\r\n if (ToastTile._backslashYIndex$1 == null) {\r\n this._tempBackslashYIndex$1 = new Array(this.demSize);\r\n this._tempBackslashXIndex$1 = new Array(this.demSize);\r\n }\r\n }\r\n else {\r\n if (ToastTile._slashYIndex$1 == null) {\r\n this._tempSlashYIndex$1 = new Array(this.demSize);\r\n this._tempSlashXIndex$1 = new Array(this.demSize);\r\n }\r\n }\r\n }\r\n }\r\n for (var i = 0; i < 4; i++) {\r\n var count = this._subDivisionLevel$1;\r\n while (count-- > 1) {\r\n var newList = [];\r\n var $enum1 = ss.enumerate(this._childTriangleList$1[i]);\r\n while ($enum1.moveNext()) {\r\n var tri = $enum1.current;\r\n tri.subDivide(newList, this._vertexList$1);\r\n }\r\n this._childTriangleList$1[i] = newList;\r\n }\r\n }\r\n if (renderContext.gl == null) {\r\n for (var i = 0; i < 4; i++) {\r\n this._renderTriangleLists[i] = [];\r\n var $enum2 = ss.enumerate(this._childTriangleList$1[i]);\r\n while ($enum2.moveNext()) {\r\n var tri = $enum2.current;\r\n var p1 = this._vertexList$1[tri.c];\r\n var p2 = this._vertexList$1[tri.b];\r\n var p3 = this._vertexList$1[tri.a];\r\n this._renderTriangleLists[i].push(RenderTriangle.create(p1, p2, p3, this.texture, this.level));\r\n }\r\n }\r\n }\r\n else {\r\n this._vertexBuffer = Tile.prepDevice.createBuffer();\r\n Tile.prepDevice.bindBuffer(34962, this._vertexBuffer);\r\n var f32array = new Float32Array(this._vertexList$1.length * 5);\r\n var buffer = f32array;\r\n var index = 0;\r\n var $enum3 = ss.enumerate(this._vertexList$1);\r\n while ($enum3.moveNext()) {\r\n var pt = $enum3.current;\r\n if (this.demTile) {\r\n index = this.addVertex(buffer, index, this._getMappedVertex(pt));\r\n this.demIndex++;\r\n }\r\n else {\r\n index = this.addVertex(buffer, index, pt);\r\n }\r\n }\r\n if (this.demTile) {\r\n if (this.backslash) {\r\n if (this._tempBackslashXIndex$1 != null) {\r\n ToastTile._backslashXIndex$1 = this._tempBackslashXIndex$1;\r\n ToastTile._backslashYIndex$1 = this._tempBackslashYIndex$1;\r\n this._tempBackslashXIndex$1 = null;\r\n this._tempBackslashYIndex$1 = null;\r\n }\r\n }\r\n else {\r\n if (this._tempSlashYIndex$1 != null) {\r\n ToastTile._slashXIndex$1 = this._tempSlashXIndex$1;\r\n ToastTile._slashYIndex$1 = this._tempSlashYIndex$1;\r\n this._tempSlashYIndex$1 = null;\r\n this._tempSlashXIndex$1 = null;\r\n }\r\n }\r\n }\r\n Tile.prepDevice.bufferData(34962, f32array, 35044);\r\n for (var i = 0; i < 4; i++) {\r\n this.triangleCount = this._childTriangleList$1[i].length;\r\n if (this.getIndexBuffer(i, 0) == null) {\r\n var ui16array = new Uint16Array(this.triangleCount * 3);\r\n var indexArray = ui16array;\r\n index = 0;\r\n var $enum4 = ss.enumerate(this._childTriangleList$1[i]);\r\n while ($enum4.moveNext()) {\r\n var tri = $enum4.current;\r\n indexArray[index++] = tri.c;\r\n indexArray[index++] = tri.b;\r\n indexArray[index++] = tri.a;\r\n }\r\n this._processIndexBuffer$1(indexArray, i);\r\n }\r\n }\r\n }\r\n this._subDivided$1 = true;\r\n }\r\n return true;\r\n },\r\n _getMappedVertex: function(vert) {\r\n var vertOut = new PositionTexture();\r\n var latLng = Coordinates.cartesianToSpherical2(vert.position);\r\n if (latLng.get_lng() < -180) {\r\n latLng.set_lng(latLng.get_lng() + 360);\r\n }\r\n if (latLng.get_lng() > 180) {\r\n latLng.set_lng(latLng.get_lng() - 360);\r\n }\r\n if (this.level > 1) {\r\n var arrayX = ss.truncate((vert.tu * 16 + 0.5));\r\n var arrayY = ss.truncate((vert.tv * 16 + 0.5));\r\n this.demArray[arrayX + arrayY * 17] = this.demData[this.demIndex];\r\n if (this.backslash) {\r\n if (this._tempBackslashYIndex$1 != null) {\r\n this._tempBackslashXIndex$1[this.demIndex] = arrayX;\r\n this._tempBackslashYIndex$1[this.demIndex] = arrayY;\r\n }\r\n }\r\n else {\r\n if (this._tempSlashYIndex$1 != null) {\r\n this._tempSlashXIndex$1[this.demIndex] = arrayX;\r\n this._tempSlashYIndex$1[this.demIndex] = arrayY;\r\n }\r\n }\r\n }\r\n var pos = this.geoTo3dWithAlt(latLng.get_lat(), latLng.get_lng(), false, false);\r\n vertOut.tu = vert.tu;\r\n vertOut.tv = vert.tv;\r\n pos.subtract(this.localCenter);\r\n vertOut.position = pos;\r\n return vertOut;\r\n },\r\n cleanUp: function(removeFromParent) {\r\n Tile.prototype.cleanUp.call(this, removeFromParent);\r\n if (this._vertexList$1 != null) {\r\n this._vertexList$1 = null;\r\n }\r\n if (this._childTriangleList$1 != null) {\r\n this._childTriangleList$1 = null;\r\n }\r\n this._subDivided$1 = false;\r\n this.demArray = null;\r\n },\r\n _getDemSample$1: function(xc, yc) {\r\n return this.demArray[(16 - yc) * 17 + xc];\r\n },\r\n createDemFromParent: function() {\r\n var parent = ss.safeCast(this.parent, ToastTile);\r\n if (parent == null) {\r\n return false;\r\n }\r\n var offsetX = (((this.tileX % 2) === 1) ? 8 : 0);\r\n var offsetY = ((!(this.tileY % 2)) ? 8 : 0);\r\n this.demArray = new Array(17 * 17);\r\n for (var yy1 = 0; yy1 < 17; yy1 += 2) {\r\n var copy = true;\r\n for (var xx1 = 0; xx1 < 17; xx1++) {\r\n if (copy) {\r\n this.demArray[(16 - yy1) * 17 + xx1] = parent._getDemSample$1((xx1 / 2) + offsetX, (yy1 / 2) + offsetY);\r\n }\r\n else {\r\n this.demArray[(16 - yy1) * 17 + xx1] = ((parent._getDemSample$1((xx1 / 2) + offsetX, (yy1 / 2) + offsetY) + parent._getDemSample$1(((xx1 / 2) + offsetX) + 1, (yy1 / 2) + offsetY)) / 2);\r\n }\r\n copy = !copy;\r\n }\r\n }\r\n for (var yy2 = 1; yy2 < 17; yy2 += 2) {\r\n for (var xx2 = 0; xx2 < 17; xx2++) {\r\n this.demArray[(16 - yy2) * 17 + xx2] = ((this._getDemSample$1(xx2, yy2 - 1) + this._getDemSample$1(xx2, yy2 + 1)) / 2);\r\n }\r\n }\r\n this.demData = new Array(this.demSize);\r\n for (var i = 0; i < this.demSize; i++) {\r\n if (this.backslash) {\r\n this.demData[i] = this.demArray[ToastTile._backslashXIndex$1[i] + ToastTile._backslashYIndex$1[i] * 17];\r\n }\r\n else {\r\n this.demData[i] = this.demArray[ToastTile._slashXIndex$1[i] + ToastTile._slashYIndex$1[i] * 17];\r\n }\r\n this.demAverage += this.demData[i];\r\n }\r\n this.demAverage /= this.demData.length;\r\n this.demReady = true;\r\n return true;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.BitmapOverlay\r\n\r\n function BitmapOverlay() {\r\n this._textureReady$1 = false;\r\n this._sprite$1 = new Sprite2d();\r\n Overlay.call(this);\r\n }\r\n BitmapOverlay.create = function(owner, file) {\r\n var temp = new BitmapOverlay();\r\n temp.set_owner(owner);\r\n temp._filename$1 = file.name;\r\n temp.set_name(owner.getNextDefaultName('Image'));\r\n temp.set_x(0);\r\n temp.set_y(0);\r\n owner.get_owner().addCachedFile(file.name, file);\r\n return temp;\r\n };\r\n var BitmapOverlay$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.BitmapOverlay';\r\n },\r\n copy: function(owner) {\r\n var newBmpOverlay = new BitmapOverlay();\r\n newBmpOverlay.set_owner(owner);\r\n newBmpOverlay._filename$1 = this._filename$1;\r\n newBmpOverlay.set_x(this.get_x());\r\n newBmpOverlay.set_y(this.get_y());\r\n newBmpOverlay.set_width(this.get_width());\r\n newBmpOverlay.set_height(this.get_height());\r\n newBmpOverlay.set_color(this.get_color());\r\n newBmpOverlay.set_opacity(this.get_opacity());\r\n newBmpOverlay.set_rotationAngle(this.get_rotationAngle());\r\n newBmpOverlay.set_name(this.get_name() + ' - Copy');\r\n return newBmpOverlay;\r\n },\r\n cleanUp: function() {\r\n this.texture = null;\r\n if (this.texture2d != null) {\r\n this.texture2d.cleanUp();\r\n this.texture2d = null;\r\n }\r\n },\r\n initializeTexture: function() {\r\n var $this = this;\r\n\r\n try {\r\n if (RenderContext.useGl) {\r\n this.texture2d = this.get_owner().get_owner().getCachedTexture2d(this._filename$1);\r\n this._textureReady$1 = true;\r\n }\r\n else {\r\n this.texture = this.get_owner().get_owner().getCachedTexture(this._filename$1, function() {\r\n $this._textureReady$1 = true;\r\n });\r\n }\r\n }\r\n catch ($e1) {\r\n }\r\n },\r\n draw3D: function(renderContext, designTime) {\r\n if (RenderContext.useGl) {\r\n if (this.texture2d == null) {\r\n this.initializeTexture();\r\n }\r\n if (!this.get_width() && !this.get_height()) {\r\n this.set_width(this.texture2d.imageElement.width);\r\n this.set_height(this.texture2d.imageElement.height);\r\n }\r\n this.initializeGeometry();\r\n this.updateRotation();\r\n this._sprite$1.draw(renderContext, this.points, this.points.length, this.texture2d, true, 1);\r\n }\r\n else {\r\n if (this.texture == null) {\r\n this.initializeTexture();\r\n }\r\n if (!this._textureReady$1) {\r\n return;\r\n }\r\n if (!this.get_width() && !this.get_height()) {\r\n this.set_width(this.texture.width);\r\n this.set_height(this.texture.height);\r\n }\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.drawImage(this.texture, -this.get_width() / 2, -this.get_height() / 2, this.get_width(), this.get_height());\r\n ctx.restore();\r\n }\r\n },\r\n addFilesToCabinet: function(fc) {\r\n fc.addFile(this.get_owner().get_owner().get_workingDirectory() + this._filename$1, this.get_owner().get_owner().getFileBlob(this._filename$1));\r\n },\r\n writeOverlayProperties: function(xmlWriter) {\r\n xmlWriter._writeStartElement('Bitmap');\r\n xmlWriter._writeAttributeString('Filename', this._filename$1);\r\n xmlWriter._writeEndElement();\r\n },\r\n initializeFromXml: function(node) {\r\n var bitmap = Util.selectSingleNode(node, 'Bitmap');\r\n this._filename$1 = bitmap.attributes.getNamedItem('Filename').nodeValue;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.TextOverlay\r\n\r\n function TextOverlay() {\r\n this._sprite$1 = new Sprite2d();\r\n this._ctx$1 = null;\r\n this._ce$1 = null;\r\n Overlay.call(this);\r\n }\r\n TextOverlay.create = function(textObject) {\r\n var to = new TextOverlay();\r\n to.textObject = textObject;\r\n to._calculateTextSize$1();\r\n return to;\r\n };\r\n var TextOverlay$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.TextOverlay';\r\n },\r\n get_color: function() {\r\n return Overlay.prototype.get_color.call(this);\r\n },\r\n set_color: function(value) {\r\n if (this.textObject.foregroundColor !== value) {\r\n this.textObject.foregroundColor = value;\r\n Overlay.prototype.set_color.call(this, value);\r\n this.cleanUp();\r\n }\r\n return value;\r\n },\r\n draw3D: function(renderContext, designTime) {\r\n if (RenderContext.useGl) {\r\n this.initializeTexture();\r\n this.initializeGeometry();\r\n this.updateRotation();\r\n this._sprite$1.draw(renderContext, this.points, this.points.length, this.texture2d, true, 1);\r\n }\r\n else {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.globalAlpha = this.get_opacity();\r\n this._drawCanvasText$1(ctx);\r\n ctx.restore();\r\n }\r\n },\r\n _drawCanvasText$1: function(ctx) {\r\n ctx.fillStyle = this.textObject.foregroundColor.toString();\r\n ctx.font = ((this.textObject.italic) ? 'italic' : 'normal') + ' ' + ((this.textObject.bold) ? 'bold' : 'normal') + ' ' + Math.round(this.textObject.fontSize * 1.2).toString() + 'px ' + this.textObject.fontName;\r\n ctx.textBaseline = 'top';\r\n var text = this.textObject.text;\r\n if (text.indexOf('{$') > -1) {\r\n if (text.indexOf('{$DATE}') > -1) {\r\n var date = ss.format('{0:yyyy/MM/dd}', SpaceTimeController.get_now());\r\n text = ss.replaceString(text, '{$DATE}', date);\r\n }\r\n if (text.indexOf('{$TIME}') > -1) {\r\n var time = ss.format('{0:HH:mm:ss}', SpaceTimeController.get_now());\r\n text = ss.replaceString(text, '{$TIME}', time);\r\n }\r\n text = ss.replaceString(text, '{$DIST}', UiTools.formatDistance(WWTControl.singleton.renderContext.get_solarSystemCameraDistance()));\r\n text = ss.replaceString(text, '{$LAT}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.lat));\r\n text = ss.replaceString(text, '{$LNG}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.lat));\r\n text = ss.replaceString(text, '{$RA}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.get_RA()));\r\n text = ss.replaceString(text, '{$DEC}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.get_dec()));\r\n text = ss.replaceString(text, '{$FOV}', Coordinates.formatDMS(WWTControl.singleton.renderContext.get_fovAngle()));\r\n }\r\n var lines = text.split('\\n');\r\n var baseline = -(this.get_height() / 2);\r\n var lineSpace = this.textObject.fontSize * 1.7;\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var line = $enum1.current;\r\n var parts = Util.getWrappedText(ctx, line, this.get_width());\r\n var $enum2 = ss.enumerate(parts);\r\n while ($enum2.moveNext()) {\r\n var part = $enum2.current;\r\n ctx.fillText(part, -this.get_width() / 2, baseline);\r\n baseline += lineSpace;\r\n }\r\n }\r\n },\r\n _calculateTextSize$1: function() {\r\n if (this._ctx$1 == null || this._ce$1 == null) {\r\n this._ce$1 = document.createElement('canvas');\r\n this._ce$1.height = 100;\r\n this._ce$1.width = 100;\r\n this._ctx$1 = this._ce$1.getContext('2d');\r\n }\r\n this._ctx$1.fillStyle = this.textObject.foregroundColor.toString();\r\n this._ctx$1.font = ((this.textObject.italic) ? 'italic' : 'normal') + ' ' + ((this.textObject.bold) ? 'bold' : 'normal') + ' ' + Math.round(this.textObject.fontSize * 1.2).toString() + 'px ' + this.textObject.fontName;\r\n this._ctx$1.textBaseline = 'top';\r\n var text = this.textObject.text;\r\n if (text.indexOf('{$') > -1) {\r\n if (text.indexOf('{$DATE}') > -1) {\r\n var date = ss.format('{0:yyyy/MM/dd}', SpaceTimeController.get_now());\r\n text = ss.replaceString(text, '{$DATE}', date);\r\n }\r\n if (text.indexOf('{$TIME}') > -1) {\r\n var time = ss.format('{0:HH:mm:ss}', SpaceTimeController.get_now());\r\n text = ss.replaceString(text, '{$TIME}', time);\r\n }\r\n text = ss.replaceString(text, '{$DIST}', UiTools.formatDistance(WWTControl.singleton.renderContext.get_solarSystemCameraDistance()));\r\n text = ss.replaceString(text, '{$LAT}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.lat));\r\n text = ss.replaceString(text, '{$LNG}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.lat));\r\n text = ss.replaceString(text, '{$RA}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.get_RA()));\r\n text = ss.replaceString(text, '{$DEC}', Coordinates.formatDMS(WWTControl.singleton.renderContext.viewCamera.get_dec()));\r\n text = ss.replaceString(text, '{$FOV}', Coordinates.formatDMS(WWTControl.singleton.renderContext.get_fovAngle()));\r\n }\r\n var lines = text.split('\\n');\r\n var baseline = 0;\r\n var lineSpace = this.textObject.fontSize * 1.7;\r\n var maxWidth = 0;\r\n var $enum1 = ss.enumerate(lines);\r\n while ($enum1.moveNext()) {\r\n var line = $enum1.current;\r\n var width = this._ctx$1.measureText(line).width;\r\n maxWidth = Math.max(width, maxWidth);\r\n baseline += lineSpace;\r\n }\r\n this.set_width(maxWidth * 1.01);\r\n this.set_height(baseline);\r\n this._ce$1 = null;\r\n this._ctx$1 = null;\r\n },\r\n initializeTexture: function() {\r\n if (this.texture2d == null || (this.textObject.text.indexOf('{$') > -1)) {\r\n if (!this.get_height() || !this.get_width()) {\r\n this._calculateTextSize$1();\r\n }\r\n if (this._ctx$1 == null || this._ce$1 == null) {\r\n this._ce$1 = document.createElement('canvas');\r\n this._ce$1.height = ss.truncate(this.get_height());\r\n this._ce$1.width = ss.truncate(this.get_width());\r\n this._ctx$1 = this._ce$1.getContext('2d');\r\n }\r\n this._ctx$1.translate(this.get_width() / 2, this.get_height() / 2);\r\n this._ctx$1.clearRect(0, 0, this.get_width(), this.get_height());\r\n this._drawCanvasText$1(this._ctx$1);\r\n this.texture2d = new Texture();\r\n this.texture2d.imageElement = this._ce$1;\r\n this.texture2d.makeTexture();\r\n this._ce$1 = null;\r\n this._ctx$1 = null;\r\n }\r\n },\r\n writeOverlayProperties: function(xmlWriter) {\r\n xmlWriter._writeStartElement('Text');\r\n this.textObject._saveToXml(xmlWriter);\r\n xmlWriter._writeEndElement();\r\n },\r\n initializeFromXml: function(node) {\r\n var text = Util.selectSingleNode(node, 'Text');\r\n this.textObject = TextObject._fromXml(Util.selectSingleNode(text, 'TextObject'));\r\n },\r\n initializeGeometry: function() {\r\n if (RenderContext.useGl) {\r\n Overlay.prototype.initializeGeometry.call(this);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ShapeOverlay\r\n\r\n function ShapeOverlay() {\r\n this._shapeType$1 = 1;\r\n this._sprite$1 = new Sprite2d();\r\n this._triangleStrip$1 = true;\r\n Overlay.call(this);\r\n }\r\n ShapeOverlay._create = function(currentTourStop, shapeType) {\r\n var overlay = new ShapeOverlay();\r\n overlay._shapeType$1 = shapeType;\r\n overlay.set_owner(currentTourStop);\r\n return overlay;\r\n };\r\n var ShapeOverlay$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.ShapeOverlay';\r\n },\r\n get_shapeType: function() {\r\n return this._shapeType$1;\r\n },\r\n set_shapeType: function(value) {\r\n this._shapeType$1 = value;\r\n this.cleanUpGeometry();\r\n return value;\r\n },\r\n draw3D: function(renderContext, designTime) {\r\n if (RenderContext.useGl) {\r\n this.initializeGeometry();\r\n this._sprite$1.draw(renderContext, this.points, this.points.length, null, this._triangleStrip$1, this.get_opacity());\r\n }\r\n else {\r\n switch (this._shapeType$1) {\r\n case 0:\r\n this._drawCircleGeometry$1(renderContext);\r\n break;\r\n case 1:\r\n this._drawRectGeometry$1(renderContext);\r\n break;\r\n case 6:\r\n this._drawOpenRectGeometry$1(renderContext);\r\n break;\r\n case 2:\r\n this._drawStarGeometry$1(renderContext);\r\n break;\r\n case 3:\r\n this._drawDonutGeometry$1(renderContext);\r\n break;\r\n case 4:\r\n this._drawArrowGeometry$1(renderContext);\r\n break;\r\n case 5:\r\n this._drawLineGeometry$1(renderContext);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n },\r\n initializeGeometry: function() {\r\n if (this.points == null) {\r\n switch (this._shapeType$1) {\r\n case 0:\r\n this._createCircleGeometry$1();\r\n break;\r\n case 1:\r\n Overlay.prototype.initializeGeometry.call(this);\r\n break;\r\n case 6:\r\n this._createOpenRectGeometry$1();\r\n break;\r\n case 2:\r\n this._createStarGeometry$1();\r\n break;\r\n case 3:\r\n this._createDonutGeometry$1();\r\n break;\r\n case 4:\r\n this._createArrowGeometry$1();\r\n break;\r\n case 5:\r\n this._createLineGeometry$1();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n },\r\n _createLineGeometry$1: function() {\r\n var centerX = this.get_x();\r\n var centerY = this.get_y();\r\n var radius = this.get_width() / 2;\r\n var length = this.get_width();\r\n var segments = ss.truncate((length / 12)) + 1;\r\n var radiansPerSegment = (Math.PI * 2) / segments;\r\n if (this.points == null) {\r\n this.points = new Array(segments * 2 + 2);\r\n }\r\n for (var j = 0; j <= segments; j++) {\r\n var i = j * 2;\r\n this.points[i] = new PositionColoredTextured();\r\n this.points[i].position = this.makePosition(this.get_x(), this.get_y(), ((j / segments) * this.get_width() - (this.get_width() / 2)), 6, this.get_rotationAngle());\r\n this.points[i].tu = (j % 2);\r\n this.points[i].tv = 0;\r\n this.points[i].color = this.get_color();\r\n this.points[i + 1] = new PositionColoredTextured();\r\n this.points[i + 1].position = this.makePosition(this.get_x(), this.get_y(), ((j / segments) * this.get_width() - (this.get_width() / 2)), -6, this.get_rotationAngle());\r\n this.points[i + 1].tu = (j % 2);\r\n this.points[i + 1].tv = 1;\r\n this.points[i + 1].color = this.get_color();\r\n }\r\n },\r\n _createOpenRectGeometry$1: function() {\r\n var centerX = this.get_x();\r\n var centerY = this.get_y();\r\n var radius = this.get_width() / 2;\r\n var length = this.get_width();\r\n var segments = ss.truncate((length / 12)) + 1;\r\n var segmentsHigh = ss.truncate((this.get_height() / 12)) + 1;\r\n var totalPoints = (((segments + 1) * 2) + ((segmentsHigh + 1) * 2)) * 2;\r\n if (this.points == null) {\r\n this.points = new Array(totalPoints);\r\n }\r\n for (var j = 0; j <= segments; j++) {\r\n var i = j * 2;\r\n this.points[i] = new PositionColoredTextured();\r\n this.points[i].position = this.makePosition(centerX, centerY, (j / segments) * this.get_width() - (this.get_width() / 2), (this.get_height() / 2), this.get_rotationAngle());\r\n this.points[i].tu = (j % 2);\r\n this.points[i].tv = 0;\r\n this.points[i].color = this.get_color();\r\n this.points[i + 1] = new PositionColoredTextured();\r\n this.points[i + 1].position = this.makePosition(centerX, centerY, (j / segments) * this.get_width() - (this.get_width() / 2), ((this.get_height() / 2) - 12), this.get_rotationAngle());\r\n this.points[i + 1].tu = (j % 2);\r\n this.points[i + 1].tv = 1;\r\n this.points[i + 1].color = this.get_color();\r\n var k = (((segments + 1) * 4) + ((segmentsHigh + 1) * 2) - 2) - i;\r\n this.points[k] = new PositionColoredTextured();\r\n this.points[k].position = this.makePosition(centerX, centerY, (j / segments) * this.get_width() - (this.get_width() / 2), (-(this.get_height() / 2)) + 12, this.get_rotationAngle());\r\n this.points[k].tu = (j % 2);\r\n this.points[k].tv = 0;\r\n this.points[k].color = this.get_color();\r\n this.points[k + 1] = new PositionColoredTextured();\r\n this.points[k + 1].position = this.makePosition(centerX, centerY, (j / segments) * this.get_width() - (this.get_width() / 2), (-(this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[k + 1].tu = (j % 2);\r\n this.points[k + 1].tv = 1;\r\n this.points[k + 1].color = this.get_color();\r\n }\r\n var offset = ((segments + 1) * 2);\r\n for (var j = 0; j <= segmentsHigh; j++) {\r\n var top = ((segmentsHigh + 1) * 2) + offset - 2;\r\n var i = j * 2;\r\n this.points[top - i] = new PositionColoredTextured();\r\n this.points[top - i].position = this.makePosition(centerX, centerY, (this.get_width() / 2), ((j / segmentsHigh) * this.get_height() - (this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[top - i].tu = (j % 2);\r\n this.points[top - i].tv = 0;\r\n this.points[top - i].color = this.get_color();\r\n this.points[top - i + 1] = new PositionColoredTextured();\r\n this.points[top - i + 1].position = this.makePosition(centerX, centerY, ((this.get_width() / 2) - 12), ((j / segmentsHigh) * this.get_height() - (this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[top - i + 1].tu = (j % 2);\r\n this.points[top - i + 1].tv = 1;\r\n this.points[top - i + 1].color = this.get_color();\r\n var k = i + ((segments + 1) * 4) + ((segmentsHigh + 1) * 2);\r\n this.points[k] = new PositionColoredTextured();\r\n this.points[k].position = this.makePosition(centerX, centerY, (-(this.get_width() / 2) + 12), ((j / segmentsHigh) * this.get_height() - (this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[k].tu = (j % 2);\r\n this.points[k].tv = 0;\r\n this.points[k].color = this.get_color();\r\n this.points[k + 1] = new PositionColoredTextured();\r\n this.points[k + 1].position = this.makePosition(centerX, centerY, (-(this.get_width() / 2)), ((j / segmentsHigh) * this.get_height() - (this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[k + 1].tu = (j % 2);\r\n this.points[k + 1].tv = 1;\r\n this.points[k + 1].color = this.get_color();\r\n }\r\n },\r\n _createStarGeometry$1: function() {\r\n var centerX = this.get_x();\r\n var centerY = this.get_y();\r\n var radius = this.get_width() / 2;\r\n var radiansPerSegment = (Math.PI * 2) / 5;\r\n if (this.points == null) {\r\n this.points = new Array(12);\r\n }\r\n if (this._pnts$1 == null) {\r\n this._pnts$1 = new Array(10);\r\n }\r\n for (var i = 0; i < 5; i++) {\r\n var rads = i * radiansPerSegment - (Math.PI / 2);\r\n this._pnts$1[i] = new PositionColoredTextured();\r\n this._pnts$1[i].position = this.makePosition(centerX, centerY, (Math.cos(rads) * (this.get_width() / 2)), (Math.sin(rads) * (this.get_height() / 2)), this.get_rotationAngle());\r\n this._pnts$1[i].tu = 0;\r\n this._pnts$1[i].tv = 0;\r\n this._pnts$1[i].color = this.get_color();\r\n }\r\n for (var i = 5; i < 10; i++) {\r\n var rads = i * radiansPerSegment + (radiansPerSegment / 2) - (Math.PI / 2);\r\n this._pnts$1[i] = new PositionColoredTextured();\r\n this._pnts$1[i].position = this.makePosition(centerX, centerY, (Math.cos(rads) * (this.get_width() / 5.3)), (Math.sin(rads) * (this.get_height() / 5.3)), this.get_rotationAngle());\r\n this._pnts$1[i].tu = 0;\r\n this._pnts$1[i].tv = 0;\r\n this._pnts$1[i].color = this.get_color();\r\n }\r\n this.points[0] = this._pnts$1[0];\r\n this.points[1] = this._pnts$1[5];\r\n this.points[2] = this._pnts$1[9];\r\n this.points[3] = this._pnts$1[1];\r\n this.points[4] = this._pnts$1[7];\r\n this.points[5] = this._pnts$1[4];\r\n this.points[6] = this._pnts$1[6];\r\n this.points[7] = this._pnts$1[2];\r\n this.points[8] = this._pnts$1[7];\r\n this.points[9] = this._pnts$1[7];\r\n this.points[10] = this._pnts$1[3];\r\n this.points[11] = this._pnts$1[8];\r\n this._triangleStrip$1 = false;\r\n },\r\n _createArrowGeometry$1: function() {\r\n if (this.points == null) {\r\n this.points = new Array(9);\r\n }\r\n this.points[0] = new PositionColoredTextured();\r\n this.points[0].position = this.makePosition(this.get_x(), this.get_y(), -this.get_width() / 2, -this.get_height() / 4, this.get_rotationAngle());\r\n this.points[0].tu = 0;\r\n this.points[0].tv = 0;\r\n this.points[0].color = this.get_color();\r\n this.points[1] = new PositionColoredTextured();\r\n this.points[1].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 4, -this.get_height() / 4, this.get_rotationAngle());\r\n this.points[1].tu = 1;\r\n this.points[1].tv = 0;\r\n this.points[1].color = this.get_color();\r\n this.points[2] = new PositionColoredTextured();\r\n this.points[2].position = this.makePosition(this.get_x(), this.get_y(), -this.get_width() / 2, this.get_height() / 4, this.get_rotationAngle());\r\n this.points[2].tu = 0;\r\n this.points[2].tv = 1;\r\n this.points[2].color = this.get_color();\r\n this.points[3] = new PositionColoredTextured();\r\n this.points[3].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 4, -this.get_height() / 4, this.get_rotationAngle());\r\n this.points[3].tu = 1;\r\n this.points[3].tv = 0;\r\n this.points[3].color = this.get_color();\r\n this.points[4] = new PositionColoredTextured();\r\n this.points[4].position = this.makePosition(this.get_x(), this.get_y(), -this.get_width() / 2, this.get_height() / 4, this.get_rotationAngle());\r\n this.points[4].tu = 0;\r\n this.points[4].tv = 1;\r\n this.points[4].color = this.get_color();\r\n this.points[5] = new PositionColoredTextured();\r\n this.points[5].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 4, this.get_height() / 4, this.get_rotationAngle());\r\n this.points[5].tu = 1;\r\n this.points[5].tv = 1;\r\n this.points[5].color = this.get_color();\r\n this.points[6] = new PositionColoredTextured();\r\n this.points[6].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 4, -this.get_height() / 2, this.get_rotationAngle());\r\n this.points[6].tu = 1;\r\n this.points[6].tv = 1;\r\n this.points[6].color = this.get_color();\r\n this.points[7] = new PositionColoredTextured();\r\n this.points[7].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 2, 0, this.get_rotationAngle());\r\n this.points[7].tu = 1;\r\n this.points[7].tv = 0.5;\r\n this.points[7].color = this.get_color();\r\n this.points[8] = new PositionColoredTextured();\r\n this.points[8].position = this.makePosition(this.get_x(), this.get_y(), this.get_width() / 4, this.get_height() / 2, this.get_rotationAngle());\r\n this.points[8].tu = 1;\r\n this.points[8].tv = 1;\r\n this.points[8].color = this.get_color();\r\n this._triangleStrip$1 = false;\r\n },\r\n _createDonutGeometry$1: function() {\r\n var centerX = this.get_x();\r\n var centerY = this.get_y();\r\n var radius = this.get_width() / 2;\r\n var circumference = Math.PI * 2 * radius;\r\n var segments = ss.truncate((circumference / 12)) + 1;\r\n var radiansPerSegment = (Math.PI * 2) / segments;\r\n if (this.points == null) {\r\n this.points = new Array(segments * 2 + 2);\r\n }\r\n for (var j = 0; j <= segments; j++) {\r\n var i = j * 2;\r\n this.points[i] = new PositionColoredTextured();\r\n this.points[i].position = this.makePosition(centerX, centerY, (Math.cos(j * radiansPerSegment) * (this.get_width() / 2)), (Math.sin(j * radiansPerSegment) * (this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[i].tu = (j % 2);\r\n this.points[i].tv = 0;\r\n this.points[i].color = this.get_color();\r\n this.points[i + 1] = new PositionColoredTextured();\r\n this.points[i + 1].position = this.makePosition(centerX, centerY, (Math.cos(j * radiansPerSegment) * ((this.get_width() / 2) - 10)), (Math.sin(j * radiansPerSegment) * ((this.get_height() / 2) - 10)), this.get_rotationAngle());\r\n this.points[i + 1].tu = (j % 2);\r\n this.points[i + 1].tv = 1;\r\n this.points[i + 1].color = this.get_color();\r\n }\r\n },\r\n _createCircleGeometry$1: function() {\r\n var centerX = this.get_x();\r\n var centerY = this.get_y();\r\n var radius = this.get_width() / 2;\r\n var circumference = Math.PI * 2 * radius;\r\n var segments = ss.truncate((circumference / 12)) + 1;\r\n var radiansPerSegment = (Math.PI * 2) / segments;\r\n if (this.points == null) {\r\n this.points = new Array(segments * 2 + 2);\r\n }\r\n for (var j = 0; j <= segments; j++) {\r\n var i = j * 2;\r\n this.points[i] = new PositionColoredTextured();\r\n this.points[i].position = this.makePosition(centerX, centerY, (Math.cos(j * radiansPerSegment) * (this.get_width() / 2)), (Math.sin(j * radiansPerSegment) * (this.get_height() / 2)), this.get_rotationAngle());\r\n this.points[i].tu = (j % 2);\r\n this.points[i].tv = 0;\r\n this.points[i].color = this.get_color();\r\n this.points[i + 1] = new PositionColoredTextured();\r\n this.points[i + 1].position = this.makePosition(centerX, centerY, 0, 0, this.get_rotationAngle());\r\n this.points[i + 1].tu = (j % 2);\r\n this.points[i + 1].tv = 1;\r\n this.points[i + 1].color = this.get_color();\r\n }\r\n },\r\n initializeTexture: function() {\r\n switch (this.get_shapeType()) {\r\n case 5:\r\n case 3:\r\n case 6:\r\n break;\r\n case 0:\r\n case 1:\r\n case 2:\r\n case 4:\r\n default:\r\n this.texture = null;\r\n break;\r\n }\r\n },\r\n _drawLineGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n var radius = this.get_width() / 2;\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.moveTo(-radius, 0);\r\n ctx.lineTo(radius, 0);\r\n ctx.lineWidth = 9;\r\n ctx.strokeStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.stroke();\r\n ctx.restore();\r\n },\r\n _drawOpenRectGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.beginPath();\r\n ctx.moveTo(-this.get_width() / 2, -this.get_height() / 2);\r\n ctx.lineTo(this.get_width() / 2, -this.get_height() / 2);\r\n ctx.lineTo(this.get_width() / 2, this.get_height() / 2);\r\n ctx.lineTo(-this.get_width() / 2, this.get_height() / 2);\r\n ctx.closePath();\r\n ctx.lineWidth = 9;\r\n ctx.strokeStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.stroke();\r\n ctx.restore();\r\n },\r\n _drawRectGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.beginPath();\r\n ctx.moveTo(-this.get_width() / 2, -this.get_height() / 2);\r\n ctx.lineTo(this.get_width() / 2, -this.get_height() / 2);\r\n ctx.lineTo(this.get_width() / 2, this.get_height() / 2);\r\n ctx.lineTo(-this.get_width() / 2, this.get_height() / 2);\r\n ctx.closePath();\r\n ctx.lineWidth = 0;\r\n ctx.fillStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.fill();\r\n ctx.restore();\r\n },\r\n _drawStarGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.beginPath();\r\n var centerX = 0;\r\n var centerY = 0;\r\n var radius = this.get_width() / 2;\r\n var radiansPerSegment = (Math.PI * 2) / 5;\r\n var first = true;\r\n for (var i = 0; i < 5; i++) {\r\n var rads = i * radiansPerSegment - (Math.PI / 2);\r\n if (first) {\r\n first = false;\r\n ctx.moveTo(centerX + Math.cos(rads) * (this.get_width() / 2), centerY + Math.sin(rads) * (this.get_height() / 2));\r\n }\r\n else {\r\n ctx.lineTo(centerX + Math.cos(rads) * (this.get_width() / 2), centerY + Math.sin(rads) * (this.get_height() / 2));\r\n }\r\n var rads2 = i * radiansPerSegment + (radiansPerSegment / 2) - (Math.PI / 2);\r\n ctx.lineTo(centerX + Math.cos(rads2) * (this.get_width() / 5.3), centerY + Math.sin(rads2) * (this.get_height() / 5.3));\r\n }\r\n ctx.closePath();\r\n ctx.lineWidth = 0;\r\n ctx.fillStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.fill();\r\n ctx.restore();\r\n },\r\n _drawArrowGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.beginPath();\r\n ctx.moveTo((-(this.get_width() / 2)), (-(this.get_height() / 4)));\r\n ctx.lineTo((this.get_width() / 4), (-(this.get_height() / 4)));\r\n ctx.lineTo((this.get_width() / 4), (-(this.get_height() / 2)));\r\n ctx.lineTo((this.get_width() / 2), 0);\r\n ctx.lineTo((this.get_width() / 4), (this.get_height() / 2));\r\n ctx.lineTo((this.get_width() / 4), (this.get_height() / 4));\r\n ctx.lineTo((-(this.get_width() / 2)), (this.get_height() / 4));\r\n ctx.closePath();\r\n ctx.lineWidth = 0;\r\n ctx.fillStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.fill();\r\n ctx.restore();\r\n },\r\n _drawDonutGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.scale(1, this.get_height() / this.get_width());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.beginPath();\r\n ctx.arc(0, 0, this.get_width() / 2, 0, Math.PI * 2, false);\r\n ctx.closePath();\r\n ctx.lineWidth = 9;\r\n ctx.strokeStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.stroke();\r\n ctx.restore();\r\n },\r\n _drawCircleGeometry$1: function(renderContext) {\r\n var ctx = renderContext.device;\r\n ctx.save();\r\n ctx.scale(1, this.get_width() / this.get_height());\r\n ctx.translate(this.get_x(), this.get_y());\r\n ctx.rotate(this.get_rotationAngle() * Overlay.RC);\r\n ctx.beginPath();\r\n ctx.arc(0, 0, this.get_width(), 0, Math.PI * 2, false);\r\n ctx.closePath();\r\n ctx.lineWidth = 0;\r\n ctx.fillStyle = this.get_color().toString();\r\n ctx.globalAlpha = this.get_opacity();\r\n ctx.fill();\r\n ctx.restore();\r\n },\r\n cleanUpGeometry: function() {\r\n Overlay.prototype.cleanUpGeometry.call(this);\r\n this.cleanUp();\r\n },\r\n writeOverlayProperties: function(xmlWriter) {\r\n xmlWriter._writeStartElement('Shape');\r\n xmlWriter._writeAttributeString('ShapeType', Enums.toXml('ShapeType', this._shapeType$1));\r\n xmlWriter._writeEndElement();\r\n },\r\n initializeFromXml: function(node) {\r\n var shape = Util.selectSingleNode(node, 'Shape');\r\n this._shapeType$1 = Enums.parse('ShapeType', shape.attributes.getNamedItem('ShapeType').nodeValue);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.AudioOverlay\r\n\r\n function AudioOverlay() {\r\n this._audio$1 = null;\r\n this._audioReady$1 = false;\r\n this._wantPlaying$1 = false;\r\n this._volume$1 = 100;\r\n this._mute$1 = false;\r\n this._position$1 = 0;\r\n this._trackType$1 = 0;\r\n Overlay.call(this);\r\n this.isDesignTimeOnly = true;\r\n }\r\n AudioOverlay.create = function(currentTourStop, file) {\r\n var ao = new AudioOverlay();\r\n ao.set_owner(currentTourStop);\r\n ao._filename$1 = file.name;\r\n ao.get_owner().get_owner().addCachedFile(file.name, file);\r\n return ao;\r\n };\r\n var AudioOverlay$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.AudioOverlay';\r\n },\r\n get_mute: function() {\r\n return this._mute$1;\r\n },\r\n set_mute: function(value) {\r\n this._mute$1 = value;\r\n this.set_volume(this.get_volume());\r\n return value;\r\n },\r\n get_volume: function() {\r\n return this._volume$1;\r\n },\r\n set_volume: function(value) {\r\n this._volume$1 = value;\r\n if (this._audio$1 != null) {\r\n this._audio$1.volume = (this._mute$1) ? 0 : (this._volume$1 / 100);\r\n }\r\n return value;\r\n },\r\n addFilesToCabinet: function(fc) {\r\n fc.addFile(this.get_owner().get_owner().get_workingDirectory() + this._filename$1, this.get_owner().get_owner().getFileBlob(this._filename$1));\r\n },\r\n play: function() {\r\n if (this._audio$1 == null) {\r\n this.prepMultimedia();\r\n }\r\n this._wantPlaying$1 = true;\r\n if (this._audio$1 != null && this._audioReady$1) {\r\n this._audio$1.play();\r\n this.set_volume(this.get_volume());\r\n this._audio$1.currentTime = this._position$1;\r\n }\r\n },\r\n pause: function() {\r\n if (this._audio$1 == null) {\r\n this.prepMultimedia();\r\n }\r\n this._wantPlaying$1 = false;\r\n if (this._audio$1 != null && this._audioReady$1) {\r\n this._audio$1.pause();\r\n }\r\n },\r\n stop: function() {\r\n this.pause();\r\n },\r\n seek: function(time) {\r\n this._position$1 = time;\r\n if (this._audio$1 == null) {\r\n this.prepMultimedia();\r\n }\r\n if (this._audioReady$1) {\r\n if (this._audio$1.duration < time) {\r\n this._audio$1.pause();\r\n }\r\n else {\r\n this._audio$1.currentTime = this._position$1;\r\n }\r\n }\r\n },\r\n prepMultimedia: function() {\r\n var $this = this;\r\n\r\n if (this._audio$1 != null) {\r\n return;\r\n }\r\n this._audio$1 = document.createElement('audio');\r\n this._audio$1.addEventListener('canplaythrough', function() {\r\n if (!$this._audioReady$1) {\r\n $this._audioReady$1 = true;\r\n if ($this._wantPlaying$1) {\r\n $this.play();\r\n }\r\n }\r\n }, false);\r\n var source = document.createElement('source');\r\n this._audio$1.appendChild(source);\r\n source.src = this.get_owner().get_owner().getFileStream(this._filename$1);\r\n source.type = 'audio/mp3';\r\n this._audio$1.load();\r\n },\r\n initializeTexture: function() {\r\n this.prepMultimedia();\r\n },\r\n cleanUp: function() {\r\n Overlay.prototype.cleanUp.call(this);\r\n this._wantPlaying$1 = false;\r\n if (this._audio$1 != null) {\r\n this._audio$1.pause();\r\n this._audio$1.src = null;\r\n this._audio$1 = null;\r\n }\r\n },\r\n get_trackType: function() {\r\n return this._trackType$1;\r\n },\r\n set_trackType: function(value) {\r\n this._trackType$1 = value;\r\n return value;\r\n },\r\n writeOverlayProperties: function(xmlWriter) {\r\n xmlWriter._writeStartElement('Audio');\r\n xmlWriter._writeAttributeString('Filename', this._filename$1);\r\n xmlWriter._writeAttributeString('Volume', this._volume$1.toString());\r\n xmlWriter._writeAttributeString('Mute', this._mute$1.toString());\r\n xmlWriter._writeAttributeString('TrackType', Enums.toXml('AudioType', this._trackType$1));\r\n xmlWriter._writeEndElement();\r\n },\r\n initializeFromXml: function(node) {\r\n var audio = Util.selectSingleNode(node, 'Audio');\r\n this._filename$1 = audio.attributes.getNamedItem('Filename').nodeValue;\r\n if (audio.attributes.getNamedItem('Volume') != null) {\r\n this._volume$1 = parseInt(audio.attributes.getNamedItem('Volume').nodeValue);\r\n }\r\n if (audio.attributes.getNamedItem('Mute') != null) {\r\n this._mute$1 = ss.boolean(audio.attributes.getNamedItem('Mute').nodeValue);\r\n }\r\n if (audio.attributes.getNamedItem('TrackType') != null) {\r\n this._trackType$1 = Enums.parse('AudioType', audio.attributes.getNamedItem('TrackType').nodeValue);\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FlipbookOverlay\r\n\r\n function FlipbookOverlay() {\r\n this._loopType$1 = 1;\r\n this._startFrame$1 = 0;\r\n this._framesList$1 = [];\r\n this._frames$1 = 1;\r\n this._framesX$1 = 8;\r\n this._framesY$1 = 8;\r\n this._textureReady$1 = false;\r\n this._currentFrame$1 = 0;\r\n this._cellHeight$1 = 256;\r\n this._cellWidth$1 = 256;\r\n this._timeStart$1 = ss.now();\r\n this._playing$1 = true;\r\n Overlay.call(this);\r\n }\r\n var FlipbookOverlay$ = {\r\n getTypeName: function() {\r\n return 'TerraViewer.FlipbookOverlay';\r\n },\r\n get_loopType: function() {\r\n return this._loopType$1;\r\n },\r\n set_loopType: function(value) {\r\n this._loopType$1 = value;\r\n return value;\r\n },\r\n get_startFrame: function() {\r\n return this._startFrame$1;\r\n },\r\n set_startFrame: function(value) {\r\n this._startFrame$1 = value;\r\n return value;\r\n },\r\n get_frameSequence: function() {\r\n return this._frameSequence$1;\r\n },\r\n set_frameSequence: function(value) {\r\n if (this._frameSequence$1 !== value) {\r\n this._frameSequence$1 = value;\r\n this._framesList$1 = [];\r\n if (!ss.emptyString(this._frameSequence$1)) {\r\n try {\r\n var parts = this._frameSequence$1.split(',');\r\n var $enum1 = ss.enumerate(parts);\r\n while ($enum1.moveNext()) {\r\n var part = $enum1.current;\r\n var x = parseInt(ss.trim(part));\r\n this._framesList$1.push(x);\r\n }\r\n }\r\n catch ($e2) {\r\n }\r\n }\r\n }\r\n return value;\r\n },\r\n get_frames: function() {\r\n return this._frames$1;\r\n },\r\n set_frames: function(value) {\r\n this._frames$1 = value;\r\n return value;\r\n },\r\n get_framesX: function() {\r\n return this._framesX$1;\r\n },\r\n set_framesX: function(value) {\r\n this._framesX$1 = value;\r\n return value;\r\n },\r\n get_framesY: function() {\r\n return this._framesY$1;\r\n },\r\n set_framesY: function(value) {\r\n this._framesY$1 = value;\r\n return value;\r\n },\r\n copy: function(owner) {\r\n var newFlipbookOverlay = new FlipbookOverlay();\r\n newFlipbookOverlay.set_owner(owner);\r\n newFlipbookOverlay._filename$1 = this._filename$1;\r\n newFlipbookOverlay.set_x(this.get_x());\r\n newFlipbookOverlay.set_y(this.get_y());\r\n newFlipbookOverlay.set_width(this.get_width());\r\n newFlipbookOverlay.set_height(this.get_height());\r\n newFlipbookOverlay.set_color(this.get_color());\r\n newFlipbookOverlay.set_opacity(this.get_opacity());\r\n newFlipbookOverlay.set_rotationAngle(this.get_rotationAngle());\r\n newFlipbookOverlay.set_name(this.get_name() + ' - Copy');\r\n newFlipbookOverlay.set_startFrame(this.get_startFrame());\r\n newFlipbookOverlay.set_frames(this.get_frames());\r\n newFlipbookOverlay.set_loopType(this.get_loopType());\r\n newFlipbookOverlay.set_frameSequence(this.get_frameSequence());\r\n newFlipbookOverlay.set_framesX(this.get_framesX());\r\n newFlipbookOverlay.set_framesY(this.get_framesY());\r\n return newFlipbookOverlay;\r\n },\r\n cleanUp: function() {\r\n this.texture = null;\r\n },\r\n initializeTexture: function() {\r\n var $this = this;\r\n\r\n try {\r\n var colorKey = ss.endsWith(this._filename$1.toLowerCase(), '.jpg');\r\n this.texture = this.get_owner().get_owner().getCachedTexture(this._filename$1, function() {\r\n $this._textureReady$1 = true;\r\n });\r\n }\r\n catch ($e1) {\r\n }\r\n },\r\n addFilesToCabinet: function(fc) {\r\n fc.addFile(this.get_owner().get_owner().get_workingDirectory() + this._filename$1, this.get_owner().get_owner().getFileBlob(this._filename$1));\r\n },\r\n writeOverlayProperties: function(xmlWriter) {\r\n xmlWriter._writeStartElement('Flipbook');\r\n xmlWriter._writeAttributeString('Filename', this._filename$1);\r\n xmlWriter._writeAttributeString('Frames', this._frames$1.toString());\r\n xmlWriter._writeAttributeString('Loop', Enums.toXml('LoopTypes', this._loopType$1));\r\n xmlWriter._writeAttributeString('FramesX', this._framesX$1.toString());\r\n xmlWriter._writeAttributeString('FramesY', this._framesY$1.toString());\r\n xmlWriter._writeAttributeString('StartFrame', this._startFrame$1.toString());\r\n if (!ss.emptyString(this._frameSequence$1)) {\r\n xmlWriter._writeAttributeString('FrameSequence', this._frameSequence$1);\r\n }\r\n xmlWriter._writeEndElement();\r\n },\r\n initializeFromXml: function(node) {\r\n var flipbook = Util.selectSingleNode(node, 'Flipbook');\r\n this._filename$1 = flipbook.attributes.getNamedItem('Filename').nodeValue;\r\n this._frames$1 = parseInt(flipbook.attributes.getNamedItem('Frames').nodeValue);\r\n this._loopType$1 = Enums.parse('LoopTypes', flipbook.attributes.getNamedItem('Loop').nodeValue);\r\n if (flipbook.attributes.getNamedItem('FramesX') != null) {\r\n this.set_framesX(parseInt(flipbook.attributes.getNamedItem('FramesX').nodeValue));\r\n }\r\n if (flipbook.attributes.getNamedItem('FramesY') != null) {\r\n this.set_framesY(parseInt(flipbook.attributes.getNamedItem('FramesY').nodeValue));\r\n }\r\n if (flipbook.attributes.getNamedItem('StartFrame') != null) {\r\n this.set_startFrame(parseInt(flipbook.attributes.getNamedItem('StartFrame').nodeValue));\r\n }\r\n if (flipbook.attributes.getNamedItem('FrameSequence') != null) {\r\n this.set_frameSequence(flipbook.attributes.getNamedItem('FrameSequence').nodeValue);\r\n }\r\n },\r\n play: function() {\r\n this._playing$1 = true;\r\n this._timeStart$1 = ss.now();\r\n },\r\n pause: function() {\r\n this._playing$1 = false;\r\n },\r\n stop: function() {\r\n this._playing$1 = false;\r\n this._currentFrame$1 = 0;\r\n },\r\n initializeGeometry: function() {\r\n var frameCount = this._frames$1;\r\n if (!ss.emptyString(this._frameSequence$1)) {\r\n frameCount = this._framesList$1.length;\r\n }\r\n if (this._playing$1) {\r\n var ts = ss.now() - this._timeStart$1;\r\n switch (this._loopType$1) {\r\n case 0:\r\n this._currentFrame$1 = ss.truncate(((ts / 1000 * 24) % frameCount)) + this._startFrame$1;\r\n break;\r\n case 1:\r\n this._currentFrame$1 = Math.abs(ss.truncate(((ts / 1000 * 24 + frameCount) % (frameCount * 2 - 1))) - (frameCount - 1)) + this._startFrame$1;\r\n if (this._currentFrame$1 < 0 || this._currentFrame$1 > frameCount - 1) {\r\n var p = 0;\r\n }\r\n break;\r\n case 2:\r\n this._currentFrame$1 = Math.max(0, frameCount - ss.truncate(((ts / 1000 * 24) % frameCount))) + this._startFrame$1;\r\n break;\r\n case 3:\r\n var temp = Math.min(ts / 1000 * 24, frameCount * 2 + 1) + frameCount;\r\n this._currentFrame$1 = Math.abs((temp % (frameCount * 2 - 1)) - (frameCount - 1)) + this._startFrame$1;\r\n break;\r\n case 4:\r\n this._currentFrame$1 = Math.min(frameCount - 1, ss.truncate((ts / 1000 * 24)));\r\n break;\r\n case 5:\r\n this._currentFrame$1 = this._startFrame$1;\r\n break;\r\n case 6:\r\n this._currentFrame$1 = (frameCount - 1) + this._startFrame$1;\r\n break;\r\n default:\r\n this._currentFrame$1 = this._startFrame$1;\r\n break;\r\n }\r\n }\r\n if (!ss.emptyString(this._frameSequence$1)) {\r\n if (this._currentFrame$1 < this._framesList$1.length && this._currentFrame$1 > -1) {\r\n this._currentFrame$1 = this._framesList$1[this._currentFrame$1];\r\n }\r\n else {\r\n this._currentFrame$1 = 0;\r\n }\r\n }\r\n this.currentRotation = 0;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ToolStripSeparator\r\n\r\n function ToolStripSeparator() {\r\n ToolStripMenuItem.call(this);\r\n this.name = '--------------------------------------';\r\n }\r\n var ToolStripSeparator$ = {\r\n\r\n };\r\n\r\n\r\n // wwtlib.FrameWizard\r\n\r\n function FrameWizard() {\r\n Dialog.call(this);\r\n }\r\n var FrameWizard$ = {\r\n OK: function(frame) {\r\n LayerManager.referenceFrameWizardFinished(frame);\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ReferenceFrameProps\r\n\r\n function ReferenceFrameProps() {\r\n Dialog.call(this);\r\n }\r\n var ReferenceFrameProps$ = {\r\n OK: function(frame) {\r\n LayerManager.loadTree();\r\n }\r\n };\r\n\r\n\r\n // wwtlib.GreatCircleDialog\r\n\r\n function GreatCircleDialog() {\r\n Dialog.call(this);\r\n }\r\n var GreatCircleDialog$ = {\r\n OK: function(frame) {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.DataVizWizard\r\n\r\n function DataVizWizard() {\r\n Dialog.call(this);\r\n }\r\n var DataVizWizard$ = {\r\n OK: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FitsImageTile\r\n\r\n function FitsImageTile(dataset, file, callMeBack) {\r\n FitsImage.call(this, dataset, file, null, callMeBack);\r\n }\r\n var FitsImageTile$ = {\r\n readDataUnitFloat64: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getFloat64(this.position, false);\r\n i++;\r\n this.position += 8;\r\n }\r\n },\r\n readDataUnitFloat32: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getFloat32(this.position, false);\r\n i++;\r\n this.position += 4;\r\n }\r\n },\r\n readDataUnitUint8: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getUint8(this.position);\r\n i++;\r\n this.position += 1;\r\n }\r\n },\r\n readDataUnitInt16: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getInt16(this.position, false);\r\n i++;\r\n this.position += 2;\r\n }\r\n },\r\n readDataUnitInt32: function(dataView) {\r\n var i = 0;\r\n while (this.position < dataView.byteLength) {\r\n this.dataUnit[i] = dataView.getInt32(this.position, false);\r\n i++;\r\n this.position += 4;\r\n }\r\n },\r\n computeWcs: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.FitsImageJs\r\n\r\n function FitsImageJs(dataset, file, blob, callMeBack) {\r\n this.dataType = 5;\r\n this._color$2 = false;\r\n this.isTiledFits = false;\r\n FitsImage.call(this, dataset, file, blob, callMeBack);\r\n }\r\n FitsImageJs.createTiledFits = function(dataset, file, callMeBack) {\r\n var fits = new FitsImageJs(dataset, file, null, callMeBack);\r\n fits.isTiledFits = true;\r\n return fits;\r\n };\r\n var FitsImageJs$ = {\r\n readFromBin: function(dataView) {\r\n FitsImage.prototype.readFromBin.call(this, dataView);\r\n if (this.numAxis === 3) {\r\n if (this.axisSize[2] === 3) {\r\n this._color$2 = true;\r\n }\r\n }\r\n },\r\n readDataUnit: function(dataView, bitpix) {\r\n var br = new BinaryReader(new Uint8Array(dataView.buffer));\r\n br.position = this.position;\r\n switch (bitpix) {\r\n case -64:\r\n this.dataType = 4;\r\n this._readDataUnitFloat64$2(br);\r\n break;\r\n case -32:\r\n this.dataType = 3;\r\n this._readDataUnitFloat32$2(br);\r\n break;\r\n case 8:\r\n this.dataType = 0;\r\n this._readDataUnitUint8$2(br);\r\n break;\r\n case 16:\r\n this.dataType = 1;\r\n this._readDataUnitInt16$2(br);\r\n break;\r\n case 32:\r\n this.dataType = 2;\r\n this._readDataUnitInt32$2(br);\r\n break;\r\n }\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n },\r\n _readDataUnitUint8$2: function(br) {\r\n var buffer = new Array(this.bufferSize);\r\n this._dataBuffer$2 = buffer;\r\n for (var i = 0; i < this.bufferSize; i++) {\r\n buffer[i] = br.readByte();\r\n if (this.fitsProperties.minVal > buffer[i]) {\r\n this.fitsProperties.minVal = buffer[i];\r\n }\r\n if (this.fitsProperties.maxVal < buffer[i]) {\r\n this.fitsProperties.maxVal = buffer[i];\r\n }\r\n }\r\n },\r\n _readDataUnitInt16$2: function(br) {\r\n var buffer = new Array(this.bufferSize);\r\n this._dataBuffer$2 = buffer;\r\n for (var i = 0; i < this.bufferSize; i++) {\r\n buffer[i] = ((br.readSByte() * 256) + br.readByte());\r\n if (this.fitsProperties.minVal > buffer[i]) {\r\n this.fitsProperties.minVal = buffer[i];\r\n }\r\n if (this.fitsProperties.maxVal < buffer[i]) {\r\n this.fitsProperties.maxVal = buffer[i];\r\n }\r\n }\r\n },\r\n _readDataUnitInt32$2: function(br) {\r\n var buffer = new Array(this.bufferSize);\r\n this._dataBuffer$2 = buffer;\r\n for (var i = 0; i < this.bufferSize; i++) {\r\n buffer[i] = (br.readSByte() << 24) + (br.readSByte() << 16) + (br.readSByte() << 8) + br.readByte();\r\n if (this.fitsProperties.minVal > buffer[i]) {\r\n this.fitsProperties.minVal = buffer[i];\r\n }\r\n if (this.fitsProperties.maxVal < buffer[i]) {\r\n this.fitsProperties.maxVal = buffer[i];\r\n }\r\n }\r\n },\r\n _readDataUnitFloat32$2: function(br) {\r\n var buffer = new Array(this.bufferSize);\r\n this._dataBuffer$2 = buffer;\r\n var part = new Uint8Array(4);\r\n for (var i = 0; i < this.bufferSize; i++) {\r\n part[3] = br.readByte();\r\n part[2] = br.readByte();\r\n part[1] = br.readByte();\r\n part[0] = br.readByte();\r\n buffer[i] = new Float32Array(part.buffer, 0, 1)[0];\r\n if (this.fitsProperties.minVal > buffer[i]) {\r\n this.fitsProperties.minVal = buffer[i];\r\n }\r\n if (this.fitsProperties.maxVal < buffer[i]) {\r\n this.fitsProperties.maxVal = buffer[i];\r\n }\r\n }\r\n },\r\n _readDataUnitFloat64$2: function(br) {\r\n var buffer = new Array(this.bufferSize);\r\n var part = new Uint8Array(8);\r\n this._dataBuffer$2 = buffer;\r\n for (var i = 0; i < this.bufferSize; i++) {\r\n part[7] = br.readByte();\r\n part[6] = br.readByte();\r\n part[5] = br.readByte();\r\n part[4] = br.readByte();\r\n part[3] = br.readByte();\r\n part[2] = br.readByte();\r\n part[1] = br.readByte();\r\n part[0] = br.readByte();\r\n buffer[i] = new Float64Array(part.buffer, 0, 1)[0];\r\n if (this.fitsProperties.minVal > buffer[i]) {\r\n this.fitsProperties.minVal = buffer[i];\r\n }\r\n if (this.fitsProperties.maxVal < buffer[i]) {\r\n this.fitsProperties.maxVal = buffer[i];\r\n }\r\n }\r\n },\r\n getBitmap: function() {\r\n if (!this.fitsProperties.upperCut && !this.fitsProperties.lowerCut) {\r\n this.fitsProperties.lowerCut = this.fitsProperties.minVal;\r\n this.fitsProperties.upperCut = this.fitsProperties.maxVal;\r\n }\r\n return this.getScaledBitmap(this.fitsProperties.lowerCut, this.fitsProperties.upperCut, this.fitsProperties.scaleType, 0, this.fitsProperties.colorMapName);\r\n },\r\n getScaledBitmap: function(min, max, scaleType, z, colorMapperName) {\r\n var scale;\r\n this.fitsProperties.scaleType = scaleType;\r\n this.fitsProperties.lowerCut = min;\r\n this.fitsProperties.upperCut = max;\r\n this.fitsProperties.colorMapName = colorMapperName;\r\n var colorMapper = ColorMapContainer.fromNamedColormap(colorMapperName);\r\n switch (scaleType) {\r\n case 0:\r\n default:\r\n scale = new ScaleLinear(min, max);\r\n break;\r\n case 1:\r\n scale = new ScaleLog(min, max);\r\n break;\r\n case 2:\r\n scale = new ScalePow(min, max);\r\n break;\r\n case 3:\r\n scale = new ScaleSqrt(min, max);\r\n break;\r\n case 4:\r\n scale = new HistogramEqualization(this, min, max);\r\n break;\r\n }\r\n try {\r\n switch (this.dataType) {\r\n case 0:\r\n return this._getBitmapByte$2(min, max, scale, 0, colorMapper);\r\n case 1:\r\n return this.getBitmapShort(min, max, scale, 0, colorMapper);\r\n case 2:\r\n return this._getBitmapInt$2(min, max, scale, 0, colorMapper);\r\n case 3:\r\n return this._getBitmapFloat$2(min, max, scale, 0, colorMapper);\r\n case 4:\r\n return this._getBitmapDouble$2(min, max, scale, 0, colorMapper);\r\n case 5:\r\n default:\r\n return Bitmap.create(100, 100);\r\n }\r\n }\r\n catch ($e1) {\r\n return Bitmap.create(10, 10);\r\n }\r\n },\r\n _setPixelWithColorMap$2: function(bmp, x, y, val, colorMapper) {\r\n if (colorMapper == null) {\r\n bmp.setPixel(x, y, val, val, val, (this.fitsProperties.transparentBlack && !val) ? 0 : 255);\r\n return;\r\n }\r\n var pixel_value = val / 255;\r\n if (pixel_value !== pixel_value) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n return;\r\n }\r\n var pixel_color = colorMapper.findClosestColor(pixel_value);\r\n bmp.setPixel(x, y, ss.truncate(pixel_color.r), ss.truncate(pixel_color.g), ss.truncate(pixel_color.b), (this.fitsProperties.transparentBlack && !val) ? 0 : 255);\r\n },\r\n _getBitmapByte$2: function(min, max, scale, z, colorMapper) {\r\n var buf = this._dataBuffer$2;\r\n var factor = max - min;\r\n var stride = this.axisSize[0];\r\n var page = this.axisSize[0] * this.axisSize[1] * z;\r\n var bmp = Bitmap.create(this.axisSize[0], this.axisSize[1]);\r\n for (var y = 0; y < this.axisSize[1]; y++) {\r\n var indexY = ((this.axisSize[1] - 1) - y);\r\n for (var x = 0; x < this.axisSize[0]; x++) {\r\n if (this._color$2) {\r\n var datR = buf[(x + indexY * stride)];\r\n var datG = buf[(x + indexY * stride) + page];\r\n var datB = buf[(x + indexY * stride) + page * 2];\r\n if (this.fitsProperties.containsBlanks && datR === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var r = scale.map(datR);\r\n var g = scale.map(datG);\r\n var b = scale.map(datB);\r\n bmp.setPixel(x, y, r, g, b, 255);\r\n }\r\n }\r\n else {\r\n var dataValue = buf[x + indexY * stride + page];\r\n if (this.fitsProperties.containsBlanks && dataValue === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var val = scale.map(dataValue);\r\n this._setPixelWithColorMap$2(bmp, x, y, val, colorMapper);\r\n }\r\n }\r\n }\r\n }\r\n return bmp;\r\n },\r\n _getBitmapDouble$2: function(min, max, scale, z, colorMapper) {\r\n var buf = this._dataBuffer$2;\r\n var factor = max - min;\r\n var stride = this.axisSize[0];\r\n var page = this.axisSize[0] * this.axisSize[1] * z;\r\n var bmp = Bitmap.create(this.axisSize[0], this.axisSize[1]);\r\n for (var y = 0; y < this.axisSize[1]; y++) {\r\n var indexY = ((this.axisSize[1] - 1) - y);\r\n for (var x = 0; x < this.axisSize[0]; x++) {\r\n if (this._color$2) {\r\n var datR = buf[(x + indexY * stride)];\r\n var datG = buf[(x + indexY * stride) + page];\r\n var datB = buf[(x + indexY * stride) + page * 2];\r\n if (this.fitsProperties.containsBlanks && datR === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var r = scale.map(datR);\r\n var g = scale.map(datG);\r\n var b = scale.map(datB);\r\n bmp.setPixel(x, y, r, g, b, 255);\r\n }\r\n }\r\n else {\r\n var dataValue = buf[x + indexY * stride + page];\r\n if (this.fitsProperties.containsBlanks && dataValue === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var val = scale.map(dataValue);\r\n this._setPixelWithColorMap$2(bmp, x, y, val, colorMapper);\r\n }\r\n }\r\n }\r\n }\r\n return bmp;\r\n },\r\n _getBitmapFloat$2: function(min, max, scale, z, colorMapper) {\r\n var buf = this._dataBuffer$2;\r\n var factor = max - min;\r\n var stride = this.axisSize[0];\r\n var page = this.axisSize[0] * this.axisSize[1] * z;\r\n var bmp = Bitmap.create(this.axisSize[0], this.axisSize[1]);\r\n for (var y = 0; y < this.axisSize[1]; y++) {\r\n var indexY = ((this.axisSize[1] - 1) - y);\r\n for (var x = 0; x < this.axisSize[0]; x++) {\r\n if (this._color$2) {\r\n var datR = buf[(x + indexY * stride)];\r\n var datG = buf[(x + indexY * stride) + page];\r\n var datB = buf[(x + indexY * stride) + page * 2];\r\n if (this.fitsProperties.containsBlanks && datR === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var r = scale.map(datR);\r\n var g = scale.map(datG);\r\n var b = scale.map(datB);\r\n bmp.setPixel(x, y, r, g, b, 255);\r\n }\r\n }\r\n else {\r\n var dataValue = buf[x + indexY * stride + page];\r\n if (this.fitsProperties.containsBlanks && dataValue === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var val = scale.map(dataValue);\r\n this._setPixelWithColorMap$2(bmp, x, y, val, colorMapper);\r\n }\r\n }\r\n }\r\n }\r\n return bmp;\r\n },\r\n _getBitmapInt$2: function(min, max, scale, z, colorMapper) {\r\n var buf = this._dataBuffer$2;\r\n var factor = max - min;\r\n var stride = this.axisSize[0];\r\n var page = this.axisSize[0] * this.axisSize[1] * z;\r\n var bmp = Bitmap.create(this.axisSize[0], this.axisSize[1]);\r\n for (var y = 0; y < this.axisSize[1]; y++) {\r\n var indexY = ((this.axisSize[1] - 1) - y);\r\n for (var x = 0; x < this.axisSize[0]; x++) {\r\n if (this._color$2) {\r\n var datR = buf[(x + indexY * stride)];\r\n var datG = buf[(x + indexY * stride) + page];\r\n var datB = buf[(x + indexY * stride) + page * 2];\r\n if (this.fitsProperties.containsBlanks && datR === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var r = scale.map(datR);\r\n var g = scale.map(datG);\r\n var b = scale.map(datB);\r\n bmp.setPixel(x, y, r, g, b, 255);\r\n }\r\n }\r\n else {\r\n var dataValue = buf[x + indexY * stride + page];\r\n if (this.fitsProperties.containsBlanks && dataValue === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var val = scale.map(dataValue);\r\n this._setPixelWithColorMap$2(bmp, x, y, val, colorMapper);\r\n }\r\n }\r\n }\r\n }\r\n return bmp;\r\n },\r\n getBitmapShort: function(min, max, scale, z, colorMapper) {\r\n var buf = this._dataBuffer$2;\r\n var factor = max - min;\r\n var stride = this.axisSize[0];\r\n var page = this.axisSize[0] * this.axisSize[1] * z;\r\n var bmp = Bitmap.create(this.axisSize[0], this.axisSize[1]);\r\n for (var y = 0; y < this.axisSize[1]; y++) {\r\n var indexY = ((this.axisSize[1] - 1) - y);\r\n for (var x = 0; x < this.axisSize[0]; x++) {\r\n if (this._color$2) {\r\n var datR = buf[(x + indexY * stride)];\r\n var datG = buf[(x + indexY * stride) + page];\r\n var datB = buf[(x + indexY * stride) + page * 2];\r\n if (this.fitsProperties.containsBlanks && datR === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var r = scale.map(datR);\r\n var g = scale.map(datG);\r\n var b = scale.map(datB);\r\n bmp.setPixel(x, y, r, g, b, 255);\r\n }\r\n }\r\n else {\r\n var dataValue = buf[x + indexY * stride + page];\r\n if (this.fitsProperties.containsBlanks && dataValue === this.fitsProperties.blankValue) {\r\n bmp.setPixel(x, y, 0, 0, 0, 0);\r\n }\r\n else {\r\n var val = scale.map(dataValue);\r\n this._setPixelWithColorMap$2(bmp, x, y, val, colorMapper);\r\n }\r\n }\r\n }\r\n }\r\n return bmp;\r\n },\r\n computeWcs: function() {\r\n if (!this.isTiledFits) {\r\n FitsImage.prototype.computeWcs.call(this);\r\n }\r\n },\r\n populateHistogram: function(histogram) {\r\n switch (this.dataType) {\r\n case 0:\r\n this._populateHistogramByte$2(histogram);\r\n break;\r\n case 1:\r\n this._populateHistogramInt16$2(histogram);\r\n break;\r\n case 2:\r\n this._populateHistogramInt32$2(histogram);\r\n break;\r\n case 3:\r\n this._populateHistogramFloat$2(histogram);\r\n break;\r\n case 4:\r\n this._populateHistogramDouble$2(histogram);\r\n break;\r\n }\r\n },\r\n _populateHistogramDouble$2: function(histogram) {\r\n var buckets = histogram.length;\r\n var buf = this._dataBuffer$2;\r\n var factor = (this.fitsProperties.maxVal - this.fitsProperties.minVal) / buckets;\r\n var $enum1 = ss.enumerate(buf);\r\n while ($enum1.moveNext()) {\r\n var val = $enum1.current;\r\n if (!(val === Number.NaN)) {\r\n histogram[Math.min(buckets - 1, ss.truncate(((val - this.fitsProperties.minVal) / factor)))]++;\r\n }\r\n }\r\n },\r\n _populateHistogramFloat$2: function(histogram) {\r\n var buckets = histogram.length;\r\n var buf = this._dataBuffer$2;\r\n var factor = (this.fitsProperties.maxVal - this.fitsProperties.minVal) / buckets;\r\n var $enum1 = ss.enumerate(buf);\r\n while ($enum1.moveNext()) {\r\n var val = $enum1.current;\r\n if (!(val === FitsImage.naN)) {\r\n histogram[Math.min(buckets - 1, ss.truncate(((val - this.fitsProperties.minVal) / factor)))]++;\r\n }\r\n }\r\n },\r\n _populateHistogramInt32$2: function(histogram) {\r\n var buckets = histogram.length;\r\n var buf = this._dataBuffer$2;\r\n var factor = (this.fitsProperties.maxVal - this.fitsProperties.minVal) / buckets;\r\n var $enum1 = ss.enumerate(buf);\r\n while ($enum1.moveNext()) {\r\n var val = $enum1.current;\r\n histogram[Math.min(buckets - 1, ss.truncate(((val - this.fitsProperties.minVal) / factor)))]++;\r\n }\r\n },\r\n _populateHistogramInt16$2: function(histogram) {\r\n var buckets = histogram.length;\r\n var buf = this._dataBuffer$2;\r\n var factor = (this.fitsProperties.maxVal - this.fitsProperties.minVal) / buckets;\r\n var $enum1 = ss.enumerate(buf);\r\n while ($enum1.moveNext()) {\r\n var val = $enum1.current;\r\n histogram[Math.min(buckets - 1, ss.truncate(((val - this.fitsProperties.minVal) / factor)))]++;\r\n }\r\n },\r\n _populateHistogramByte$2: function(histogram) {\r\n var buckets = histogram.length;\r\n var buf = this._dataBuffer$2;\r\n var factor = (this.fitsProperties.maxVal - this.fitsProperties.minVal) / buckets;\r\n var $enum1 = ss.enumerate(buf);\r\n while ($enum1.moveNext()) {\r\n var val = $enum1.current;\r\n histogram[Math.min(buckets - 1, ss.truncate(((val - this.fitsProperties.minVal) / factor)))]++;\r\n }\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ISSLayer\r\n\r\n function ISSLayer() {\r\n Object3dLayer.call(this);\r\n this.id = ISSLayer.issGuid;\r\n }\r\n ISSLayer.loadBackground = function() {\r\n if (ISSLayer._loading$2) {\r\n return;\r\n }\r\n ISSLayer._loading$2 = true;\r\n var url = URLHelpers.singleton.coreStaticUrl('data/iss.wtt');\r\n ISSLayer._doc$2 = TourDocument.fromUrlRaw(url, function() {\r\n ISSLayer.createSpaceStation();\r\n });\r\n };\r\n ISSLayer.createSpaceStation = function() {\r\n ISSLayer._doc$2.set_id('28016047-97a9-4b33-a226-cd820262a151');\r\n var filename = '0c10ae54-b6da-4282-bfda-f34562d403bc.3ds';\r\n var o3d = new Object3d(ISSLayer._doc$2, filename, true, false, true, Colors.get_white());\r\n if (o3d != null) {\r\n o3d.issLayer = true;\r\n ISSLayer._issmodel$2 = o3d;\r\n }\r\n };\r\n var ISSLayer$ = {\r\n draw: function(renderContext, opacity, flat) {\r\n if (this.object3d == null && ISSLayer._issmodel$2 == null) {\r\n if (!ISSLayer._loading$2) {\r\n var worldView = Matrix3d.multiplyMatrix(renderContext.get_world(), renderContext.get_view());\r\n var v = worldView.transform(Vector3d.get_empty());\r\n var scaleFactor = Math.sqrt(worldView.get_m11() * worldView.get_m11() + worldView.get_m22() * worldView.get_m22() + worldView.get_m33() * worldView.get_m33());\r\n var dist = v.length();\r\n var radius = scaleFactor;\r\n var viewportHeight = ss.truncate(renderContext.height);\r\n var p11 = renderContext.get_projection().get_m11();\r\n var p34 = renderContext.get_projection().get_m34();\r\n var p44 = renderContext.get_projection().get_m44();\r\n var w = Math.abs(p34) * dist + p44;\r\n var pixelsPerUnit = (p11 / w) * viewportHeight;\r\n var radiusInPixels = (radius * pixelsPerUnit);\r\n if (radiusInPixels > 0.5) {\r\n ISSLayer.loadBackground();\r\n }\r\n }\r\n }\r\n this.object3d = ISSLayer._issmodel$2;\r\n return Object3dLayer.prototype.draw.call(this, renderContext, opacity, flat);\r\n },\r\n getPrimaryUI: function() {\r\n return null;\r\n },\r\n addFilesToCabinet: function(fc) {\r\n return;\r\n },\r\n loadData: function(doc, filename) {\r\n return;\r\n },\r\n cleanUp: function() {\r\n }\r\n };\r\n\r\n\r\n // wwtlib.CatalogSpreadSheetLayer\r\n\r\n function CatalogSpreadSheetLayer() {\r\n this._addedTiles$2 = {};\r\n SpreadSheetLayer.call(this);\r\n }\r\n var CatalogSpreadSheetLayer$ = {\r\n addTileRows: function(tileKey, catalogRows) {\r\n if (!ss.keyExists(this._addedTiles$2, tileKey)) {\r\n var $enum1 = ss.enumerate(catalogRows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n this.get__table().rows.push(row);\r\n }\r\n this.dirty = true;\r\n this._addedTiles$2[tileKey] = true;\r\n }\r\n },\r\n removeTileRows: function(tileKey, catalogRows) {\r\n if (ss.keyExists(this._addedTiles$2, tileKey)) {\r\n var $enum1 = ss.enumerate(catalogRows);\r\n while ($enum1.moveNext()) {\r\n var row = $enum1.current;\r\n ss.remove(this.get__table().rows, row);\r\n }\r\n this.dirty = true;\r\n delete this._addedTiles$2[tileKey];\r\n }\r\n },\r\n cleanUp: function() {\r\n SpreadSheetLayer.prototype.cleanUp.call(this);\r\n ss.clearKeys(this._addedTiles$2);\r\n this.get__table().rows.length = 0;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SlideChangedEventArgs\r\n\r\n function SlideChangedEventArgs(caption) {\r\n ss.EventArgs.call(this);\r\n this.set_caption(caption);\r\n }\r\n var SlideChangedEventArgs$ = {\r\n get_caption: function() {\r\n return this._caption$2;\r\n },\r\n set_caption: function(value) {\r\n this._caption$2 = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.ArrivedEventArgs\r\n\r\n function ArrivedEventArgs(ra, dec, zoom) {\r\n this._ra$2 = 0;\r\n this._dec$2 = 0;\r\n this._zoom$2 = 0;\r\n ss.EventArgs.call(this);\r\n this.set_RA(ra * 15);\r\n this.set_dec(dec);\r\n this.set_zoom(zoom / 6);\r\n }\r\n var ArrivedEventArgs$ = {\r\n get_RA: function() {\r\n return this._ra$2;\r\n },\r\n set_RA: function(value) {\r\n this._ra$2 = value;\r\n return value;\r\n },\r\n get_dec: function() {\r\n return this._dec$2;\r\n },\r\n set_dec: function(value) {\r\n this._dec$2 = value;\r\n return value;\r\n },\r\n get_zoom: function() {\r\n return this._zoom$2;\r\n },\r\n set_zoom: function(value) {\r\n this._zoom$2 = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.AnnotationClickEventArgs\r\n\r\n function AnnotationClickEventArgs(ra, dec, id) {\r\n this._ra$2 = 0;\r\n this._dec$2 = 0;\r\n ss.EventArgs.call(this);\r\n this.set_RA(ra * 15);\r\n this.set_dec(dec);\r\n this.set_id(id);\r\n }\r\n var AnnotationClickEventArgs$ = {\r\n get_RA: function() {\r\n return this._ra$2;\r\n },\r\n set_RA: function(value) {\r\n this._ra$2 = value;\r\n return value;\r\n },\r\n get_dec: function() {\r\n return this._dec$2;\r\n },\r\n set_dec: function(value) {\r\n this._dec$2 = value;\r\n return value;\r\n },\r\n get_id: function() {\r\n return this._id$2;\r\n },\r\n set_id: function(value) {\r\n this._id$2 = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.CollectionLoadedEventArgs\r\n\r\n function CollectionLoadedEventArgs(url) {\r\n ss.EventArgs.call(this);\r\n this._url$2 = url;\r\n }\r\n var CollectionLoadedEventArgs$ = {\r\n get_url: function() {\r\n return this._url$2;\r\n },\r\n set_url: function(value) {\r\n this._url$2 = value;\r\n return value;\r\n }\r\n };\r\n\r\n\r\n // wwtlib.SkyImageTile\r\n\r\n function SkyImageTile(level, x, y, dataset, parent) {\r\n this.pixelCenterX = 0;\r\n this.pixelCenterY = 0;\r\n this.scaleX = 0.01;\r\n this.scaleY = 0.01;\r\n this.height = 0;\r\n this.width = 0;\r\n TangentTile.call(this, level, x, y, dataset, parent);\r\n this.pixelCenterX = dataset.get_offsetX();\r\n this.pixelCenterY = dataset.get_offsetY();\r\n this.scaleX = -(this.scaleY = dataset.get_baseTileDegrees());\r\n if (dataset.get_bottomsUp()) {\r\n this.scaleX = -this.scaleX;\r\n }\r\n this.sphereCenter = this.geoTo3dTan(0, 0);\r\n this.radius = 1.25;\r\n this.computeBoundingSphere();\r\n }\r\n var SkyImageTile$ = {\r\n getLatLngEdges: function() {\r\n var edges = new LatLngEdges();\r\n var wcsImage = ss.safeCast(this.dataset.get_wcsImage(), WcsImage);\r\n if (wcsImage != null && RenderContext.useGl) {\r\n if (RenderContext.useGlVersion2) {\r\n this.width = wcsImage.get_sizeX();\r\n this.height = wcsImage.get_sizeY();\r\n }\r\n else {\r\n this.height = this.bmp.height;\r\n this.width = this.bmp.width;\r\n if (this.bmp.height !== wcsImage.get_sizeY()) {\r\n this.pixelCenterY += this.bmp.height - wcsImage.get_sizeY();\r\n }\r\n }\r\n }\r\n else if (this.texture != null) {\r\n this.height = this.texture.naturalHeight;\r\n this.width = this.texture.naturalWidth;\r\n }\r\n else {\r\n this.height = 256;\r\n this.width = 256;\r\n }\r\n edges.latMin = 0 + (this.scaleY * (this.height - this.pixelCenterY));\r\n edges.latMax = 0 - (this.scaleY * this.pixelCenterY);\r\n edges.lngMin = 0 + (this.scaleX * this.pixelCenterX);\r\n edges.lngMax = 0 - (this.scaleX * (this.width - this.pixelCenterX));\r\n return edges;\r\n }\r\n };\r\n\r\n\r\n var $exports = ss.module('wwtlib',\r\n {\r\n IFolder: [ IFolder ],\r\n Sprite2d: [ Sprite2d, Sprite2d$, null ],\r\n ViewMoverSlew: [ ViewMoverSlew, ViewMoverSlew$, null, IViewMover ],\r\n VertexPosition: [ VertexPosition, VertexPosition$, null ],\r\n MainView: [ MainView, null, null ],\r\n MinorPlanets: [ MinorPlanets, MinorPlanets$, null ],\r\n TileCache: [ TileCache, TileCache$, null ],\r\n DistanceCalc: [ DistanceCalc, DistanceCalc$, null ],\r\n Triangle: [ Triangle, Triangle$, null ],\r\n PositionTextureVertexBuffer: [ PositionTextureVertexBuffer, PositionTextureVertexBuffer$, VertexBufferBase ],\r\n KeplerVertexBuffer: [ KeplerVertexBuffer, KeplerVertexBuffer$, VertexBufferBase ],\r\n TimeSeriesLineVertexBuffer: [ TimeSeriesLineVertexBuffer, TimeSeriesLineVertexBuffer$, VertexBufferBase ],\r\n TimeSeriesPointVertexBuffer: [ TimeSeriesPointVertexBuffer, TimeSeriesPointVertexBuffer$, VertexBufferBase ],\r\n PositionColoredVertexBuffer: [ PositionColoredVertexBuffer, PositionColoredVertexBuffer$, VertexBufferBase ],\r\n PositionColoredTexturedVertexBuffer: [ PositionColoredTexturedVertexBuffer, PositionColoredTexturedVertexBuffer$, VertexBufferBase ],\r\n LayerCollection: [ LayerCollection, LayerCollection$, Layer ]\r\n },\r\n {\r\n DAY_OF_WEEK: DAY_OF_WEEK,\r\n EO: EO,\r\n ScaleTypes: ScaleTypes,\r\n URLRewriteMode: URLRewriteMode,\r\n SolarSystemObjects: SolarSystemObjects,\r\n InterpolationType: InterpolationType,\r\n PointType: PointType,\r\n LocationHint: LocationHint,\r\n FolderGroup: FolderGroup,\r\n FolderRefreshType: FolderRefreshType,\r\n FolderType: FolderType,\r\n ThumbnailSize: ThumbnailSize,\r\n CullMode: CullMode,\r\n PointScaleTypes: PointScaleTypes,\r\n ProjectionType: ProjectionType,\r\n ImageSetType: ImageSetType,\r\n BandPass: BandPass,\r\n Classification: Classification,\r\n DataTypes: DataTypes,\r\n AltUnits: AltUnits,\r\n FadeType: FadeType,\r\n ReferenceFrames: ReferenceFrames,\r\n ReferenceFrameTypes: ReferenceFrameTypes,\r\n CoordinatesTypes: CoordinatesTypes,\r\n AltTypes: AltTypes,\r\n MarkerMixes: MarkerMixes,\r\n ColorMaps: ColorMaps,\r\n PlotTypes: PlotTypes,\r\n MarkerScales: MarkerScales,\r\n RAUnits: RAUnits,\r\n Primitives: Primitives,\r\n Alignment: Alignment,\r\n StockSkyOverlayTypes: StockSkyOverlayTypes,\r\n OverlayAnchor: OverlayAnchor,\r\n AudioType: AudioType,\r\n ShapeType: ShapeType,\r\n LoopTypes: LoopTypes,\r\n SelectionAnchor: SelectionAnchor,\r\n TextBorderStyle: TextBorderStyle,\r\n UserLevel: UserLevel,\r\n TransitionType: TransitionType,\r\n Keys: Keys,\r\n DialogResult: DialogResult,\r\n Formatting: Formatting,\r\n StateType: StateType,\r\n IThumbnail: [ IThumbnail ],\r\n IPlace: [ IPlace ],\r\n IUiController: [ IUiController ],\r\n IViewMover: [ IViewMover ],\r\n IUIServicesCallbacks: [ IUIServicesCallbacks ],\r\n ISettings: [ ISettings ],\r\n IUndoStep: [ IUndoStep ],\r\n Imports: [ Imports, null, null ],\r\n GFX: [ GFX, null, null ],\r\n ABR: [ ABR, ABR$, null ],\r\n ACFT: [ ACFT, ACFT$, null ],\r\n ASEP: [ ASEP, ASEP$, null ],\r\n COR: [ COR, COR$, null ],\r\n C3D: [ C3D, C3D$, null ],\r\n CT: [ CT, CT$, null ],\r\n CalD: [ CalD, CalD$, null ],\r\n DT: [ DT, DT$, null ],\r\n DYT: [ DYT, DYT$, null ],\r\n CAAEarth: [ CAAEarth, CAAEarth$, null ],\r\n VSC: [ VSC, VSC$, null ],\r\n CAAEclipticalElementDetails: [ CAAEclipticalElementDetails, CAAEclipticalElementDetails$, null ],\r\n CAAEclipticalElements: [ CAAEclipticalElements, CAAEclipticalElements$, null ],\r\n EPO: [ EPO, EPO$, null ],\r\n EOE: [ EOE, EOE$, null ],\r\n EPD: [ EPD, EPD$, null ],\r\n EOD: [ EOD, EOD$, null ],\r\n ELL: [ ELL, ELL$, null ],\r\n EOT: [ EOT, EOT$, null ],\r\n CAAFK5: [ CAAFK5, CAAFK5$, null ],\r\n GMD: [ GMD, GMD$, null ],\r\n GMDS: [ GMDS, GMDS$, null ],\r\n GM: [ GM, GM$, null ],\r\n CAAGlobe: [ CAAGlobe, CAAGlobe$, null ],\r\n IFR: [ IFR, IFR$, null ],\r\n INTP: [ INTP, INTP$, null ],\r\n CAAJupiter: [ CAAJupiter, CAAJupiter$, null ],\r\n CAAKepler: [ CAAKepler, CAAKepler$, null ],\r\n CAAMars: [ CAAMars, CAAMars$, null ],\r\n CAAMercury: [ CAAMercury, CAAMercury$, null ],\r\n CAAMoon: [ CAAMoon, CAAMoon$, null ],\r\n MoonCoefficient1: [ MoonCoefficient1, MoonCoefficient1$, null ],\r\n MoonCoefficient2: [ MoonCoefficient2, MoonCoefficient2$, null ],\r\n MIFR: [ MIFR, MIFR$, null ],\r\n CAAMoonNodes: [ CAAMoonNodes, CAAMoonNodes$, null ],\r\n CAAMoonPerigeeApogee: [ CAAMoonPerigeeApogee, CAAMoonPerigeeApogee$, null ],\r\n MPAC: [ MPAC, MPAC$, null ],\r\n CAAMoonPhases: [ CAAMoonPhases, CAAMoonPhases$, null ],\r\n CAANeptune: [ CAANeptune, CAANeptune$, null ],\r\n CAANutation: [ CAANutation, CAANutation$, null ],\r\n NUC: [ NUC, NUC$, null ],\r\n CAATopocentricEclipticDetails: [ CAATopocentricEclipticDetails, CAATopocentricEclipticDetails$, null ],\r\n CAAParallax: [ CAAParallax, CAAParallax$, null ],\r\n CAAPhysicalJupiterDetails: [ CAAPhysicalJupiterDetails, CAAPhysicalJupiterDetails$, null ],\r\n CAAPhysicalJupiter: [ CAAPhysicalJupiter, CAAPhysicalJupiter$, null ],\r\n CAAPhysicalMarsDetails: [ CAAPhysicalMarsDetails, CAAPhysicalMarsDetails$, null ],\r\n CAAPhysicalMars: [ CAAPhysicalMars, CAAPhysicalMars$, null ],\r\n CAAPhysicalSunDetails: [ CAAPhysicalSunDetails, CAAPhysicalSunDetails$, null ],\r\n CAAPhysicalSun: [ CAAPhysicalSun, CAAPhysicalSun$, null ],\r\n CAAPluto: [ CAAPluto, CAAPluto$, null ],\r\n PlutoCoefficient1: [ PlutoCoefficient1, PlutoCoefficient1$, null ],\r\n PlutoCoefficient2: [ PlutoCoefficient2, PlutoCoefficient2$, null ],\r\n CAAPrecession: [ CAAPrecession, CAAPrecession$, null ],\r\n CAARiseTransitSetDetails: [ CAARiseTransitSetDetails, CAARiseTransitSetDetails$, null ],\r\n CAARiseTransitSet: [ CAARiseTransitSet, CAARiseTransitSet$, null ],\r\n CAASaturn: [ CAASaturn, CAASaturn$, null ],\r\n CAASaturnRingDetails: [ CAASaturnRingDetails, CAASaturnRingDetails$, null ],\r\n CAASaturnRings: [ CAASaturnRings, CAASaturnRings$, null ],\r\n CAASidereal: [ CAASidereal, CAASidereal$, null ],\r\n CAAStellarMagnitudes: [ CAAStellarMagnitudes, CAAStellarMagnitudes$, null ],\r\n CAASun: [ CAASun, CAASun$, null ],\r\n CAAUranus: [ CAAUranus, CAAUranus$, null ],\r\n CAAVenus: [ CAAVenus, CAAVenus$, null ],\r\n FitsProperties: [ FitsProperties, FitsProperties$, null ],\r\n HipsProperties: [ HipsProperties, HipsProperties$, null ],\r\n FastMath: [ FastMath, FastMath$, null ],\r\n HealpixTables: [ HealpixTables, HealpixTables$, null ],\r\n Xyf: [ Xyf, Xyf$, null ],\r\n HealpixUtils: [ HealpixUtils, HealpixUtils$, null ],\r\n Hploc: [ Hploc, Hploc$, null ],\r\n Pointing: [ Pointing, Pointing$, null ],\r\n URLHelpers: [ URLHelpers, URLHelpers$, null ],\r\n Annotation: [ Annotation, Annotation$, null ],\r\n AstroRaDec: [ AstroRaDec, AstroRaDec$, null ],\r\n RiseSetDetails: [ RiseSetDetails, RiseSetDetails$, null ],\r\n AstroCalc: [ AstroCalc, AstroCalc$, null ],\r\n BlendState: [ BlendState, BlendState$, null ],\r\n CameraParameters: [ CameraParameters, CameraParameters$, null ],\r\n Color: [ Color, Color$, null ],\r\n Colors: [ Colors, Colors$, null ],\r\n Constellations: [ Constellations, Constellations$, null ],\r\n Lineset: [ Lineset, Lineset$, null ],\r\n Linepoint: [ Linepoint, Linepoint$, null ],\r\n ConstellationFilter: [ ConstellationFilter, ConstellationFilter$, null ],\r\n PositionTexture: [ PositionTexture, PositionTexture$, null ],\r\n PositionColoredTextured: [ PositionColoredTextured, PositionColoredTextured$, null ],\r\n PositionColored: [ PositionColored, PositionColored$, null ],\r\n PositionNormalTexturedTangent: [ PositionNormalTexturedTangent, PositionNormalTexturedTangent$, null ],\r\n Vector3d: [ Vector3d, Vector3d$, null ],\r\n Vector2d: [ Vector2d, Vector2d$, null ],\r\n Matrix3d: [ Matrix3d, Matrix3d$, null ],\r\n Matrix2d: [ Matrix2d, Matrix2d$, null ],\r\n DoubleUtilities: [ DoubleUtilities, null, null ],\r\n PlaneD: [ PlaneD, PlaneD$, null ],\r\n Vector4d: [ Vector4d, Vector4d$, null ],\r\n PositionNormalTexturedX2: [ PositionNormalTexturedX2, PositionNormalTexturedX2$, null ],\r\n PositionNormalTextured: [ PositionNormalTextured, PositionNormalTextured$, null ],\r\n SphereHull: [ SphereHull, SphereHull$, null ],\r\n ConvexHull: [ ConvexHull, ConvexHull$, null ],\r\n Folder: [ Folder, Folder$, null, IThumbnail ],\r\n FolderBrowser: [ FolderBrowser, FolderBrowser$, null ],\r\n FolderUp: [ FolderUp, FolderUp$, null, IThumbnail ],\r\n ShortIndexBuffer: [ ShortIndexBuffer, ShortIndexBuffer$, null ],\r\n IndexBuffer: [ IndexBuffer, IndexBuffer$, null, ss.IDisposable ],\r\n VertexBufferBase: [ VertexBufferBase, VertexBufferBase$, null, ss.IDisposable ],\r\n Dates: [ Dates, Dates$, null ],\r\n SimpleLineList: [ SimpleLineList, SimpleLineList$, null ],\r\n OrbitLineList: [ OrbitLineList, OrbitLineList$, null ],\r\n LineList: [ LineList, LineList$, null ],\r\n TriangleList: [ TriangleList, TriangleList$, null ],\r\n TriangleFanList: [ TriangleFanList, TriangleFanList$, null ],\r\n PointList: [ PointList, PointList$, null ],\r\n TimeSeriesLineVertex: [ TimeSeriesLineVertex, TimeSeriesLineVertex$, null ],\r\n TimeSeriesPointVertex: [ TimeSeriesPointVertex, TimeSeriesPointVertex$, null ],\r\n SimpleLineShader: [ SimpleLineShader, SimpleLineShader$, null ],\r\n SimpleLineShader2D: [ SimpleLineShader2D, SimpleLineShader2D$, null ],\r\n OrbitLineShader: [ OrbitLineShader, OrbitLineShader$, null ],\r\n LineShaderNormalDates: [ LineShaderNormalDates, LineShaderNormalDates$, null ],\r\n TimeSeriesPointSpriteShader: [ TimeSeriesPointSpriteShader, TimeSeriesPointSpriteShader$, null ],\r\n KeplerPointSpriteShader: [ KeplerPointSpriteShader, KeplerPointSpriteShader$, null ],\r\n EllipseShader: [ EllipseShader, EllipseShader$, null ],\r\n ModelShader: [ ModelShader, ModelShader$, null ],\r\n ModelShaderTan: [ ModelShaderTan, ModelShaderTan$, null ],\r\n TileShader: [ TileShader, TileShader$, null ],\r\n FitsShader: [ FitsShader, FitsShader$, null ],\r\n ImageShader: [ ImageShader, ImageShader$, null ],\r\n ImageShader2: [ ImageShader2, ImageShader2$, null ],\r\n SpriteShader: [ SpriteShader, SpriteShader$, null ],\r\n ShapeSpriteShader: [ ShapeSpriteShader, ShapeSpriteShader$, null ],\r\n TextShader: [ TextShader, TextShader$, null ],\r\n Tessellator: [ Tessellator, Tessellator$, null ],\r\n Texture: [ Texture, Texture$, null, ss.IDisposable ],\r\n Grids: [ Grids, Grids$, null ],\r\n Imageset: [ Imageset, Imageset$, null, IThumbnail ],\r\n ViewMoverKenBurnsStyle: [ ViewMoverKenBurnsStyle, ViewMoverKenBurnsStyle$, null, IViewMover ],\r\n KeplerVertex: [ KeplerVertex, KeplerVertex$, null ],\r\n ScaleMap: [ ScaleMap, ScaleMap$, null ],\r\n ColorMapContainer: [ ColorMapContainer, ColorMapContainer$, null ],\r\n Layer: [ Layer, Layer$, null ],\r\n DomainValue: [ DomainValue, DomainValue$, null ],\r\n LayerManager: [ LayerManager, LayerManager$, null ],\r\n LayerMap: [ LayerMap, LayerMap$, null ],\r\n SkyOverlays: [ SkyOverlays, SkyOverlays$, null ],\r\n GroundOverlayLayer: [ GroundOverlayLayer, GroundOverlayLayer$, null ],\r\n FrameTarget: [ FrameTarget, FrameTarget$, null ],\r\n LayerUI: [ LayerUI, LayerUI$, null ],\r\n LayerUIMenuItem: [ LayerUIMenuItem, LayerUIMenuItem$, null ],\r\n LayerUITreeNode: [ LayerUITreeNode, LayerUITreeNode$, null ],\r\n Group: [ Group, Group$, null ],\r\n Mesh: [ Mesh, Mesh$, null, ss.IDisposable ],\r\n Object3d: [ Object3d, Object3d$, null ],\r\n ObjectNode: [ ObjectNode, ObjectNode$, null ],\r\n Orbit: [ Orbit, Orbit$, null ],\r\n EllipseRenderer: [ EllipseRenderer, EllipseRenderer$, null ],\r\n ReferenceFrame: [ ReferenceFrame, ReferenceFrame$, null ],\r\n KmlCoordinate: [ KmlCoordinate, KmlCoordinate$, null ],\r\n KmlLineList: [ KmlLineList, KmlLineList$, null ],\r\n PushPin: [ PushPin, PushPin$, null ],\r\n Table: [ Table, Table$, null ],\r\n VoTable: [ VoTable, VoTable$, null ],\r\n VoRow: [ VoRow, VoRow$, null ],\r\n VoColumn: [ VoColumn, VoColumn$, null ],\r\n WcsImage: [ WcsImage, WcsImage$, null ],\r\n Place: [ Place, Place$, null, IThumbnail, IPlace ],\r\n KeplerianElements: [ KeplerianElements, KeplerianElements$, null ],\r\n BodyAngles: [ BodyAngles, BodyAngles$, null ],\r\n Planets: [ Planets, Planets$, null ],\r\n Material: [ Material, Material$, null ],\r\n InViewReturnMessage: [ InViewReturnMessage, InViewReturnMessage$, null ],\r\n RenderContext: [ RenderContext, RenderContext$, null ],\r\n RenderTriangle: [ RenderTriangle, RenderTriangle$, null ],\r\n ScriptInterface: [ ScriptInterface, ScriptInterface$, null ],\r\n Settings: [ Settings, Settings$, null, ISettings ],\r\n Text3dBatch: [ Text3dBatch, Text3dBatch$, null ],\r\n GlyphItem: [ GlyphItem, GlyphItem$, null ],\r\n GlyphCache: [ GlyphCache, GlyphCache$, null, ss.IDisposable ],\r\n Text3d: [ Text3d, Text3d$, null ],\r\n SpaceTimeController: [ SpaceTimeController, SpaceTimeController$, null ],\r\n Star: [ Star, Star$, null ],\r\n Galaxy: [ Galaxy, Galaxy$, null ],\r\n LatLngEdges: [ LatLngEdges, LatLngEdges$, null ],\r\n Tile: [ Tile, Tile$, null ],\r\n Tour: [ Tour, Tour$, null, IThumbnail ],\r\n FileEntry: [ FileEntry, FileEntry$, null ],\r\n FileCabinet: [ FileCabinet, FileCabinet$, null ],\r\n SettingParameter: [ SettingParameter, SettingParameter$, null ],\r\n Overlay: [ Overlay, Overlay$, null ],\r\n Selection: [ Selection, Selection$, null ],\r\n TextObject: [ TextObject, TextObject$, null ],\r\n TourDocument: [ TourDocument, TourDocument$, null ],\r\n TourEditTab: [ TourEditTab, TourEditTab$, null ],\r\n TourEditor: [ TourEditor, TourEditor$, null, IUiController ],\r\n OverlayList: [ OverlayList, OverlayList$, null ],\r\n TourEdit: [ TourEdit, TourEdit$, null ],\r\n SoundEditor: [ SoundEditor, SoundEditor$, null ],\r\n TourStopList: [ TourStopList, TourStopList$, null ],\r\n TimeLine: [ TimeLine, TimeLine$, null ],\r\n TourPlayer: [ TourPlayer, TourPlayer$, null, IUiController ],\r\n MasterTime: [ MasterTime, MasterTime$, null ],\r\n TourStop: [ TourStop, TourStop$, null, ISettings ],\r\n LayerInfo: [ LayerInfo, LayerInfo$, null ],\r\n UndoTourStopChange: [ UndoTourStopChange, UndoTourStopChange$, null, IUndoStep ],\r\n Undo: [ Undo, Undo$, null ],\r\n UndoStep: [ UndoStep, UndoStep$, null, IUndoStep ],\r\n UndoTourSlidelistChange: [ UndoTourSlidelistChange, UndoTourSlidelistChange$, null, IUndoStep ],\r\n UndoTourPropertiesChange: [ UndoTourPropertiesChange, UndoTourPropertiesChange$, null, IUndoStep ],\r\n UiTools: [ UiTools, UiTools$, null ],\r\n Util: [ Util, Util$, null ],\r\n Rectangle: [ Rectangle, Rectangle$, null ],\r\n Guid: [ Guid, Guid$, null ],\r\n Enums: [ Enums, Enums$, null ],\r\n Mouse: [ Mouse, null, null ],\r\n Language: [ Language, Language$, null ],\r\n Cursor: [ Cursor, Cursor$, null ],\r\n Cursors: [ Cursors, Cursors$, null ],\r\n SelectLink: [ SelectLink, SelectLink$, null ],\r\n PopupVolume: [ PopupVolume, PopupVolume$, null ],\r\n PopupColorPicker: [ PopupColorPicker, PopupColorPicker$, null ],\r\n OverlayProperties: [ OverlayProperties, OverlayProperties$, null ],\r\n BinaryReader: [ BinaryReader, BinaryReader$, null ],\r\n Bitmap: [ Bitmap, Bitmap$, null ],\r\n ColorPicker: [ ColorPicker, ColorPicker$, null ],\r\n ContextMenuStrip: [ ContextMenuStrip, ContextMenuStrip$, null ],\r\n ToolStripMenuItem: [ ToolStripMenuItem, ToolStripMenuItem$, null ],\r\n TagMe: [ TagMe, TagMe$, null ],\r\n Dialog: [ Dialog, Dialog$, null ],\r\n Histogram: [ Histogram, Histogram$, null ],\r\n SimpleInput: [ SimpleInput, SimpleInput$, null ],\r\n XmlTextWriter: [ XmlTextWriter, XmlTextWriter$, null ],\r\n VizLayer: [ VizLayer, VizLayer$, null ],\r\n DataItem: [ DataItem, DataItem$, null ],\r\n WebFile: [ WebFile, WebFile$, null ],\r\n FolderDownloadAction: [ FolderDownloadAction, FolderDownloadAction$, null ],\r\n Wtml: [ Wtml, Wtml$, null ],\r\n WWTControl: [ WWTControl, WWTControl$, null ],\r\n WWTElementEvent: [ WWTElementEvent, WWTElementEvent$, null ],\r\n Coordinates: [ Coordinates, Coordinates$, null ],\r\n Fxyf: [ Fxyf, Fxyf$, HealpixTables ],\r\n HealpixTile: [ HealpixTile, HealpixTile$, Tile ],\r\n FitsImage: [ FitsImage, FitsImage$, WcsImage ],\r\n Circle: [ Circle, Circle$, Annotation ],\r\n Poly: [ Poly, Poly$, Annotation ],\r\n PolyLine: [ PolyLine, PolyLine$, Annotation ],\r\n EquirectangularTile: [ EquirectangularTile, EquirectangularTile$, Tile ],\r\n PositionVertexBuffer: [ PositionVertexBuffer, PositionVertexBuffer$, VertexBufferBase ],\r\n PositionNormalTexturedVertexBuffer: [ PositionNormalTexturedVertexBuffer, PositionNormalTexturedVertexBuffer$, VertexBufferBase ],\r\n PositionNormalTexturedTangentVertexBuffer: [ PositionNormalTexturedTangentVertexBuffer, PositionNormalTexturedTangentVertexBuffer$, VertexBufferBase ],\r\n ScaleLinear: [ ScaleLinear, ScaleLinear$, ScaleMap ],\r\n ScaleLog: [ ScaleLog, ScaleLog$, ScaleMap ],\r\n ScalePow: [ ScalePow, ScalePow$, ScaleMap ],\r\n ScaleSqrt: [ ScaleSqrt, ScaleSqrt$, ScaleMap ],\r\n HistogramEqualization: [ HistogramEqualization, HistogramEqualization$, ScaleMap ],\r\n GreatCirlceRouteLayer: [ GreatCirlceRouteLayer, GreatCirlceRouteLayer$, Layer ],\r\n GridLayer: [ GridLayer, GridLayer$, Layer ],\r\n ImageSetLayer: [ ImageSetLayer, ImageSetLayer$, Layer ],\r\n Object3dLayer: [ Object3dLayer, Object3dLayer$, Layer, IUiController ],\r\n Object3dLayerUI: [ Object3dLayerUI, Object3dLayerUI$, LayerUI ],\r\n OrbitLayer: [ OrbitLayer, OrbitLayer$, Layer ],\r\n OrbitLayerUI: [ OrbitLayerUI, OrbitLayerUI$, LayerUI ],\r\n SpreadSheetLayer: [ SpreadSheetLayer, SpreadSheetLayer$, Layer ],\r\n TimeSeriesLayer: [ TimeSeriesLayer, TimeSeriesLayer$, Layer ],\r\n VoTableLayer: [ VoTableLayer, VoTableLayer$, Layer ],\r\n MercatorTile: [ MercatorTile, MercatorTile$, Tile ],\r\n PlotTile: [ PlotTile, PlotTile$, Tile ],\r\n TangentTile: [ TangentTile, TangentTile$, Tile ],\r\n ToastTile: [ ToastTile, ToastTile$, Tile ],\r\n BitmapOverlay: [ BitmapOverlay, BitmapOverlay$, Overlay ],\r\n TextOverlay: [ TextOverlay, TextOverlay$, Overlay ],\r\n ShapeOverlay: [ ShapeOverlay, ShapeOverlay$, Overlay ],\r\n AudioOverlay: [ AudioOverlay, AudioOverlay$, Overlay ],\r\n FlipbookOverlay: [ FlipbookOverlay, FlipbookOverlay$, Overlay ],\r\n ToolStripSeparator: [ ToolStripSeparator, ToolStripSeparator$, ToolStripMenuItem ],\r\n FrameWizard: [ FrameWizard, FrameWizard$, Dialog ],\r\n ReferenceFrameProps: [ ReferenceFrameProps, ReferenceFrameProps$, Dialog ],\r\n GreatCircleDialog: [ GreatCircleDialog, GreatCircleDialog$, Dialog ],\r\n DataVizWizard: [ DataVizWizard, DataVizWizard$, Dialog ],\r\n FitsImageTile: [ FitsImageTile, FitsImageTile$, FitsImage ],\r\n FitsImageJs: [ FitsImageJs, FitsImageJs$, FitsImage ],\r\n ISSLayer: [ ISSLayer, ISSLayer$, Object3dLayer ],\r\n CatalogSpreadSheetLayer: [ CatalogSpreadSheetLayer, CatalogSpreadSheetLayer$, SpreadSheetLayer ],\r\n SlideChangedEventArgs: [ SlideChangedEventArgs, SlideChangedEventArgs$, ss.EventArgs ],\r\n ArrivedEventArgs: [ ArrivedEventArgs, ArrivedEventArgs$, ss.EventArgs ],\r\n AnnotationClickEventArgs: [ AnnotationClickEventArgs, AnnotationClickEventArgs$, ss.EventArgs ],\r\n CollectionLoadedEventArgs: [ CollectionLoadedEventArgs, CollectionLoadedEventArgs$, ss.EventArgs ],\r\n SkyImageTile: [ SkyImageTile, SkyImageTile$, TangentTile ]\r\n });\r\n\r\n let pako;\r\n if (typeof window !== \"undefined\" && \"pako\" in window) {;\r\n pako = window[\"pako\"];\r\n } else {;\r\n import('pako').then(function(result) { pako = result; });\r\n };\r\n let uuid;\r\n if (typeof window !== \"undefined\" && \"uuid\" in window) {;\r\n uuid = window[\"uuid\"];\r\n } else {;\r\n import('uuid').then(function(result) { uuid = result; });\r\n };\r\n GFX.g_ACft = [ new ACFT(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1719914, -2, -25, 0, 25, -13, 1578089, 156, 10, 32, 684185, -358), new ACFT(0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6434, 141, 28007, -107, 25697, -95, -5904, -130, 11141, -48, -2559, -55), new ACFT(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 715, 0, 0, 0, 6, 0, -657, 0, -15, 0, -282, 0), new ACFT(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 715, 0, 0, 0, 0, 0, -656, 0, 0, 0, -285, 0), new ACFT(0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 486, -5, -236, -4, -216, -4, -446, 5, -94, 0, -193, 0), new ACFT(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 2, 0, -147, 0, -6, 0, -61, 0), new ACFT(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -59, 0), new ACFT(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 39, 0, 0, 0, 0, 0, -36, 0, 0, 0, -16, 0), new ACFT(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 33, 0, -10, 0, -9, 0, -30, 0, -5, 0, -13, 0), new ACFT(0, 2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, -28, 0, 0, 0, -12, 0), new ACFT(0, 3, -8, 3, 0, 0, 0, 0, 0, 0, 0, 8, 0, -28, 0, 25, 0, 8, 0, 11, 0, 3, 0), new ACFT(0, 5, -8, 3, 0, 0, 0, 0, 0, 0, 0, 8, 0, -28, 0, -25, 0, -8, 0, -11, 0, -3, 0), new ACFT(2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, -19, 0, 0, 0, -8, 0), new ACFT(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 0), new ACFT(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, -16, 0, 0, 0, -7, 0), new ACFT(0, 1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 1, 0, 7, 0), new ACFT(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, -15, 0, -3, 0, -6, 0), new ACFT(0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 11, 0, -1, 0, -1, 0, -10, 0, -1, 0, -5, 0), new ACFT(2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -10, 0, 0, 0, -4, 0, 0, 0), new ACFT(0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -11, 0, -2, 0, -2, 0, 9, 0, -1, 0, 4, 0), new ACFT(0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -8, 0, -8, 0, 6, 0, -3, 0, 3, 0), new ACFT(0, 3, 0, -2, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0), new ACFT(1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, -9, 0, 0, 0, -4, 0), new ACFT(2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, -8, 0, 0, 0, -4, 0), new ACFT(0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -8, 0, 0, 0, -3, 0, 0, 0), new ACFT(2, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 8, 0, 0, 0, 3, 0, 0, 0), new ACFT(0, 3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, -8, 0, 0, 0, -3, 0), new ACFT(0, 0, 0, 0, 0, 0, 0, 1, 2, -1, 0, 8, 0, 0, 0, 0, 0, -7, 0, 0, 0, -3, 0), new ACFT(8, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -7, 0, -6, 0, 4, 0, -3, 0, 2, 0), new ACFT(8, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -7, 0, 6, 0, -4, 0, 3, 0, -2, 0), new ACFT(0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -5, 0, -4, 0, 5, 0, -2, 0, 2, 0), new ACFT(3, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -2, 0, -7, 0, 1, 0, -4, 0), new ACFT(0, 2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 4, 0, -6, 0, -5, 0, -4, 0, -2, 0, -2, 0), new ACFT(3, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -6, 0, 0, 0, -3, 0, 0, 0), new ACFT(0, 2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -5, 0, -4, 0, -5, 0, -2, 0, -2, 0), new ACFT(0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 5, 0, 0, 0, 0, 0, -5, 0, 0, 0, -2, 0) ];\r\n GFX.deltaTTable = [ 121, 112, 103, 95, 88, 82, 77, 72, 68, 63, 60, 56, 53, 51, 48, 46, 44, 42, 40, 38, 35, 33, 31, 29, 26, 24, 22, 20, 18, 16, 14, 12, 11, 10, 9, 8, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 14, 13, 13.1, 12.5, 12.2, 12, 12, 12, 12, 12, 12, 11.9, 11.6, 11, 10.2, 9.2, 8.2, 7.1, 6.2, 5.6, 5.4, 5.3, 5.4, 5.6, 5.9, 6.2, 6.5, 6.8, 7.1, 7.3, 7.5, 7.6, 7.7, 7.3, 6.2, 5.2, 2.7, 1.4, -1.2, -2.8, -3.8, -4.8, -5.5, -5.3, -5.6, -5.7, -5.9, -6, -6.3, -6.5, -6.2, -4.7, -2.8, -0.1, 2.6, 5.3, 7.7, 10.4, 13.3, 16, 18.2, 20.2, 21.2, 22.4, 23.5, 23.8, 24.3, 24, 23.9, 23.9, 23.7, 24, 24.3, 25.3, 26.2, 27.3, 28.2, 29.1, 30, 30.7, 31.4, 32.2, 33.1, 34, 35, 36.5, 38.3, 40.18, 42.2, 44.5, 46.5, 48.5, 50.54, 52.2, 53.8, 54.9, 55.8, 56.86, 58.31, 59.99, 61.63, 62.97 ];\r\n GFX.g_L0EarthCoefficients = [ new VSC(175347046, 0, 0), new VSC(3341656, 4.6692568, 6283.07585), new VSC(34894, 4.6261, 12566.1517), new VSC(3497, 2.7441, 5753.3849), new VSC(3418, 2.8289, 3.5231), new VSC(3136, 3.6277, 77713.7715), new VSC(2676, 4.4181, 7860.4194), new VSC(2343, 6.1352, 3930.2097), new VSC(1324, 0.7425, 11506.7698), new VSC(1273, 2.0371, 529.691), new VSC(1199, 1.1096, 1577.3435), new VSC(990, 5.233, 5884.927), new VSC(902, 2.045, 26.298), new VSC(857, 3.508, 398.149), new VSC(780, 1.179, 5223.694), new VSC(753, 2.533, 5507.553), new VSC(505, 4.583, 18849.228), new VSC(492, 4.205, 775.523), new VSC(357, 2.92, 0.067), new VSC(317, 5.849, 11790.629), new VSC(284, 1.899, 796.288), new VSC(271, 0.315, 10977.079), new VSC(243, 0.345, 5486.778), new VSC(206, 4.806, 2544.314), new VSC(205, 1.869, 5573.143), new VSC(202, 2.458, 6069.777), new VSC(156, 0.833, 213.299), new VSC(132, 3.411, 2942.463), new VSC(126, 1.083, 20.775), new VSC(115, 0.645, 0.98), new VSC(103, 0.636, 4694.003), new VSC(102, 0.976, 15720.839), new VSC(102, 4.267, 7.114), new VSC(99, 6.21, 2146.17), new VSC(98, 0.68, 155.42), new VSC(86, 5.98, 161000.69), new VSC(85, 1.3, 6275.96), new VSC(85, 3.67, 71430.7), new VSC(80, 1.81, 17260.15), new VSC(79, 3.04, 12036.46), new VSC(75, 1.76, 5088.63), new VSC(74, 3.5, 3154.69), new VSC(74, 4.68, 801.82), new VSC(70, 0.83, 9437.76), new VSC(62, 3.98, 8827.39), new VSC(61, 1.82, 7084.9), new VSC(57, 2.78, 6286.6), new VSC(56, 4.39, 14143.5), new VSC(56, 3.47, 6279.55), new VSC(52, 0.19, 12139.55), new VSC(52, 1.33, 1748.02), new VSC(51, 0.28, 5856.48), new VSC(49, 0.49, 1194.45), new VSC(41, 5.37, 8429.24), new VSC(41, 2.4, 19651.05), new VSC(39, 6.17, 10447.39), new VSC(37, 6.04, 10213.29), new VSC(37, 2.57, 1059.38), new VSC(36, 1.71, 2352.87), new VSC(36, 1.78, 6812.77), new VSC(33, 0.59, 17789.85), new VSC(30, 0.44, 83996.85), new VSC(30, 2.74, 1349.87), new VSC(25, 3.16, 4690.48) ];\r\n GFX.g_L1EarthCoefficients = [ new VSC(628331966747, 0, 0), new VSC(206059, 2.678235, 6283.07585), new VSC(4303, 2.6351, 12566.1517), new VSC(425, 1.59, 3.523), new VSC(119, 5.796, 26.298), new VSC(109, 2.966, 1577.344), new VSC(93, 2.59, 18849.23), new VSC(72, 1.14, 529.69), new VSC(68, 1.87, 398.15), new VSC(67, 4.41, 5507.55), new VSC(59, 2.89, 5223.69), new VSC(56, 2.17, 155.42), new VSC(45, 0.4, 796.3), new VSC(36, 0.47, 775.52), new VSC(29, 2.65, 7.11), new VSC(21, 5.43, 0.98), new VSC(19, 1.85, 5486.78), new VSC(19, 4.97, 213.3), new VSC(17, 2.99, 6275.96), new VSC(16, 0.03, 2544.31), new VSC(16, 1.43, 2146.17), new VSC(15, 1.21, 10977.08), new VSC(12, 2.83, 1748.02), new VSC(12, 3.26, 5088.63), new VSC(12, 5.27, 1194.45), new VSC(12, 2.08, 4694), new VSC(11, 0.77, 553.57), new VSC(10, 1.3, 6286.6), new VSC(10, 4.24, 1349.87), new VSC(9, 2.7, 242.73), new VSC(9, 5.64, 951.72), new VSC(8, 5.3, 2352.87), new VSC(6, 2.65, 9437.76), new VSC(6, 4.67, 4690.48) ];\r\n GFX.g_L2EarthCoefficients = [ new VSC(52919, 0, 0), new VSC(8720, 1.0721, 6283.0758), new VSC(309, 0.867, 12566.152), new VSC(27, 0.05, 3.52), new VSC(16, 5.19, 26.3), new VSC(16, 3.68, 155.42), new VSC(10, 0.76, 18849.23), new VSC(9, 2.06, 77713.77), new VSC(7, 0.83, 775.52), new VSC(5, 4.66, 1577.34), new VSC(4, 1.03, 7.11), new VSC(4, 3.44, 5573.14), new VSC(3, 5.14, 796.3), new VSC(3, 6.05, 5507.55), new VSC(3, 1.19, 242.73), new VSC(3, 6.12, 529.69), new VSC(3, 0.31, 398.15), new VSC(3, 2.28, 553.57), new VSC(2, 4.38, 5223.69), new VSC(2, 3.75, 0.98) ];\r\n GFX.g_L3EarthCoefficients = [ new VSC(289, 5.844, 6283.076), new VSC(35, 0, 0), new VSC(17, 5.49, 12566.15), new VSC(3, 5.2, 155.42), new VSC(1, 4.72, 3.52), new VSC(1, 5.3, 18849.23), new VSC(1, 5.97, 242.73) ];\r\n GFX.g_L4EarthCoefficients = [ new VSC(114, 3.142, 0), new VSC(8, 4.13, 6283.08), new VSC(1, 3.84, 12566.15) ];\r\n GFX.g_L5EarthCoefficients = [ new VSC(1, 3.14, 0) ];\r\n GFX.g_B0EarthCoefficients = [ new VSC(280, 3.199, 84334.662), new VSC(102, 5.422, 5507.553), new VSC(80, 3.88, 5223.69), new VSC(44, 3.7, 2352.87), new VSC(32, 4, 1577.34) ];\r\n GFX.g_B1EarthCoefficients = [ new VSC(9, 3.9, 5507.55), new VSC(6, 1.73, 5223.69) ];\r\n GFX.g_B2EarthCoefficients = [ new VSC(22378, 3.38509, 10213.28555), new VSC(282, 0, 0), new VSC(173, 5.256, 20426.571), new VSC(27, 3.87, 30639.86) ];\r\n GFX.g_B3EarthCoefficients = [ new VSC(647, 4.992, 10213.286), new VSC(20, 3.14, 0), new VSC(6, 0.77, 20426.57), new VSC(3, 5.44, 30639.86) ];\r\n GFX.g_B4EarthCoefficients = [ new VSC(14, 0.32, 10213.29) ];\r\n GFX.g_R0EarthCoefficients = [ new VSC(100013989, 0, 0), new VSC(1670700, 3.0984635, 6283.07585), new VSC(13956, 3.05525, 12566.1517), new VSC(3084, 5.1985, 77713.7715), new VSC(1628, 1.1739, 5753.3849), new VSC(1576, 2.8469, 7860.4194), new VSC(925, 5.453, 11506.77), new VSC(542, 4.564, 3930.21), new VSC(472, 3.661, 5884.927), new VSC(346, 0.964, 5507.553), new VSC(329, 5.9, 5223.694), new VSC(307, 0.299, 5573.143), new VSC(243, 4.273, 11790.629), new VSC(212, 5.847, 1577.344), new VSC(186, 5.022, 10977.079), new VSC(175, 3.012, 18849.228), new VSC(110, 5.055, 5486.778), new VSC(98, 0.89, 6069.78), new VSC(86, 5.69, 15720.84), new VSC(86, 1.27, 161000.69), new VSC(65, 0.27, 17260.15), new VSC(63, 0.92, 529.69), new VSC(57, 2.01, 83996.85), new VSC(56, 5.24, 71430.7), new VSC(49, 3.25, 2544.31), new VSC(47, 2.58, 775.52), new VSC(45, 5.54, 9437.76), new VSC(43, 6.01, 6275.96), new VSC(39, 5.36, 4694), new VSC(38, 2.39, 8827.39), new VSC(37, 0.83, 19651.05), new VSC(37, 4.9, 12139.55), new VSC(36, 1.67, 12036.46), new VSC(35, 1.84, 2942.46), new VSC(33, 0.24, 7084.9), new VSC(32, 0.18, 5088.63), new VSC(32, 1.78, 398.15), new VSC(28, 1.21, 6286.6), new VSC(28, 1.9, 6279.55), new VSC(26, 4.59, 10447.39) ];\r\n GFX.g_R1EarthCoefficients = [ new VSC(103019, 1.10749, 6283.07585), new VSC(1721, 1.0644, 12566.1517), new VSC(702, 3.142, 0), new VSC(32, 1.02, 18849.23), new VSC(31, 2.84, 5507.55), new VSC(25, 1.32, 5223.69), new VSC(18, 1.42, 1577.34), new VSC(10, 5.91, 10977.08), new VSC(9, 1.42, 6275.96), new VSC(9, 0.27, 5486.78) ];\r\n GFX.g_R2EarthCoefficients = [ new VSC(4359, 5.7846, 6283.0758), new VSC(124, 5.579, 12566.152), new VSC(12, 3.14, 0), new VSC(9, 3.63, 77713.77), new VSC(6, 1.87, 5573.14), new VSC(3, 5.47, 18849.23) ];\r\n GFX.g_R3EarthCoefficients = [ new VSC(145, 4.273, 6283.076), new VSC(7, 3.92, 12566.15) ];\r\n GFX.g_R4EarthCoefficients = [ new VSC(4, 2.56, 6283.08) ];\r\n GFX.g_L1EarthCoefficientsJ2000 = [ new VSC(628307584999, 0, 0), new VSC(206059, 2.678235, 6283.07585), new VSC(4303, 2.6351, 12566.1517), new VSC(425, 1.59, 3.523), new VSC(119, 5.796, 26.298), new VSC(109, 2.966, 1577.344), new VSC(93, 2.59, 18849.23), new VSC(72, 1.14, 529.69), new VSC(68, 1.87, 398.15), new VSC(67, 4.41, 5507.55), new VSC(59, 2.89, 5223.69), new VSC(56, 2.17, 155.42), new VSC(45, 0.4, 796.3), new VSC(36, 0.47, 775.52), new VSC(29, 2.65, 7.11), new VSC(21, 5.43, 0.98), new VSC(19, 1.85, 5486.78), new VSC(19, 4.97, 213.3), new VSC(17, 2.99, 6275.96), new VSC(16, 0.03, 2544.31), new VSC(16, 1.43, 2146.17), new VSC(15, 1.21, 10977.08), new VSC(12, 2.83, 1748.02), new VSC(12, 3.26, 5088.63), new VSC(12, 5.27, 1194.45), new VSC(12, 2.08, 4694), new VSC(11, 0.77, 553.57), new VSC(10, 1.3, 6286.6), new VSC(10, 4.24, 1349.87), new VSC(9, 2.7, 242.73), new VSC(9, 5.64, 951.72), new VSC(8, 5.3, 2352.87), new VSC(6, 2.65, 9437.76), new VSC(6, 4.67, 4690.48) ];\r\n GFX.g_L2EarthCoefficientsJ2000 = [ new VSC(8722, 1.0725, 6283.0758), new VSC(991, 3.1416, 0), new VSC(295, 0.437, 12566.152), new VSC(27, 0.05, 3.52), new VSC(16, 5.19, 26.3), new VSC(16, 3.69, 155.42), new VSC(9, 0.3, 18849.23), new VSC(9, 2.06, 77713.77), new VSC(7, 0.83, 775.52), new VSC(5, 4.66, 1577.34), new VSC(4, 1.03, 7.11), new VSC(4, 3.44, 5573.14), new VSC(3, 5.14, 796.3), new VSC(3, 6.05, 5507.55), new VSC(3, 1.19, 242.73), new VSC(3, 6.12, 529.69), new VSC(3, 0.3, 398.15), new VSC(3, 2.28, 553.57), new VSC(2, 4.38, 5223.69), new VSC(2, 3.75, 0.98) ];\r\n GFX.g_L3EarthCoefficientsJ2000 = [ new VSC(289, 5.842, 6283.076), new VSC(21, 6.05, 12566.15), new VSC(3, 5.2, 155.42), new VSC(3, 3.14, 0), new VSC(1, 4.72, 3.52), new VSC(1, 5.97, 242.73), new VSC(1, 5.54, 18849.23) ];\r\n GFX.g_L4EarthCoefficientsJ2000 = [ new VSC(8, 4.14, 6283.08), new VSC(1, 3.28, 12566.15) ];\r\n GFX.g_B1EarthCoefficientsJ2000 = [ new VSC(227778, 3.413766, 6283.07585), new VSC(3806, 3.3706, 12566.1517), new VSC(3620, 0, 0), new VSC(72, 3.33, 18849.23), new VSC(8, 3.89, 5507.55), new VSC(8, 1.79, 5223.69), new VSC(6, 5.2, 2352.87) ];\r\n GFX.g_B2EarthCoefficientsJ2000 = [ new VSC(9721, 5.1519, 6283.07585), new VSC(233, 3.1416, 0), new VSC(134, 0.644, 12566.152), new VSC(7, 1.07, 18849.23) ];\r\n GFX.g_B3EarthCoefficientsJ2000 = [ new VSC(276, 0.595, 6283.076), new VSC(17, 3.14, 0), new VSC(4, 0.12, 12566.15) ];\r\n GFX.g_B4EarthCoefficientsJ2000 = [ new VSC(6, 2.27, 6283.08), new VSC(1, 0, 0) ];\r\n GFX.g_L0JupiterCoefficients = [ new VSC(59954691, 0, 0), new VSC(9695899, 5.0619179, 529.6909651), new VSC(573610, 1.444062, 7.113547), new VSC(306389, 5.417347, 1059.38193), new VSC(97178, 4.14265, 632.78374), new VSC(72903, 3.64043, 522.57742), new VSC(64264, 3.41145, 103.09277), new VSC(39806, 2.29377, 419.48464), new VSC(38858, 1.27232, 316.39187), new VSC(27965, 1.78455, 536.80451), new VSC(13590, 5.77481, 1589.0729), new VSC(8769, 3.63, 949.1756), new VSC(8246, 3.5823, 206.1855), new VSC(7368, 5.081, 735.8765), new VSC(6263, 0.025, 213.2991), new VSC(6114, 4.5132, 1162.4747), new VSC(5305, 4.1863, 1052.2684), new VSC(5305, 1.3067, 14.2271), new VSC(4905, 1.3208, 110.2063), new VSC(4647, 4.6996, 3.9322), new VSC(3045, 4.3168, 426.5982), new VSC(2610, 1.5667, 846.0828), new VSC(2028, 1.0638, 3.1814), new VSC(1921, 0.9717, 639.8973), new VSC(1765, 2.1415, 1066.4955), new VSC(1723, 3.8804, 1265.5675), new VSC(1633, 3.582, 515.4639), new VSC(1432, 4.2968, 625.6702), new VSC(973, 4.098, 95.979), new VSC(884, 2.437, 412.371), new VSC(733, 6.085, 838.969), new VSC(731, 3.806, 1581.959), new VSC(709, 1.293, 742.99), new VSC(692, 6.134, 2118.764), new VSC(614, 4.109, 1478.867), new VSC(582, 4.54, 309.278), new VSC(495, 3.756, 323.505), new VSC(441, 2.958, 454.909), new VSC(417, 1.036, 2.488), new VSC(390, 4.897, 1692.166), new VSC(376, 4.703, 1368.66), new VSC(341, 5.715, 533.623), new VSC(330, 4.74, 0.048), new VSC(262, 1.877, 0.963), new VSC(261, 0.82, 380.128), new VSC(257, 3.724, 199.072), new VSC(244, 5.22, 728.763), new VSC(235, 1.227, 909.819), new VSC(220, 1.651, 543.918), new VSC(207, 1.855, 525.759), new VSC(202, 1.807, 1375.774), new VSC(197, 5.293, 1155.361), new VSC(175, 3.73, 942.062), new VSC(175, 3.226, 1898.351), new VSC(175, 5.91, 956.289), new VSC(158, 4.365, 1795.258), new VSC(151, 3.906, 74.782), new VSC(149, 4.377, 1685.052), new VSC(141, 3.136, 491.558), new VSC(138, 1.318, 1169.588), new VSC(131, 4.169, 1045.155), new VSC(117, 2.5, 1596.186), new VSC(117, 3.389, 0.521), new VSC(106, 4.554, 526.51) ];\r\n GFX.g_L1JupiterCoefficients = [ new VSC(52993480757, 0, 0), new VSC(489741, 4.220667, 529.690965), new VSC(228919, 6.026475, 7.113547), new VSC(27655, 4.57266, 1059.38193), new VSC(20721, 5.45939, 522.57742), new VSC(12106, 0.16986, 536.80451), new VSC(6068, 4.4242, 103.0928), new VSC(5434, 3.9848, 419.4846), new VSC(4238, 5.8901, 14.2271), new VSC(2212, 5.2677, 206.1855), new VSC(1746, 4.9267, 1589.0729), new VSC(1296, 5.5513, 3.1814), new VSC(1173, 5.8565, 1052.2684), new VSC(1163, 0.5145, 3.9322), new VSC(1099, 5.307, 515.4639), new VSC(1007, 0.4648, 735.8765), new VSC(1004, 3.1504, 426.5982), new VSC(848, 5.758, 110.206), new VSC(827, 4.803, 213.299), new VSC(816, 0.586, 1066.495), new VSC(725, 5.518, 639.897), new VSC(568, 5.989, 625.67), new VSC(474, 4.132, 412.371), new VSC(413, 5.737, 95.979), new VSC(345, 4.242, 632.784), new VSC(336, 3.732, 1162.475), new VSC(234, 4.035, 949.176), new VSC(234, 6.243, 309.278), new VSC(199, 1.505, 838.969), new VSC(195, 2.219, 323.505), new VSC(187, 6.086, 742.99), new VSC(184, 6.28, 543.918), new VSC(171, 5.417, 199.072), new VSC(131, 0.626, 728.763), new VSC(115, 0.68, 846.083), new VSC(115, 5.286, 2118.764), new VSC(108, 4.493, 956.289), new VSC(80, 5.82, 1045.15), new VSC(72, 5.34, 942.06), new VSC(70, 5.97, 532.87), new VSC(67, 5.73, 21.34), new VSC(66, 0.13, 526.51), new VSC(65, 6.09, 1581.96), new VSC(59, 0.59, 1155.36), new VSC(58, 0.99, 1596.19), new VSC(57, 5.97, 1169.59), new VSC(57, 1.41, 533.62), new VSC(55, 5.43, 10.29), new VSC(52, 5.73, 117.32), new VSC(52, 0.23, 1368.66), new VSC(50, 6.08, 525.76), new VSC(47, 3.63, 1478.87), new VSC(47, 0.51, 1265.57), new VSC(40, 4.16, 1692.17), new VSC(34, 0.1, 302.16), new VSC(33, 5.04, 220.41), new VSC(32, 5.37, 508.35), new VSC(29, 5.42, 1272.68), new VSC(29, 3.36, 4.67), new VSC(29, 0.76, 88.87), new VSC(25, 1.61, 831.86) ];\r\n GFX.g_L2JupiterCoefficients = [ new VSC(47234, 4.32148, 7.11355), new VSC(38966, 0, 0), new VSC(30629, 2.93021, 529.69097), new VSC(3189, 1.055, 522.5774), new VSC(2729, 4.8455, 536.8045), new VSC(2723, 3.4141, 1059.3819), new VSC(1721, 4.1873, 14.2271), new VSC(383, 5.768, 419.485), new VSC(378, 0.76, 515.464), new VSC(367, 6.055, 103.093), new VSC(337, 3.786, 3.181), new VSC(308, 0.694, 206.186), new VSC(218, 3.814, 1589.073), new VSC(199, 5.34, 1066.495), new VSC(197, 2.484, 3.932), new VSC(156, 1.406, 1052.268), new VSC(146, 3.814, 639.897), new VSC(142, 1.634, 426.598), new VSC(130, 5.837, 412.371), new VSC(117, 1.414, 625.67), new VSC(97, 4.03, 110.21), new VSC(91, 1.11, 95.98), new VSC(87, 2.52, 632.78), new VSC(79, 4.64, 543.92), new VSC(72, 2.22, 735.88), new VSC(58, 0.83, 199.07), new VSC(57, 3.12, 213.3), new VSC(49, 1.67, 309.28), new VSC(40, 4.02, 21.34), new VSC(40, 0.62, 323.51), new VSC(36, 2.33, 728.76), new VSC(29, 3.61, 10.29), new VSC(28, 3.24, 838.97), new VSC(26, 4.5, 742.99), new VSC(26, 2.51, 1162.47), new VSC(25, 1.22, 1045.15), new VSC(24, 3.01, 956.29), new VSC(19, 4.29, 532.87), new VSC(18, 0.81, 508.35), new VSC(17, 4.2, 2118.76), new VSC(17, 1.83, 526.51), new VSC(15, 5.81, 1596.19), new VSC(15, 0.68, 942.06), new VSC(15, 4, 117.32), new VSC(14, 5.95, 316.39), new VSC(14, 1.8, 302.16), new VSC(13, 2.52, 88.87), new VSC(13, 4.37, 1169.59), new VSC(11, 4.44, 525.76), new VSC(10, 1.72, 1581.96), new VSC(9, 2.18, 1155.36), new VSC(9, 3.29, 220.41), new VSC(9, 3.32, 831.86), new VSC(8, 5.76, 846.08), new VSC(8, 2.71, 533.62), new VSC(7, 2.18, 1265.57), new VSC(6, 0.5, 949.18) ];\r\n GFX.g_L3JupiterCoefficients = [ new VSC(6502, 2.5986, 7.1135), new VSC(1357, 1.3464, 529.691), new VSC(471, 2.475, 14.227), new VSC(417, 3.245, 536.805), new VSC(353, 2.974, 522.577), new VSC(155, 2.076, 1059.382), new VSC(87, 2.51, 515.46), new VSC(44, 0, 0), new VSC(34, 3.83, 1066.5), new VSC(28, 2.45, 206.19), new VSC(24, 1.28, 412.37), new VSC(23, 2.98, 543.92), new VSC(20, 2.1, 639.9), new VSC(20, 1.4, 419.48), new VSC(19, 1.59, 103.09), new VSC(17, 2.3, 21.34), new VSC(17, 2.6, 1589.07), new VSC(16, 3.15, 625.67), new VSC(16, 3.36, 1052.27), new VSC(13, 2.76, 95.98), new VSC(13, 2.54, 199.07), new VSC(13, 6.27, 426.6), new VSC(9, 1.76, 10.29), new VSC(9, 2.27, 110.21), new VSC(7, 3.43, 309.28), new VSC(7, 4.04, 728.76), new VSC(6, 2.52, 508.35), new VSC(5, 2.91, 1045.15), new VSC(5, 5.25, 323.51), new VSC(4, 4.3, 88.87), new VSC(4, 3.52, 302.16), new VSC(4, 4.09, 735.88), new VSC(3, 1.43, 956.29), new VSC(3, 4.36, 1596.19), new VSC(3, 1.25, 213.3), new VSC(3, 5.02, 838.97), new VSC(3, 2.24, 117.32), new VSC(2, 2.9, 742.99), new VSC(2, 2.36, 942.06) ];\r\n GFX.g_L4JupiterCoefficients = [ new VSC(669, 0.853, 7.114), new VSC(114, 3.142, 0), new VSC(100, 0.743, 14.227), new VSC(50, 1.65, 536.8), new VSC(44, 5.82, 529.69), new VSC(32, 4.86, 522.58), new VSC(15, 4.29, 515.46), new VSC(9, 0.71, 1059.38), new VSC(5, 1.3, 543.92), new VSC(4, 2.32, 1066.5), new VSC(4, 0.48, 21.34), new VSC(3, 3, 412.37), new VSC(2, 0.4, 639.9), new VSC(2, 4.26, 199.07), new VSC(2, 4.91, 625.67), new VSC(2, 4.26, 206.19), new VSC(1, 5.26, 1052.27), new VSC(1, 4.72, 95.98), new VSC(1, 1.29, 1589.07) ];\r\n GFX.g_L5JupiterCoefficients = [ new VSC(50, 5.26, 7.11), new VSC(16, 5.25, 14.23), new VSC(4, 0.01, 536.8), new VSC(2, 1.1, 522.58), new VSC(1, 3.14, 0) ];\r\n GFX.g_B0JupiterCoefficients = [ new VSC(2268616, 3.5585261, 529.6909651), new VSC(110090, 0, 0), new VSC(109972, 3.908093, 1059.38193), new VSC(8101, 3.6051, 522.5774), new VSC(6438, 0.3063, 536.8045), new VSC(6044, 4.2588, 1589.0729), new VSC(1107, 2.9853, 1162.4747), new VSC(944, 1.675, 426.598), new VSC(942, 2.936, 1052.268), new VSC(894, 1.754, 7.114), new VSC(836, 5.179, 103.093), new VSC(767, 2.155, 632.784), new VSC(684, 3.678, 213.299), new VSC(629, 0.643, 1066.495), new VSC(559, 0.014, 846.083), new VSC(532, 2.703, 110.206), new VSC(464, 1.173, 949.176), new VSC(431, 2.608, 419.485), new VSC(351, 4.611, 2118.764), new VSC(132, 4.778, 742.99), new VSC(123, 3.35, 1692.166), new VSC(116, 1.387, 323.505), new VSC(115, 5.049, 316.392), new VSC(104, 3.701, 515.464), new VSC(103, 2.319, 1478.867), new VSC(102, 3.153, 1581.959) ];\r\n GFX.g_B1JupiterCoefficients = [ new VSC(177352, 5.701665, 529.690965), new VSC(3230, 5.7794, 1059.3819), new VSC(3081, 5.4746, 522.5774), new VSC(2212, 4.7348, 536.8045), new VSC(1694, 3.1416, 0), new VSC(346, 4.746, 1052.268), new VSC(234, 5.189, 1066.495), new VSC(196, 6.186, 7.114), new VSC(150, 3.927, 1589.073), new VSC(114, 3.439, 632.784), new VSC(97, 2.91, 949.18), new VSC(82, 5.08, 1162.47), new VSC(77, 2.51, 103.09), new VSC(77, 0.61, 419.48), new VSC(74, 5.5, 515.46), new VSC(61, 5.45, 213.3), new VSC(50, 3.95, 735.88), new VSC(46, 0.54, 110.21), new VSC(45, 1.9, 846.08), new VSC(37, 4.7, 543.92), new VSC(36, 6.11, 316.39), new VSC(32, 4.92, 1581.96) ];\r\n GFX.g_B2JupiterCoefficients = [ new VSC(8094, 1.4632, 529.691), new VSC(813, 3.1416, 0), new VSC(742, 0.957, 522.577), new VSC(399, 2.899, 536.805), new VSC(342, 1.447, 1059.382), new VSC(74, 0.41, 1052.27), new VSC(46, 3.48, 1066.5), new VSC(30, 1.93, 1589.07), new VSC(29, 0.99, 515.46), new VSC(23, 4.27, 7.11), new VSC(14, 2.92, 543.92), new VSC(12, 5.22, 632.78), new VSC(11, 4.88, 949.18), new VSC(6, 6.21, 1045.15) ];\r\n GFX.g_B3JupiterCoefficients = [ new VSC(252, 3.381, 529.691), new VSC(122, 2.733, 522.577), new VSC(49, 1.04, 536.8), new VSC(11, 2.31, 1052.27), new VSC(8, 2.77, 515.46), new VSC(7, 4.25, 1059.38), new VSC(6, 1.78, 1066.5), new VSC(4, 1.13, 543.92), new VSC(3, 3.14, 0) ];\r\n GFX.g_B4JupiterCoefficients = [ new VSC(15, 4.53, 522.58), new VSC(5, 4.47, 529.69), new VSC(4, 5.44, 536.8), new VSC(3, 0, 0), new VSC(2, 4.52, 515.46), new VSC(1, 4.2, 1052.27) ];\r\n GFX.g_B5JupiterCoefficients = [ new VSC(1, 0.09, 522.58) ];\r\n GFX.g_R0JupiterCoefficients = [ new VSC(520887429, 0, 0), new VSC(25209327, 3.4910864, 529.69096509), new VSC(610600, 3.841154, 1059.38193), new VSC(282029, 2.574199, 632.783739), new VSC(187647, 2.075904, 522.577418), new VSC(86793, 0.71001, 419.48464), new VSC(72063, 0.21466, 536.80451), new VSC(65517, 5.97996, 316.39187), new VSC(30135, 2.16132, 949.17561), new VSC(29135, 1.67759, 103.09277), new VSC(23947, 0.27458, 7.11355), new VSC(23453, 3.54023, 735.87651), new VSC(22284, 4.19363, 1589.0729), new VSC(13033, 2.96043, 1162.4747), new VSC(12749, 2.7155, 1052.26838), new VSC(9703, 1.9067, 206.1855), new VSC(9161, 4.4135, 213.2991), new VSC(7895, 2.4791, 426.5982), new VSC(7058, 2.1818, 1265.5675), new VSC(6138, 6.2642, 846.0828), new VSC(5477, 5.6573, 639.8973), new VSC(4170, 2.0161, 515.4639), new VSC(4137, 2.7222, 625.6702), new VSC(3503, 0.5653, 1066.4955), new VSC(2617, 2.0099, 1581.9593), new VSC(2500, 4.5518, 838.9693), new VSC(2128, 6.1275, 742.9901), new VSC(1912, 0.8562, 412.3711), new VSC(1611, 3.0887, 1368.6603), new VSC(1479, 2.6803, 1478.8666), new VSC(1231, 1.8904, 323.5054), new VSC(1217, 1.8017, 110.2063), new VSC(1015, 1.3867, 454.9094), new VSC(999, 2.872, 309.278), new VSC(961, 4.549, 2118.764), new VSC(886, 4.148, 533.623), new VSC(821, 1.593, 1898.351), new VSC(812, 5.941, 909.819), new VSC(777, 3.677, 728.763), new VSC(727, 3.988, 1155.361), new VSC(655, 2.791, 1685.052), new VSC(654, 3.382, 1692.166), new VSC(621, 4.823, 956.289), new VSC(615, 2.276, 942.062), new VSC(562, 0.081, 543.918), new VSC(542, 0.284, 525.759) ];\r\n GFX.g_R1JupiterCoefficients = [ new VSC(1271802, 2.6493751, 529.6909651), new VSC(61662, 3.00076, 1059.38193), new VSC(53444, 3.89718, 522.57742), new VSC(41390, 0, 0), new VSC(31185, 4.88277, 536.80451), new VSC(11847, 2.4133, 419.48464), new VSC(9166, 4.7598, 7.1135), new VSC(3404, 3.3469, 1589.0729), new VSC(3203, 5.2108, 735.8765), new VSC(3176, 2.793, 103.0928), new VSC(2806, 3.7422, 515.4639), new VSC(2677, 4.3305, 1052.2684), new VSC(2600, 3.6344, 206.1855), new VSC(2412, 1.4695, 426.5982), new VSC(2101, 3.9276, 639.8973), new VSC(1646, 4.4163, 1066.4955), new VSC(1641, 4.4163, 625.6702), new VSC(1050, 3.1611, 213.2991), new VSC(1025, 2.5543, 412.3711), new VSC(806, 2.678, 632.784), new VSC(741, 2.171, 1162.475), new VSC(677, 6.25, 838.969), new VSC(567, 4.577, 742.99), new VSC(485, 2.469, 949.176), new VSC(469, 4.71, 543.918), new VSC(445, 0.403, 323.505), new VSC(416, 5.368, 728.763), new VSC(402, 4.605, 309.278), new VSC(347, 4.681, 14.227), new VSC(338, 3.168, 956.289), new VSC(261, 5.343, 846.083), new VSC(247, 3.923, 942.062), new VSC(220, 4.842, 1368.66), new VSC(203, 5.6, 1155.361), new VSC(200, 4.439, 1045.155), new VSC(197, 3.706, 2118.764), new VSC(196, 3.759, 199.072), new VSC(184, 4.265, 95.979), new VSC(180, 4.402, 532.872), new VSC(170, 4.846, 526.51), new VSC(146, 6.13, 533.623), new VSC(133, 1.322, 110.206), new VSC(132, 4.512, 525.759) ];\r\n GFX.g_R2JupiterCoefficients = [ new VSC(79645, 1.35866, 529.69097), new VSC(8252, 5.7777, 522.5774), new VSC(7030, 3.2748, 536.8045), new VSC(5314, 1.8384, 1059.3819), new VSC(1861, 2.9768, 7.1135), new VSC(964, 5.48, 515.464), new VSC(836, 4.199, 419.485), new VSC(498, 3.142, 0), new VSC(427, 2.228, 639.897), new VSC(406, 3.783, 1066.495), new VSC(377, 2.242, 1589.073), new VSC(363, 5.368, 206.186), new VSC(342, 6.099, 1052.268), new VSC(339, 6.127, 625.67), new VSC(333, 0.003, 426.598), new VSC(280, 4.262, 412.371), new VSC(257, 0.963, 632.784), new VSC(230, 0.705, 735.877), new VSC(201, 3.069, 543.918), new VSC(200, 4.429, 103.093), new VSC(139, 2.932, 14.227), new VSC(114, 0.787, 728.763), new VSC(95, 1.7, 838.97), new VSC(86, 5.14, 323.51), new VSC(83, 0.06, 309.28), new VSC(80, 2.98, 742.99), new VSC(75, 1.6, 956.29), new VSC(70, 1.51, 213.3), new VSC(67, 5.47, 199.07), new VSC(62, 6.1, 1045.15), new VSC(56, 0.96, 1162.47), new VSC(52, 5.58, 942.06), new VSC(50, 2.72, 532.87), new VSC(45, 5.52, 508.35), new VSC(44, 0.27, 526.51), new VSC(40, 5.95, 95.98) ];\r\n GFX.g_R3JupiterCoefficients = [ new VSC(3519, 6.058, 529.691), new VSC(1073, 1.6732, 536.8045), new VSC(916, 1.413, 522.577), new VSC(342, 0.523, 1059.382), new VSC(255, 1.196, 7.114), new VSC(222, 0.952, 515.464), new VSC(90, 3.14, 0), new VSC(69, 2.27, 1066.5), new VSC(58, 1.41, 543.92), new VSC(58, 0.53, 639.9), new VSC(51, 5.98, 412.37), new VSC(47, 1.58, 625.67), new VSC(43, 6.12, 419.48), new VSC(37, 1.18, 14.23), new VSC(34, 1.67, 1052.27), new VSC(34, 0.85, 206.19), new VSC(31, 1.04, 1589.07), new VSC(30, 4.63, 426.6), new VSC(21, 2.5, 728.76), new VSC(15, 0.89, 199.07), new VSC(14, 0.96, 508.35), new VSC(13, 1.5, 1045.15), new VSC(12, 2.61, 735.88), new VSC(12, 3.56, 323.51), new VSC(11, 1.79, 309.28), new VSC(11, 6.28, 956.29), new VSC(10, 6.26, 103.09), new VSC(9, 3.45, 838.97) ];\r\n GFX.g_R4JupiterCoefficients = [ new VSC(129, 0.084, 536.805), new VSC(113, 4.249, 529.691), new VSC(83, 3.3, 522.58), new VSC(38, 2.73, 515.46), new VSC(27, 5.69, 7.11), new VSC(18, 5.4, 1059.38), new VSC(13, 6.02, 543.92), new VSC(9, 0.77, 1066.5), new VSC(8, 5.68, 14.23), new VSC(7, 1.43, 412.37), new VSC(6, 5.12, 639.9), new VSC(5, 3.34, 625.67), new VSC(3, 3.4, 1052.27), new VSC(3, 4.16, 728.76), new VSC(3, 2.9, 426.6) ];\r\n GFX.g_R5JupiterCoefficients = [ new VSC(11, 4.75, 536.8), new VSC(4, 5.92, 522.58), new VSC(2, 5.57, 515.46), new VSC(2, 4.3, 543.92), new VSC(2, 3.69, 7.11), new VSC(2, 4.13, 1059.38), new VSC(2, 5.49, 1066.5) ];\r\n GFX.g_L0MarsCoefficients = [ new VSC(620347712, 0, 0), new VSC(18656368, 5.050371, 3340.6124267), new VSC(1108217, 5.4009984, 6681.2248534), new VSC(91798, 5.75479, 10021.83728), new VSC(27745, 5.9705, 3.52312), new VSC(12316, 0.84956, 2810.92146), new VSC(10610, 2.93959, 2281.2305), new VSC(8927, 4.157, 0.0173), new VSC(8716, 6.1101, 13362.4497), new VSC(7775, 3.3397, 5621.8429), new VSC(6798, 0.3646, 398.149), new VSC(4161, 0.2281, 2942.4634), new VSC(3575, 1.6619, 2544.3144), new VSC(3075, 0.857, 191.4483), new VSC(2938, 6.0789, 0.0673), new VSC(2628, 0.6481, 3337.0893), new VSC(2580, 0.03, 3344.1355), new VSC(2389, 5.039, 796.298), new VSC(1799, 0.6563, 529.691), new VSC(1546, 2.9158, 1751.5395), new VSC(1528, 1.1498, 6151.5339), new VSC(1286, 3.068, 2146.1654), new VSC(1264, 3.6228, 5092.152), new VSC(1025, 3.6933, 8962.4553), new VSC(892, 0.183, 16703.062), new VSC(859, 2.401, 2914.014), new VSC(833, 4.495, 3340.63), new VSC(833, 2.464, 3340.595), new VSC(749, 3.822, 155.42), new VSC(724, 0.675, 3738.761), new VSC(713, 3.663, 1059.382), new VSC(655, 0.489, 3127.313), new VSC(636, 2.922, 8432.764), new VSC(553, 4.475, 1748.016), new VSC(550, 3.81, 0.98), new VSC(472, 3.625, 1194.447), new VSC(426, 0.554, 6283.076), new VSC(415, 0.497, 213.299), new VSC(312, 0.999, 6677.702), new VSC(307, 0.381, 6684.748), new VSC(302, 4.486, 3532.061), new VSC(299, 2.783, 6254.627), new VSC(293, 4.221, 20.775), new VSC(284, 5.769, 3149.164), new VSC(281, 5.882, 1349.867), new VSC(274, 0.542, 3340.545), new VSC(274, 0.134, 3340.68), new VSC(239, 5.372, 4136.91), new VSC(236, 5.755, 3333.499), new VSC(231, 1.282, 3870.303), new VSC(221, 3.505, 382.897), new VSC(204, 2.821, 1221.849), new VSC(193, 3.357, 3.59), new VSC(189, 1.491, 9492.146), new VSC(179, 1.006, 951.718), new VSC(174, 2.414, 553.569), new VSC(172, 0.439, 5486.778), new VSC(160, 3.949, 4562.461), new VSC(144, 1.419, 135.065), new VSC(140, 3.326, 2700.715), new VSC(138, 4.301, 7.114), new VSC(131, 4.045, 12303.068), new VSC(128, 2.208, 1592.596), new VSC(128, 1.807, 5088.629), new VSC(117, 3.128, 7903.073), new VSC(113, 3.701, 1589.073), new VSC(110, 1.052, 242.729), new VSC(105, 0.785, 8827.39), new VSC(100, 3.243, 11773.377) ];\r\n GFX.g_L1MarsCoefficients = [ new VSC(334085627474, 0, 0), new VSC(1458227, 3.6042605, 3340.6124267), new VSC(164901, 3.926313, 6681.224853), new VSC(19963, 4.26594, 10021.83728), new VSC(3452, 4.7321, 3.5231), new VSC(2485, 4.6128, 13362.4497), new VSC(842, 4.459, 2281.23), new VSC(538, 5.016, 398.149), new VSC(521, 4.994, 3344.136), new VSC(433, 2.561, 191.448), new VSC(430, 5.316, 155.42), new VSC(382, 3.539, 796.298), new VSC(314, 4.963, 16703.062), new VSC(283, 3.16, 2544.314), new VSC(206, 4.569, 2146.165), new VSC(169, 1.329, 3337.089), new VSC(158, 4.185, 1751.54), new VSC(134, 2.233, 0.98), new VSC(134, 5.974, 1748.016), new VSC(118, 6.024, 6151.534), new VSC(117, 2.213, 1059.382), new VSC(114, 2.129, 1194.447), new VSC(114, 5.428, 3738.761), new VSC(91, 1.1, 1349.87), new VSC(85, 3.91, 553.57), new VSC(83, 5.3, 6684.75), new VSC(81, 4.43, 529.69), new VSC(80, 2.25, 8962.46), new VSC(73, 2.5, 951.72), new VSC(73, 5.84, 242.73), new VSC(71, 3.86, 2914.01), new VSC(68, 5.02, 382.9), new VSC(65, 1.02, 3340.6), new VSC(65, 3.05, 3340.63), new VSC(62, 4.15, 3149.16), new VSC(57, 3.89, 4136.91), new VSC(48, 4.87, 213.3), new VSC(48, 1.18, 3333.5), new VSC(47, 1.31, 3185.19), new VSC(41, 0.71, 1592.6), new VSC(40, 2.73, 7.11), new VSC(40, 5.32, 20043.67), new VSC(33, 5.41, 6283.08), new VSC(28, 0.05, 9492.15), new VSC(27, 3.89, 1221.85), new VSC(27, 5.11, 2700.72) ];\r\n GFX.g_L2MarsCoefficients = [ new VSC(58016, 2.04979, 3340.61243), new VSC(54188, 0, 0), new VSC(13908, 2.45742, 6681.22485), new VSC(2465, 2.8, 10021.8373), new VSC(398, 3.141, 13362.45), new VSC(222, 3.194, 3.523), new VSC(121, 0.543, 155.42), new VSC(62, 3.49, 16703.06), new VSC(54, 3.54, 3344.14), new VSC(34, 6, 2281.23), new VSC(32, 4.14, 191.45), new VSC(30, 2, 796.3), new VSC(23, 4.33, 242.73), new VSC(22, 3.45, 398.15), new VSC(20, 5.42, 553.57), new VSC(16, 0.66, 0.98), new VSC(16, 6.11, 2146.17), new VSC(16, 1.22, 1748.02), new VSC(15, 6.1, 3185.19), new VSC(14, 4.02, 951.72), new VSC(14, 2.62, 1349.87), new VSC(13, 0.6, 1194.45), new VSC(12, 3.86, 6684.75), new VSC(11, 4.72, 2544.31), new VSC(10, 0.25, 382.9), new VSC(9, 0.68, 1059.38), new VSC(9, 3.83, 20043.67), new VSC(9, 3.88, 3738.76), new VSC(8, 5.46, 1751.54), new VSC(7, 2.58, 3149.16), new VSC(7, 2.38, 4136.91), new VSC(6, 5.48, 1592.6), new VSC(6, 2.34, 3097.88) ];\r\n GFX.g_L3MarsCoefficients = [ new VSC(1482, 0.4443, 3340.6124), new VSC(662, 0.885, 6681.225), new VSC(188, 1.288, 10021.837), new VSC(41, 1.65, 13362.45), new VSC(26, 0, 0), new VSC(23, 2.05, 155.42), new VSC(10, 1.58, 3.52), new VSC(8, 2, 16703.06), new VSC(5, 2.82, 242.73), new VSC(4, 2.02, 3344.14), new VSC(3, 4.59, 3185.19), new VSC(3, 0.65, 553.57) ];\r\n GFX.g_L4MarsCoefficients = [ new VSC(114, 3.1416, 0), new VSC(29, 5.64, 6681.22), new VSC(24, 5.14, 3340.61), new VSC(11, 6.03, 10021.84), new VSC(3, 0.13, 13362.45), new VSC(3, 3.56, 155.42), new VSC(1, 0.49, 16703.06), new VSC(1, 1.32, 242.73) ];\r\n GFX.g_L5MarsCoefficients = [ new VSC(1, 3.14, 0), new VSC(1, 4.04, 6681.22) ];\r\n GFX.g_B0MarsCoefficients = [ new VSC(3197135, 3.7683204, 3340.6124267), new VSC(298033, 4.10617, 6681.224853), new VSC(289105, 0, 0), new VSC(31366, 4.44651, 10021.83728), new VSC(3484, 4.7881, 13362.4497), new VSC(443, 5.026, 3344.136), new VSC(443, 5.652, 3337.089), new VSC(399, 5.131, 16703.062), new VSC(293, 3.793, 2281.23), new VSC(182, 6.136, 6151.534), new VSC(163, 4.264, 529.691), new VSC(160, 2.232, 1059.382), new VSC(149, 2.165, 5621.843), new VSC(143, 1.182, 3340.595), new VSC(143, 3.213, 3340.63), new VSC(139, 2.418, 8962.455) ];\r\n GFX.g_B1MarsCoefficients = [ new VSC(350069, 5.368478, 3340.612427), new VSC(14116, 3.14159, 0), new VSC(9671, 5.4788, 6681.2249), new VSC(1472, 3.2021, 10021.8373), new VSC(426, 3.408, 13362.45), new VSC(102, 0.776, 3337.089), new VSC(79, 3.72, 16703.06), new VSC(33, 3.46, 5621.84), new VSC(26, 2.48, 2281.23) ];\r\n GFX.g_B2MarsCoefficients = [ new VSC(16727, 0.60221, 3340.61243), new VSC(4987, 4.1416, 0), new VSC(302, 3.559, 6681.225), new VSC(26, 1.9, 13362.45), new VSC(21, 0.92, 10021.84), new VSC(12, 2.24, 3337.09), new VSC(8, 2.25, 16703.06) ];\r\n GFX.g_B3MarsCoefficients = [ new VSC(607, 1.981, 3340.612), new VSC(43, 0, 0), new VSC(14, 1.8, 6681.22), new VSC(3, 3.45, 10021.84) ];\r\n GFX.g_B4MarsCoefficients = [ new VSC(13, 0, 0), new VSC(11, 3.46, 3340.61), new VSC(1, 0.5, 6681.22) ];\r\n GFX.g_R0MarsCoefficients = [ new VSC(153033488, 0, 0), new VSC(14184953, 3.47971284, 3340.6124267), new VSC(660776, 3.817834, 6681.224853), new VSC(46179, 4.15595, 10021.83728), new VSC(8110, 5.5596, 2810.9215), new VSC(7485, 1.7724, 5621.8429), new VSC(5523, 1.3644, 2281.2305), new VSC(3825, 4.4941, 13362.4497), new VSC(2484, 4.9255, 2942.4634), new VSC(2307, 0.0908, 2544.3144), new VSC(1999, 5.3606, 3337.0893), new VSC(1960, 4.7425, 3344.1355), new VSC(1167, 2.1126, 5092.152), new VSC(1103, 5.0091, 398.149), new VSC(992, 5.839, 6151.534), new VSC(899, 4.408, 529.691), new VSC(807, 2.102, 1059.382), new VSC(798, 3.448, 796.298), new VSC(741, 1.499, 2146.165), new VSC(726, 1.245, 8432.764), new VSC(692, 2.134, 8962.455), new VSC(633, 0.894, 3340.595), new VSC(633, 2.924, 3340.63), new VSC(630, 1.287, 1751.54), new VSC(574, 0.829, 2914.014), new VSC(526, 5.383, 3738.761), new VSC(473, 5.199, 3127.313), new VSC(348, 4.832, 16703.062), new VSC(284, 2.907, 3532.061), new VSC(280, 5.257, 6283.076), new VSC(276, 1.218, 6254.627), new VSC(275, 2.908, 1748.016), new VSC(270, 3.764, 5884.927), new VSC(239, 2.037, 1194.447), new VSC(234, 5.105, 5486.778), new VSC(228, 3.255, 6872.673), new VSC(223, 4.199, 3149.164), new VSC(219, 5.583, 191.448), new VSC(208, 5.255, 3340.545), new VSC(208, 4.846, 3340.68), new VSC(186, 5.699, 6677.702), new VSC(183, 5.081, 6684.748), new VSC(179, 4.184, 3333.499), new VSC(176, 5.953, 3870.303), new VSC(164, 3.799, 4136.91) ];\r\n GFX.g_R1MarsCoefficients = [ new VSC(1107433, 2.0325052, 3340.6124267), new VSC(103176, 2.370718, 6681.224853), new VSC(12877, 0, 0), new VSC(10816, 2.70888, 10021.83728), new VSC(1195, 3.047, 13362.4497), new VSC(439, 2.888, 2281.23), new VSC(396, 3.423, 3344.136), new VSC(183, 1.584, 2544.314), new VSC(136, 3.385, 16703.062), new VSC(128, 6.043, 3337.089), new VSC(128, 0.63, 1059.382), new VSC(127, 1.954, 796.298), new VSC(118, 2.998, 2146.165), new VSC(88, 3.42, 398.15), new VSC(83, 3.86, 3738.76), new VSC(76, 4.45, 6151.53), new VSC(72, 2.76, 529.69), new VSC(67, 2.55, 1751.54), new VSC(66, 4.41, 1748.02), new VSC(58, 0.54, 1194.45), new VSC(54, 0.68, 8962.46), new VSC(51, 3.73, 6684.75), new VSC(49, 5.73, 3340.6), new VSC(49, 1.48, 3340.63), new VSC(48, 2.58, 3149.16), new VSC(48, 2.29, 2914.01), new VSC(39, 2.32, 4136.91) ];\r\n GFX.g_R2MarsCoefficients = [ new VSC(44242, 0.47931, 3340.61243), new VSC(8138, 0.87, 6681.2249), new VSC(1275, 1.2259, 10021.8373), new VSC(187, 1.573, 13362.45), new VSC(52, 3.14, 0), new VSC(41, 1.97, 3344.14), new VSC(27, 1.92, 16703.06), new VSC(18, 4.43, 2281.23), new VSC(12, 4.53, 3185.19), new VSC(10, 5.39, 1059.38), new VSC(10, 0.42, 796.3) ];\r\n GFX.g_R3MarsCoefficients = [ new VSC(1113, 5.1499, 3340.6124), new VSC(424, 5.613, 6681.225), new VSC(100, 5.997, 10021.837), new VSC(20, 0.08, 13362.45), new VSC(5, 3.14, 0), new VSC(3, 0.43, 16703.06) ];\r\n GFX.g_R4MarsCoefficients = [ new VSC(20, 3.58, 3340.61), new VSC(16, 4.05, 6681.22), new VSC(6, 4.46, 10021.84), new VSC(2, 4.84, 13362.45) ];\r\n GFX.g_L0MercuryCoefficients = [ new VSC(440250710, 0, 0), new VSC(40989415, 1.48302034, 26087.90314157), new VSC(5046294, 4.47785449, 52175.8062831), new VSC(855347, 1.165203, 78263.709425), new VSC(165590, 4.119692, 104351.612566), new VSC(34562, 0.77931, 130439.51571), new VSC(7583, 3.7135, 156527.4188), new VSC(3560, 1.512, 1109.3786), new VSC(1803, 4.1033, 5661.332), new VSC(1726, 0.3583, 182615.322), new VSC(1590, 2.9951, 25028.5212), new VSC(1365, 4.5992, 27197.2817), new VSC(1017, 0.8803, 31749.2352), new VSC(714, 1.541, 24978.525), new VSC(644, 5.303, 21535.95), new VSC(451, 6.05, 51116.424), new VSC(404, 3.282, 208703.225), new VSC(352, 5.242, 20426.571), new VSC(345, 2.792, 15874.618), new VSC(343, 5.765, 955.6), new VSC(339, 5.863, 25558.212), new VSC(325, 1.337, 53285.185), new VSC(273, 2.495, 529.691), new VSC(264, 3.917, 57837.138), new VSC(260, 0.987, 4551.953), new VSC(239, 0.113, 1059.382), new VSC(235, 0.267, 11322.664), new VSC(217, 0.66, 13521.751), new VSC(209, 2.092, 47623.853), new VSC(183, 2.629, 27043.503), new VSC(182, 2.434, 25661.305), new VSC(176, 4.536, 51066.428), new VSC(173, 2.452, 24498.83), new VSC(142, 3.36, 37410.567), new VSC(138, 0.291, 10213.286), new VSC(125, 3.721, 39609.655), new VSC(118, 2.781, 77204.327), new VSC(106, 4.206, 19804.827) ];\r\n GFX.g_L1MercuryCoefficients = [ new VSC(2608814706223, 0, 0), new VSC(1126008, 6.2170397, 26087.9031416), new VSC(303471, 3.055655, 52175.806283), new VSC(80538, 6.10455, 78263.70942), new VSC(21245, 2.83532, 104351.61257), new VSC(5592, 5.8268, 130439.5157), new VSC(1472, 2.5185, 156527.4188), new VSC(388, 5.48, 182615.322), new VSC(352, 3.052, 1109.379), new VSC(103, 2.149, 208703.225), new VSC(94, 6.12, 27197.28), new VSC(91, 0, 24978.52), new VSC(52, 5.62, 5661.33), new VSC(44, 4.57, 25028.52), new VSC(28, 3.04, 51066.43), new VSC(27, 5.09, 234791.13) ];\r\n GFX.g_L2MercuryCoefficients = [ new VSC(53050, 0, 0), new VSC(16904, 4.69072, 26087.90314), new VSC(7397, 1.3474, 52175.8063), new VSC(3018, 4.4564, 78263.7094), new VSC(1107, 1.264, 104351.6126), new VSC(378, 4.32, 130439.516), new VSC(123, 1.069, 156527.419), new VSC(39, 4.08, 182615.32), new VSC(15, 4.63, 1109.38), new VSC(12, 0.79, 208703.23) ];\r\n GFX.g_L3MercuryCoefficients = [ new VSC(188, 0.035, 52175.806), new VSC(142, 3.125, 26087.903), new VSC(97, 3, 78263.71), new VSC(44, 6.02, 104351.61), new VSC(35, 0, 0), new VSC(18, 2.78, 130439.52), new VSC(7, 5.82, 156527.42), new VSC(3, 2.57, 182615.32) ];\r\n GFX.g_L4MercuryCoefficients = [ new VSC(114, 3.1416, 0), new VSC(2, 2.03, 26087.9), new VSC(2, 1.42, 78263.71), new VSC(2, 4.5, 52175.81), new VSC(1, 4.5, 104351.61), new VSC(1, 1.27, 130439.52) ];\r\n GFX.g_L5MercuryCoefficients = [ new VSC(1, 3.14, 0) ];\r\n GFX.g_B0MercuryCoefficients = [ new VSC(11737529, 1.98357499, 26087.90314157), new VSC(2388077, 5.0373896, 52175.8062831), new VSC(1222840, 3.1415927, 0), new VSC(543252, 1.796444, 78263.709425), new VSC(129779, 4.832325, 104351.612566), new VSC(31867, 1.58088, 130439.51571), new VSC(7963, 4.6097, 156527.4188), new VSC(2014, 1.3532, 182615.322), new VSC(514, 4.378, 208703.325), new VSC(209, 2.02, 24978.525), new VSC(208, 4.918, 27197.282), new VSC(132, 1.119, 234791.128), new VSC(121, 1.813, 53285.185), new VSC(100, 5.657, 20426.571) ];\r\n GFX.g_B1MercuryCoefficients = [ new VSC(429151, 3.501698, 26087.903142), new VSC(146234, 3.141593, 0), new VSC(22675, 0.01515, 52175.80628), new VSC(10895, 0.4854, 78263.70942), new VSC(6353, 3.4294, 104351.6126), new VSC(2496, 0.1605, 130439.5157), new VSC(860, 3.185, 156527.419), new VSC(278, 6.21, 182615.322), new VSC(86, 2.95, 208703.23), new VSC(28, 0.29, 27197.28), new VSC(26, 5.98, 234791.13) ];\r\n GFX.g_B2MercuryCoefficients = [ new VSC(11831, 4.79066, 26087.90314), new VSC(1914, 0, 0), new VSC(1045, 1.2122, 52175.8063), new VSC(266, 4.434, 78263.709), new VSC(170, 1.623, 104351.613), new VSC(96, 4.8, 130439.52), new VSC(45, 1.61, 156527.42), new VSC(18, 4.67, 182615.32), new VSC(7, 1.43, 208703.23) ];\r\n GFX.g_B3MercuryCoefficients = [ new VSC(235, 0.354, 26087.903), new VSC(161, 0, 0), new VSC(19, 4.36, 52175.81), new VSC(6, 2.51, 78263.71), new VSC(5, 6.14, 104351.61), new VSC(3, 3.12, 130439.52), new VSC(2, 6.27, 156527.42) ];\r\n GFX.g_B4MercuryCoefficients = [ new VSC(4, 1.75, 26087.9), new VSC(1, 3.14, 0) ];\r\n GFX.g_R0MercuryCoefficients = [ new VSC(39528272, 0, 0), new VSC(7834132, 6.1923372, 26087.9031416), new VSC(795526, 2.959897, 52175.806283), new VSC(121282, 6.010642, 78263.709425), new VSC(21922, 2.7782, 104351.61257), new VSC(4354, 5.8289, 130439.5157), new VSC(918, 2.597, 156527.419), new VSC(290, 1.424, 25028.521), new VSC(260, 3.028, 27197.282), new VSC(202, 5.647, 182615.322), new VSC(201, 5.592, 31749.235), new VSC(142, 6.253, 24978.525), new VSC(100, 3.734, 21535.95) ];\r\n GFX.g_R1MercuryCoefficients = [ new VSC(217348, 4.656172, 26087.903142), new VSC(44142, 1.42386, 52175.80628), new VSC(10094, 4.47466, 78263.70942), new VSC(2433, 1.2423, 104351.6126), new VSC(1624, 0, 0), new VSC(604, 4.293, 130439.516), new VSC(153, 1.061, 156527.419), new VSC(39, 4.11, 182615.32) ];\r\n GFX.g_R2MercuryCoefficients = [ new VSC(3118, 3.0823, 26087.9031), new VSC(1245, 6.1518, 52175.8063), new VSC(425, 2.926, 78263.709), new VSC(136, 5.98, 104351.613), new VSC(42, 2.75, 130439.52), new VSC(22, 3.14, 0), new VSC(13, 5.8, 156527.42) ];\r\n GFX.g_R3MercuryCoefficients = [ new VSC(33, 1.68, 26087.9), new VSC(24, 4.63, 52175.81), new VSC(12, 1.39, 78263.71), new VSC(5, 4.44, 104351.61), new VSC(2, 1.21, 130439.52) ];\r\n GFX.g_MoonCoefficients1 = [ new MoonCoefficient1(0, 0, 1, 0), new MoonCoefficient1(2, 0, -1, 0), new MoonCoefficient1(2, 0, 0, 0), new MoonCoefficient1(0, 0, 2, 0), new MoonCoefficient1(0, 1, 0, 0), new MoonCoefficient1(0, 0, 0, 2), new MoonCoefficient1(2, 0, -2, 0), new MoonCoefficient1(2, -1, -1, 0), new MoonCoefficient1(2, 0, 1, 0), new MoonCoefficient1(2, -1, 0, 0), new MoonCoefficient1(0, 1, -1, 0), new MoonCoefficient1(1, 0, 0, 0), new MoonCoefficient1(0, 1, 1, 0), new MoonCoefficient1(2, 0, 0, -2), new MoonCoefficient1(0, 0, 1, 2), new MoonCoefficient1(0, 0, 1, -2), new MoonCoefficient1(4, 0, -1, 0), new MoonCoefficient1(0, 0, 3, 0), new MoonCoefficient1(4, 0, -2, 0), new MoonCoefficient1(2, 1, -1, 0), new MoonCoefficient1(2, 1, 0, 0), new MoonCoefficient1(1, 0, -1, 0), new MoonCoefficient1(1, 1, 0, 0), new MoonCoefficient1(2, -1, 1, 0), new MoonCoefficient1(2, 0, 2, 0), new MoonCoefficient1(4, 0, 0, 0), new MoonCoefficient1(2, 0, -3, 0), new MoonCoefficient1(0, 1, -2, 0), new MoonCoefficient1(2, 0, -1, 2), new MoonCoefficient1(2, -1, -2, 0), new MoonCoefficient1(1, 0, 1, 0), new MoonCoefficient1(2, -2, 0, 0), new MoonCoefficient1(0, 1, 2, 0), new MoonCoefficient1(0, 2, 0, 0), new MoonCoefficient1(2, -2, -1, 0), new MoonCoefficient1(2, 0, 1, -2), new MoonCoefficient1(2, 0, 0, 2), new MoonCoefficient1(4, -1, -1, 0), new MoonCoefficient1(0, 0, 2, 2), new MoonCoefficient1(3, 0, -1, 0), new MoonCoefficient1(2, 1, 1, 0), new MoonCoefficient1(4, -1, -2, 0), new MoonCoefficient1(0, 2, -1, 0), new MoonCoefficient1(2, 2, -1, 0), new MoonCoefficient1(2, 1, -2, 0), new MoonCoefficient1(2, -1, 0, -2), new MoonCoefficient1(4, 0, 1, 0), new MoonCoefficient1(0, 0, 4, 0), new MoonCoefficient1(4, -1, 0, 0), new MoonCoefficient1(1, 0, -2, 0), new MoonCoefficient1(2, 1, 0, -2), new MoonCoefficient1(0, 0, 2, -2), new MoonCoefficient1(1, 1, 1, 0), new MoonCoefficient1(3, 0, -2, 0), new MoonCoefficient1(4, 0, -3, 0), new MoonCoefficient1(2, -1, 2, 0), new MoonCoefficient1(0, 2, 1, 0), new MoonCoefficient1(1, 1, -1, 0), new MoonCoefficient1(2, 0, 3, 0), new MoonCoefficient1(2, 0, -1, -2) ];\r\n GFX.g_MoonCoefficients2 = [ new MoonCoefficient2(6288774, -20905355), new MoonCoefficient2(1274027, -3699111), new MoonCoefficient2(658314, -2955968), new MoonCoefficient2(213618, -569925), new MoonCoefficient2(-185116, 48888), new MoonCoefficient2(-114332, -3149), new MoonCoefficient2(58793, 246158), new MoonCoefficient2(57066, -152138), new MoonCoefficient2(53322, -170733), new MoonCoefficient2(45758, -204586), new MoonCoefficient2(-40923, -129620), new MoonCoefficient2(-34720, 108743), new MoonCoefficient2(-30383, 104755), new MoonCoefficient2(15327, 10321), new MoonCoefficient2(-12528, 0), new MoonCoefficient2(10980, 79661), new MoonCoefficient2(10675, -34782), new MoonCoefficient2(10034, -23210), new MoonCoefficient2(8548, -21636), new MoonCoefficient2(-7888, 24208), new MoonCoefficient2(-6766, 30824), new MoonCoefficient2(-5163, -8379), new MoonCoefficient2(4987, -16675), new MoonCoefficient2(4036, -12831), new MoonCoefficient2(3994, -10445), new MoonCoefficient2(3861, -11650), new MoonCoefficient2(3665, 14403), new MoonCoefficient2(-2689, -7003), new MoonCoefficient2(-2602, 0), new MoonCoefficient2(2390, 10056), new MoonCoefficient2(-2348, 6322), new MoonCoefficient2(2236, -9884), new MoonCoefficient2(-2120, 5751), new MoonCoefficient2(-2069, 0), new MoonCoefficient2(2048, -4950), new MoonCoefficient2(-1773, 4130), new MoonCoefficient2(-1595, 0), new MoonCoefficient2(1215, -3958), new MoonCoefficient2(-1110, 0), new MoonCoefficient2(-892, 3258), new MoonCoefficient2(-810, 2616), new MoonCoefficient2(759, -1897), new MoonCoefficient2(-713, -2117), new MoonCoefficient2(-700, 2354), new MoonCoefficient2(691, 0), new MoonCoefficient2(596, 0), new MoonCoefficient2(549, -1423), new MoonCoefficient2(537, -1117), new MoonCoefficient2(520, -1571), new MoonCoefficient2(-487, -1739), new MoonCoefficient2(-399, 0), new MoonCoefficient2(-381, -4421), new MoonCoefficient2(351, 0), new MoonCoefficient2(-340, 0), new MoonCoefficient2(330, 0), new MoonCoefficient2(327, 0), new MoonCoefficient2(-323, 1165), new MoonCoefficient2(299, 0), new MoonCoefficient2(294, 0), new MoonCoefficient2(0, 8752) ];\r\n GFX.g_MoonCoefficients3 = [ new MoonCoefficient1(0, 0, 0, 1), new MoonCoefficient1(0, 0, 1, 1), new MoonCoefficient1(0, 0, 1, -1), new MoonCoefficient1(2, 0, 0, -1), new MoonCoefficient1(2, 0, -1, 1), new MoonCoefficient1(2, 0, -1, -1), new MoonCoefficient1(2, 0, 0, 1), new MoonCoefficient1(0, 0, 2, 1), new MoonCoefficient1(2, 0, 1, -1), new MoonCoefficient1(0, 0, 2, -1), new MoonCoefficient1(2, -1, 0, -1), new MoonCoefficient1(2, 0, -2, -1), new MoonCoefficient1(2, 0, 1, 1), new MoonCoefficient1(2, 1, 0, -1), new MoonCoefficient1(2, -1, -1, 1), new MoonCoefficient1(2, -1, 0, 1), new MoonCoefficient1(2, -1, -1, -1), new MoonCoefficient1(0, 1, -1, -1), new MoonCoefficient1(4, 0, -1, -1), new MoonCoefficient1(0, 1, 0, 1), new MoonCoefficient1(0, 0, 0, 3), new MoonCoefficient1(0, 1, -1, 1), new MoonCoefficient1(1, 0, 0, 1), new MoonCoefficient1(0, 1, 1, 1), new MoonCoefficient1(0, 1, 1, -1), new MoonCoefficient1(0, 1, 0, -1), new MoonCoefficient1(1, 0, 0, -1), new MoonCoefficient1(0, 0, 3, 1), new MoonCoefficient1(4, 0, 0, -1), new MoonCoefficient1(4, 0, -1, 1), new MoonCoefficient1(0, 0, 1, -3), new MoonCoefficient1(4, 0, -2, 1), new MoonCoefficient1(2, 0, 0, -3), new MoonCoefficient1(2, 0, 2, -1), new MoonCoefficient1(2, -1, 1, -1), new MoonCoefficient1(2, 0, -2, 1), new MoonCoefficient1(0, 0, 3, -1), new MoonCoefficient1(2, 0, 2, 1), new MoonCoefficient1(2, 0, -3, -1), new MoonCoefficient1(2, 1, -1, 1), new MoonCoefficient1(2, 1, 0, 1), new MoonCoefficient1(4, 0, 0, 1), new MoonCoefficient1(2, -1, 1, 1), new MoonCoefficient1(2, -2, 0, -1), new MoonCoefficient1(0, 0, 1, 3), new MoonCoefficient1(2, 1, 1, -1), new MoonCoefficient1(1, 1, 0, -1), new MoonCoefficient1(1, 1, 0, 1), new MoonCoefficient1(0, 1, -2, -1), new MoonCoefficient1(2, 1, -1, -1), new MoonCoefficient1(1, 0, 1, 1), new MoonCoefficient1(2, -1, -2, -1), new MoonCoefficient1(0, 1, 2, 1), new MoonCoefficient1(4, 0, -2, -1), new MoonCoefficient1(4, -1, -1, -1), new MoonCoefficient1(1, 0, 1, -1), new MoonCoefficient1(4, 0, 1, -1), new MoonCoefficient1(1, 0, -1, -1), new MoonCoefficient1(4, -1, 0, -1), new MoonCoefficient1(2, -2, 0, 1) ];\r\n GFX.g_MoonCoefficients4 = [ 5128122, 280602, 277693, 173237, 55413, 46271, 32573, 17198, 9266, 8822, 8216, 4324, 4200, -3359, 2463, 2211, 2065, -1870, 1828, -1794, -1749, -1565, -1491, -1475, -1410, -1344, -1335, 1107, 1021, 833, 777, 671, 607, 596, 491, -451, 439, 422, 421, -366, -351, 331, 315, 302, -283, -229, 223, 223, -220, -220, -185, 181, -177, 176, 166, -164, 132, -119, 115, 107 ];\r\n GFX.g_MoonPerigeeApogeeCoefficients1 = [ new MPAC(2, 0, 0, -1.6769, 0), new MPAC(4, 0, 0, 0.4589, 0), new MPAC(6, 0, 0, -0.1856, 0), new MPAC(8, 0, 0, 0.0883, 0), new MPAC(2, -1, 0, -0.0773, 0.00019), new MPAC(0, 1, 0, 0.0502, -0.00013), new MPAC(10, 0, 0, -0.046, 0), new MPAC(4, -1, 0, 0.0422, -0.00011), new MPAC(6, -1, 0, -0.0256, 0), new MPAC(12, 0, 0, 0.0253, 0), new MPAC(1, 0, 0, 0.0237, 0), new MPAC(8, -1, 0, 0.0162, 0), new MPAC(14, 0, 0, -0.0145, 0), new MPAC(0, 0, 2, 0.0129, 0), new MPAC(3, 0, 0, -0.0112, 0), new MPAC(10, -1, 0, -0.0104, 0), new MPAC(16, 0, 0, 0.0086, 0), new MPAC(12, -1, 0, 0.0069, 0), new MPAC(5, 0, 0, 0.0066, 0), new MPAC(2, 0, 2, -0.0053, 0), new MPAC(18, 0, 0, -0.0052, 0), new MPAC(14, -1, 0, -0.0046, 0), new MPAC(7, 0, 0, -0.0041, 0), new MPAC(2, 1, 0, 0.004, 0), new MPAC(20, 0, 0, 0.0032, 0), new MPAC(1, 1, 0, -0.0032, 0), new MPAC(16, -1, 0, 0.0031, 0), new MPAC(4, 1, 0, -0.0029, 0), new MPAC(9, 0, 0, 0.0027, 0), new MPAC(4, 0, 2, 0.0027, 0), new MPAC(2, -2, 0, -0.0027, 0), new MPAC(4, -2, 0, 0.0024, 0), new MPAC(6, -2, 0, -0.0021, 0), new MPAC(22, 0, 0, -0.0021, 0), new MPAC(18, -1, 0, -0.0021, 0), new MPAC(6, 1, 0, 0.0019, 0), new MPAC(11, 0, 0, -0.0018, 0), new MPAC(8, 1, 0, -0.0014, 0), new MPAC(4, 0, -2, -0.0014, 0), new MPAC(6, 0, 2, -0.0014, 0), new MPAC(3, 1, 0, 0.0014, 0), new MPAC(5, 1, 0, -0.0014, 0), new MPAC(13, 0, 0, 0.0013, 0), new MPAC(20, -1, 0, 0.0013, 0), new MPAC(3, 2, 0, 0.0011, 0), new MPAC(4, -2, 2, -0.0011, 0), new MPAC(1, 2, 0, -0.0011, 0), new MPAC(22, -1, 0, -0.0009, 0), new MPAC(0, 0, 4, -0.0008, 0), new MPAC(6, 0, -2, 0.0008, 0), new MPAC(2, 1, -2, 0.0008, 0), new MPAC(0, 2, 0, 0.0007, 0), new MPAC(0, -1, 2, 0.0007, 0), new MPAC(2, 0, 4, 0.0007, 0), new MPAC(0, -2, 2, -0.0006, 0), new MPAC(2, 2, -2, -0.0006, 0), new MPAC(24, 0, 0, 0.0006, 0), new MPAC(4, 0, -4, 0.0005, 0), new MPAC(2, 2, 0, 0.0005, 0), new MPAC(1, -1, 0, -0.0004, 0) ];\r\n GFX.g_MoonPerigeeApogeeCoefficients2 = [ new MPAC(2, 0, 0, 0.4392, 0), new MPAC(4, 0, 0, 0.0684, 0), new MPAC(0, 1, 0, 0.0456, -0.00011), new MPAC(2, -1, 0, 0.0426, -0.00011), new MPAC(0, 0, 2, 0.0212, 0), new MPAC(1, 0, 0, -0.0189, 0), new MPAC(6, 0, 0, 0.0144, 0), new MPAC(4, -1, 0, 0.0113, 0), new MPAC(2, 0, 2, 0.0047, 0), new MPAC(1, 1, 0, 0.0036, 0), new MPAC(8, 0, 0, 0.0035, 0), new MPAC(6, -1, 0, 0.0034, 0), new MPAC(2, 0, -2, -0.0034, 0), new MPAC(2, -2, 0, 0.0022, 0), new MPAC(3, 0, 0, -0.0017, 0), new MPAC(4, 0, 2, 0.0013, 0), new MPAC(8, -1, 0, 0.0011, 0), new MPAC(4, -2, 0, 0.001, 0), new MPAC(10, 0, 0, 0.0009, 0), new MPAC(3, 1, 0, 0.0007, 0), new MPAC(0, 2, 0, 0.0006, 0), new MPAC(2, 1, 0, 0.0005, 0), new MPAC(2, 2, 0, 0.0005, 0), new MPAC(6, 0, 2, 0.0004, 0), new MPAC(6, -2, 0, 0.0004, 0), new MPAC(10, -1, 0, 0.0004, 0), new MPAC(5, 0, 0, -0.0004, 0), new MPAC(4, 0, -2, -0.0004, 0), new MPAC(0, 1, 2, 0.0003, 0), new MPAC(12, 0, 0, 0.0003, 0), new MPAC(2, -1, 2, 0.0003, 0), new MPAC(1, -1, 0, -0.0003, 0) ];\r\n GFX.g_MoonPerigeeApogeeCoefficients3 = [ new MPAC(2, 0, 0, 63.224, 0), new MPAC(4, 0, 0, -6.99, 0), new MPAC(2, -1, 0, 2.834, 0), new MPAC(2, -1, 0, 0, -0.0071), new MPAC(6, 0, 0, 1.927, 0), new MPAC(1, 0, 0, -1.263, 0), new MPAC(8, 0, 0, -0.702, 0), new MPAC(0, 1, 0, 0.696, 0), new MPAC(0, 1, 0, 0, -0.0017), new MPAC(0, 0, 2, -0.69, 0), new MPAC(4, -1, 0, -0.629, 0), new MPAC(4, -1, 0, 0, 0.0016), new MPAC(2, 0, -2, -0.392, 0), new MPAC(10, 0, 0, 0.297, 0), new MPAC(6, -1, 0, 0.26, 0), new MPAC(3, 0, 0, 0.201, 0), new MPAC(2, 1, 0, -0.161, 0), new MPAC(1, 1, 0, 0.157, 0), new MPAC(12, 0, 0, -0.138, 0), new MPAC(8, -1, 0, -0.127, 0), new MPAC(2, 0, 2, 0.104, 0), new MPAC(2, -2, 0, 0.104, 0), new MPAC(5, 0, 0, -0.079, 0), new MPAC(14, 0, 0, 0.068, 0), new MPAC(10, -1, 0, 0.067, 0), new MPAC(4, 1, 0, 0.054, 0), new MPAC(12, -1, 0, -0.038, 0), new MPAC(4, -2, 0, -0.038, 0), new MPAC(7, 0, 0, 0.037, 0), new MPAC(4, 0, 2, -0.037, 0), new MPAC(16, 0, 0, -0.035, 0), new MPAC(3, 1, 0, -0.03, 0), new MPAC(1, -1, 0, 0.029, 0), new MPAC(6, 1, 0, -0.025, 0), new MPAC(0, 2, 0, 0.023, 0), new MPAC(14, -1, 0, 0.023, 0), new MPAC(2, 2, 0, -0.023, 0), new MPAC(6, -2, 0, 0.022, 0), new MPAC(2, -1, -2, -0.021, 0), new MPAC(9, 0, 0, -0.02, 0), new MPAC(18, 0, 0, 0.019, 0), new MPAC(6, 0, 2, 0.017, 0), new MPAC(0, -1, 2, 0.014, 0), new MPAC(16, -1, 0, -0.014, 0), new MPAC(4, 0, -20, 0.013, 0), new MPAC(8, 1, 0, 0.012, 0), new MPAC(11, 0, 0, 0.011, 0), new MPAC(5, 1, 0, 0.01, 0), new MPAC(20, 0, 0, -0.01, 0) ];\r\n GFX.g_MoonPerigeeApogeeCoefficients4 = [ new MPAC(2, 0, 0, -9.147, 0), new MPAC(1, 0, 0, -0.841, 0), new MPAC(0, 0, 2, 0.697, 0), new MPAC(0, 1, 0, -0.656, 0.0016), new MPAC(4, 0, 0, 0.355, 0), new MPAC(2, -1, 0, 0.159, 0), new MPAC(1, 1, 0, 0.127, 0), new MPAC(4, -1, 0, 0.065, 0), new MPAC(6, 0, 0, 0.052, 0), new MPAC(2, 1, 0, 0.043, 0), new MPAC(2, 0, 2, 0.031, 0), new MPAC(2, 0, -2, -0.023, 0), new MPAC(2, -2, 0, 0.022, 0), new MPAC(2, 2, 0, 0.019, 0), new MPAC(0, 2, 0, -0.016, 0), new MPAC(6, -1, 0, 0.014, 0), new MPAC(8, 0, 0, 0.01, 0) ];\r\n GFX.g_L0NC = [ new VSC(531188633, 0, 0), new VSC(1798476, 2.9010127, 38.1330356), new VSC(1019728, 0.4858092, 1.4844727), new VSC(124532, 4.830081, 36.648563), new VSC(42064, 5.41055, 2.96895), new VSC(37715, 6.09222, 35.16409), new VSC(33785, 1.24489, 76.26607), new VSC(16483, 8E-05, 491.55793), new VSC(9199, 4.9375, 39.6175), new VSC(8994, 0.2746, 175.1661), new VSC(4216, 1.9871, 73.2971), new VSC(3365, 1.0359, 33.6796), new VSC(2285, 4.2061, 4.4534), new VSC(1434, 2.7834, 74.7816), new VSC(900, 2.076, 109.946), new VSC(745, 3.19, 71.813), new VSC(506, 5.748, 114.399), new VSC(400, 0.35, 1021.249), new VSC(345, 3.462, 41.102), new VSC(340, 3.304, 77.751), new VSC(323, 2.248, 32.195), new VSC(306, 0.497, 0.521), new VSC(287, 4.505, 0.048), new VSC(282, 2.246, 146.594), new VSC(267, 4.889, 0.963), new VSC(252, 5.782, 388.465), new VSC(245, 1.247, 9.561), new VSC(233, 2.505, 137.033), new VSC(227, 1.797, 453.425), new VSC(170, 3.324, 108.461), new VSC(151, 2.192, 33.94), new VSC(150, 2.997, 5.938), new VSC(148, 0.859, 111.43), new VSC(119, 3.677, 2.448), new VSC(109, 2.416, 183.243), new VSC(103, 0.041, 0.261), new VSC(103, 4.404, 70.328), new VSC(102, 5.705, 0.112) ];\r\n GFX.g_L1NC = [ new VSC(3837687717, 0, 0), new VSC(16604, 4.86319, 1.48447), new VSC(15807, 2.27923, 38.13304), new VSC(3335, 3.682, 76.2661), new VSC(1306, 3.6732, 2.9689), new VSC(605, 1.505, 35.164), new VSC(179, 3.453, 39.618), new VSC(107, 2.451, 4.453), new VSC(106, 2.755, 33.68), new VSC(73, 5.49, 36.65), new VSC(57, 1.86, 114.4), new VSC(57, 5.22, 0.52), new VSC(35, 4.52, 74.78), new VSC(32, 5.9, 77.75), new VSC(30, 3.67, 388.47), new VSC(29, 5.17, 9.56), new VSC(29, 5.17, 2.45), new VSC(26, 5.25, 168.05) ];\r\n GFX.g_L2NC = [ new VSC(53893, 0, 0), new VSC(296, 1.855, 1.484), new VSC(281, 1.191, 38.133), new VSC(270, 5.721, 76.266), new VSC(23, 1.21, 2.97), new VSC(9, 4.43, 35.16), new VSC(7, 0.54, 2.45) ];\r\n GFX.g_L3NC = [ new VSC(31, 0, 0), new VSC(15, 1.35, 76.27), new VSC(12, 6.04, 1.48), new VSC(12, 6.11, 38.13) ];\r\n GFX.g_L4NC = [ new VSC(114, 3.142, 0) ];\r\n GFX.g_B0NC = [ new VSC(3088623, 1.4410437, 38.1330356), new VSC(27789, 5.91272, 76.26607), new VSC(27624, 0, 0), new VSC(15448, 3.50877, 39.61751), new VSC(15355, 2.52124, 36.64856), new VSC(2000, 1.51, 74.7816), new VSC(1968, 4.3778, 1.4845), new VSC(1015, 3.2156, 35.1641), new VSC(606, 2.802, 73.297), new VSC(595, 2.129, 41.102), new VSC(589, 3.187, 2.969), new VSC(402, 4.169, 114.399), new VSC(280, 1.682, 77.751), new VSC(262, 3.767, 213.299), new VSC(254, 3.271, 453.425), new VSC(206, 4.257, 529.691), new VSC(140, 3.53, 137.033) ];\r\n GFX.g_B1NC = [ new VSC(227279, 3.807931, 38.133036), new VSC(1803, 1.9758, 76.2661), new VSC(1433, 3.1416, 0), new VSC(1386, 4.8256, 36.6486), new VSC(1073, 6.0805, 39.6175), new VSC(148, 3.858, 74.782), new VSC(136, 0.478, 1.484), new VSC(70, 6.19, 35.16), new VSC(52, 5.05, 73.3), new VSC(43, 0.31, 114.4), new VSC(37, 4.89, 41.1), new VSC(37, 5.76, 2.97), new VSC(26, 5.22, 213.3) ];\r\n GFX.g_B2NC = [ new VSC(9691, 5.5712, 38.133), new VSC(79, 3.63, 76.27), new VSC(72, 0.45, 36.65), new VSC(59, 3.14, 0), new VSC(30, 1.61, 39.62), new VSC(6, 5.61, 74.78) ];\r\n GFX.g_B3NC = [ new VSC(273, 1.017, 38.133), new VSC(2, 0, 0), new VSC(2, 2.37, 36.65), new VSC(2, 5.33, 76.27) ];\r\n GFX.g_B4NC = [ new VSC(6, 2.67, 38.13) ];\r\n GFX.g_R0NC = [ new VSC(3007013206, 0, 0), new VSC(27062259, 1.32999459, 38.13303564), new VSC(1691764, 3.2518614, 36.6485629), new VSC(807831, 5.185928, 1.484473), new VSC(537761, 4.521139, 35.16409), new VSC(495726, 1.571057, 491.557929), new VSC(274572, 1.845523, 175.16606), new VSC(135134, 3.372206, 39.617508), new VSC(121802, 5.797544, 76.266071), new VSC(100895, 0.377027, 73.297126), new VSC(69792, 3.79617, 2.96895), new VSC(46688, 5.74938, 33.67962), new VSC(24594, 0.50802, 109.94569), new VSC(16939, 1.59422, 71.81265), new VSC(14230, 1.07786, 74.7816), new VSC(12012, 1.92062, 1021.24889), new VSC(8395, 0.6782, 146.5943), new VSC(7572, 1.0715, 388.4652), new VSC(5721, 2.5906, 4.4534), new VSC(4840, 1.9069, 41.102), new VSC(4483, 2.9057, 529.691), new VSC(4421, 1.7499, 108.4612), new VSC(4354, 0.6799, 32.1951), new VSC(4270, 3.4134, 453.4249), new VSC(3381, 0.8481, 183.2428), new VSC(2881, 1.986, 137.033), new VSC(2879, 3.6742, 350.3321), new VSC(2636, 3.0976, 213.2991), new VSC(2530, 5.7984, 490.0735), new VSC(2523, 0.4863, 493.0424), new VSC(2306, 2.8096, 70.3282), new VSC(2087, 0.6186, 33.9402) ];\r\n GFX.g_R1NC = [ new VSC(236339, 0.70498, 38.133036), new VSC(13220, 3.32015, 1.48447), new VSC(8622, 6.2163, 35.1641), new VSC(2702, 1.8814, 39.6175), new VSC(2155, 2.0943, 2.9689), new VSC(2153, 5.1687, 76.2661), new VSC(1603, 0, 0), new VSC(1464, 1.1842, 33.6796), new VSC(1136, 3.9189, 36.6486), new VSC(898, 5.241, 388.465), new VSC(790, 0.533, 168.053), new VSC(760, 0.021, 182.28), new VSC(607, 1.077, 1021.249), new VSC(572, 3.401, 484.444), new VSC(561, 2.887, 498.671) ];\r\n GFX.g_R2NC = [ new VSC(4247, 5.8991, 38.133), new VSC(218, 0.346, 1.484), new VSC(163, 2.239, 168.053), new VSC(156, 4.594, 182.28), new VSC(127, 2.848, 35.164) ];\r\n GFX.g_R3NC = [ new VSC(166, 4.552, 38.133) ];\r\n GFX.g_NuC = [ new NUC(0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9), new NUC(-2, 0, 0, 2, 2, -13187, -1.6, 5736, -3.1), new NUC(0, 0, 0, 2, 2, -2274, -0.2, 977, -0.5), new NUC(0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5), new NUC(0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1), new NUC(0, 0, 1, 0, 0, 712, 0.1, -7, 0), new NUC(-2, 1, 0, 2, 2, -517, 1.2, 224, -0.6), new NUC(0, 0, 0, 2, 1, -386, -0.4, 200, 0), new NUC(0, 0, 1, 2, 2, -301, 0, 129, -0.1), new NUC(-2, -1, 0, 2, 2, 217, -0.5, -95, 0.3), new NUC(-2, 0, 1, 0, 0, -158, 0, 0, 0), new NUC(-2, 0, 0, 2, 1, 129, 0.1, -70, 0), new NUC(0, 0, -1, 2, 2, 123, 0, -53, 0), new NUC(2, 0, 0, 0, 0, 63, 0, 0, 0), new NUC(0, 0, 1, 0, 1, 63, 0.1, -33, 0), new NUC(2, 0, -1, 2, 2, -59, 0, 26, 0), new NUC(0, 0, -1, 0, 1, -58, -0.1, 32, 0), new NUC(0, 0, 1, 2, 1, -51, 0, 27, 0), new NUC(-2, 0, 2, 0, 0, 48, 0, 0, 0), new NUC(0, 0, -2, 2, 1, 46, 0, -24, 0), new NUC(2, 0, 0, 2, 2, -38, 0, 16, 0), new NUC(0, 0, 2, 2, 2, -31, 0, 13, 0), new NUC(0, 0, 2, 0, 0, 29, 0, 0, 0), new NUC(-2, 0, 1, 2, 2, 29, 0, -12, 0), new NUC(0, 0, 0, 2, 0, 26, 0, 0, 0), new NUC(-2, 0, 0, 2, 0, -22, 0, 0, 0), new NUC(0, 0, -1, 2, 1, 21, 0, -10, 0), new NUC(0, 2, 0, 0, 0, 17, -0.1, 0, 0), new NUC(2, 0, -1, 0, 1, 16, 0, -8, 0), new NUC(-2, 2, 0, 2, 2, -16, 0.1, 7, 0), new NUC(0, 1, 0, 0, 1, -15, 0, 9, 0), new NUC(-2, 0, 1, 0, 1, -13, 0, 7, 0), new NUC(0, -1, 0, 0, 1, -12, 0, 6, 0), new NUC(0, 0, 2, -2, 0, 11, 0, 0, 0), new NUC(2, 0, -1, 2, 1, -10, 0, 5, 0), new NUC(2, 0, 1, 2, 2, -8, 0, 3, 0), new NUC(0, 1, 0, 2, 2, 7, 0, -3, 0), new NUC(-2, 1, 1, 0, 0, -7, 0, 0, 0), new NUC(0, -1, 0, 2, 2, -7, 0, 3, 0), new NUC(2, 0, 0, 2, 1, -7, 0, 3, 0), new NUC(2, 0, 1, 0, 0, 6, 0, 0, 0), new NUC(-2, 0, 2, 2, 2, 6, 0, -3, 0), new NUC(-2, 0, 1, 2, 1, 6, 0, -3, 0), new NUC(2, 0, -2, 0, 1, -6, 0, 3, 0), new NUC(2, 0, 0, 0, 1, -6, 0, 3, 0), new NUC(0, -1, 1, 0, 0, 5, 0, 0, 0), new NUC(-2, -1, 0, 2, 1, -5, 0, 3, 0), new NUC(-2, 0, 0, 0, 1, -5, 0, 3, 0), new NUC(0, 0, 2, 2, 1, -5, 0, 3, 0), new NUC(-2, 0, 2, 0, 1, 4, 0, 0, 0), new NUC(-2, 1, 0, 2, 1, 4, 0, 0, 0), new NUC(0, 0, 1, -2, 0, 4, 0, 0, 0), new NUC(-1, 0, 1, 0, 0, -4, 0, 0, 0), new NUC(-2, 1, 0, 0, 0, -4, 0, 0, 0), new NUC(1, 0, 0, 0, 0, -4, 0, 0, 0), new NUC(0, 0, 1, 2, 0, 3, 0, 0, 0), new NUC(0, 0, -2, 2, 2, -3, 0, 0, 0), new NUC(-1, -1, 1, 0, 0, -3, 0, 0, 0), new NUC(0, 1, 1, 0, 0, -3, 0, 0, 0), new NUC(0, -1, 1, 2, 2, -3, 0, 0, 0), new NUC(2, -1, -1, 2, 2, -3, 0, 0, 0), new NUC(0, 0, 3, 2, 2, -3, 0, 0, 0), new NUC(2, -1, 0, 2, 2, -3, 0, 0, 0) ];\r\n GFX.g_AAParallax_C1 = Math.sin(CT.d2R(CT.dmS2D(0, 0, 8.794)));\r\n GFX.g_PlutoArgumentCoefficients = [ new PlutoCoefficient1(0, 0, 1), new PlutoCoefficient1(0, 0, 2), new PlutoCoefficient1(0, 0, 3), new PlutoCoefficient1(0, 0, 4), new PlutoCoefficient1(0, 0, 5), new PlutoCoefficient1(0, 0, 6), new PlutoCoefficient1(0, 1, -1), new PlutoCoefficient1(0, 1, 0), new PlutoCoefficient1(0, 1, 1), new PlutoCoefficient1(0, 1, 2), new PlutoCoefficient1(0, 1, 3), new PlutoCoefficient1(0, 2, -2), new PlutoCoefficient1(0, 2, -1), new PlutoCoefficient1(0, 2, 0), new PlutoCoefficient1(1, -1, 0), new PlutoCoefficient1(1, -1, 1), new PlutoCoefficient1(1, 0, -3), new PlutoCoefficient1(1, 0, -2), new PlutoCoefficient1(1, 0, -1), new PlutoCoefficient1(1, 0, 0), new PlutoCoefficient1(1, 0, 1), new PlutoCoefficient1(1, 0, 2), new PlutoCoefficient1(1, 0, 3), new PlutoCoefficient1(1, 0, 4), new PlutoCoefficient1(1, 1, -3), new PlutoCoefficient1(1, 1, -2), new PlutoCoefficient1(1, 1, -1), new PlutoCoefficient1(1, 1, 0), new PlutoCoefficient1(1, 1, 1), new PlutoCoefficient1(1, 1, 3), new PlutoCoefficient1(2, 0, -6), new PlutoCoefficient1(2, 0, -5), new PlutoCoefficient1(2, 0, -4), new PlutoCoefficient1(2, 0, -3), new PlutoCoefficient1(2, 0, -2), new PlutoCoefficient1(2, 0, -1), new PlutoCoefficient1(2, 0, 0), new PlutoCoefficient1(2, 0, 1), new PlutoCoefficient1(2, 0, 2), new PlutoCoefficient1(2, 0, 3), new PlutoCoefficient1(3, 0, -2), new PlutoCoefficient1(3, 0, -1), new PlutoCoefficient1(3, 0, 0) ];\r\n GFX.g_PlutoLongitudeCoefficients = [ new PlutoCoefficient2(-19799805, 19850055), new PlutoCoefficient2(897144, -4954829), new PlutoCoefficient2(611149, 1211027), new PlutoCoefficient2(-341243, -189585), new PlutoCoefficient2(129287, -34992), new PlutoCoefficient2(-38164, 30893), new PlutoCoefficient2(20442, -9987), new PlutoCoefficient2(-4063, -5071), new PlutoCoefficient2(-6016, -3336), new PlutoCoefficient2(-3956, 3039), new PlutoCoefficient2(-667, 3572), new PlutoCoefficient2(1276, 501), new PlutoCoefficient2(1152, -917), new PlutoCoefficient2(630, -1277), new PlutoCoefficient2(2571, -459), new PlutoCoefficient2(899, -1449), new PlutoCoefficient2(-1016, 1043), new PlutoCoefficient2(-2343, -1012), new PlutoCoefficient2(7042, 788), new PlutoCoefficient2(1199, -338), new PlutoCoefficient2(418, -67), new PlutoCoefficient2(120, -274), new PlutoCoefficient2(-60, -159), new PlutoCoefficient2(-82, -29), new PlutoCoefficient2(-36, -29), new PlutoCoefficient2(-40, 7), new PlutoCoefficient2(-14, 22), new PlutoCoefficient2(4, 13), new PlutoCoefficient2(5, 2), new PlutoCoefficient2(-1, 0), new PlutoCoefficient2(2, 0), new PlutoCoefficient2(-4, 5), new PlutoCoefficient2(4, -7), new PlutoCoefficient2(14, 24), new PlutoCoefficient2(-49, -34), new PlutoCoefficient2(163, -48), new PlutoCoefficient2(9, -24), new PlutoCoefficient2(-4, 1), new PlutoCoefficient2(-3, 1), new PlutoCoefficient2(1, 3), new PlutoCoefficient2(-3, -1), new PlutoCoefficient2(5, -3), new PlutoCoefficient2(0, 0) ];\r\n GFX.g_PlutoLatitudeCoefficients = [ new PlutoCoefficient2(-5452852, -14974862), new PlutoCoefficient2(3527812, 1672790), new PlutoCoefficient2(-1050748, 327647), new PlutoCoefficient2(178690, -292153), new PlutoCoefficient2(18650, 100340), new PlutoCoefficient2(-30697, -25823), new PlutoCoefficient2(4878, 11248), new PlutoCoefficient2(226, -64), new PlutoCoefficient2(2030, -836), new PlutoCoefficient2(69, -604), new PlutoCoefficient2(-247, -567), new PlutoCoefficient2(-57, 1), new PlutoCoefficient2(-122, 175), new PlutoCoefficient2(-49, -164), new PlutoCoefficient2(-197, 199), new PlutoCoefficient2(-25, 217), new PlutoCoefficient2(589, -248), new PlutoCoefficient2(-269, 711), new PlutoCoefficient2(185, 193), new PlutoCoefficient2(315, 807), new PlutoCoefficient2(-130, -43), new PlutoCoefficient2(5, 3), new PlutoCoefficient2(2, 17), new PlutoCoefficient2(2, 5), new PlutoCoefficient2(2, 3), new PlutoCoefficient2(3, 1), new PlutoCoefficient2(2, -1), new PlutoCoefficient2(1, -1), new PlutoCoefficient2(0, -1), new PlutoCoefficient2(0, 0), new PlutoCoefficient2(0, -2), new PlutoCoefficient2(2, 2), new PlutoCoefficient2(-7, 0), new PlutoCoefficient2(10, -8), new PlutoCoefficient2(-3, 20), new PlutoCoefficient2(6, 5), new PlutoCoefficient2(14, 17), new PlutoCoefficient2(-2, 0), new PlutoCoefficient2(0, 0), new PlutoCoefficient2(0, 0), new PlutoCoefficient2(0, 1), new PlutoCoefficient2(0, 0), new PlutoCoefficient2(1, 0) ];\r\n GFX.g_PlutoRadiusCoefficients = [ new PlutoCoefficient2(66865439, 68951812), new PlutoCoefficient2(-11827535, -332538), new PlutoCoefficient2(1593179, -1438890), new PlutoCoefficient2(-18444, 483220), new PlutoCoefficient2(-65977, -85431), new PlutoCoefficient2(31174, -6032), new PlutoCoefficient2(-5794, 22161), new PlutoCoefficient2(4601, 4032), new PlutoCoefficient2(-1729, 234), new PlutoCoefficient2(-415, 702), new PlutoCoefficient2(239, 723), new PlutoCoefficient2(67, -67), new PlutoCoefficient2(1034, -451), new PlutoCoefficient2(-129, 504), new PlutoCoefficient2(480, -231), new PlutoCoefficient2(2, -441), new PlutoCoefficient2(-3359, 265), new PlutoCoefficient2(7856, -7832), new PlutoCoefficient2(36, 45763), new PlutoCoefficient2(8663, 8547), new PlutoCoefficient2(-809, -769), new PlutoCoefficient2(263, -144), new PlutoCoefficient2(-126, 32), new PlutoCoefficient2(-35, -16), new PlutoCoefficient2(-19, -4), new PlutoCoefficient2(-15, 8), new PlutoCoefficient2(-4, 12), new PlutoCoefficient2(5, 6), new PlutoCoefficient2(3, 1), new PlutoCoefficient2(6, -2), new PlutoCoefficient2(2, 2), new PlutoCoefficient2(-2, -2), new PlutoCoefficient2(14, 13), new PlutoCoefficient2(-63, 13), new PlutoCoefficient2(136, -236), new PlutoCoefficient2(273, 1065), new PlutoCoefficient2(251, 149), new PlutoCoefficient2(-25, -9), new PlutoCoefficient2(9, -2), new PlutoCoefficient2(-8, 7), new PlutoCoefficient2(2, -10), new PlutoCoefficient2(19, 35), new PlutoCoefficient2(10, 3) ];\r\n GFX.g_L0SaturnCoefficients = [ new VSC(87401354, 0, 0), new VSC(11107660, 3.9620509, 213.29909544), new VSC(1414151, 4.5858152, 7.113547), new VSC(398379, 0.52112, 206.185548), new VSC(350769, 3.303299, 426.598191), new VSC(206816, 0.246584, 103.092774), new VSC(79271, 3.84007, 220.41264), new VSC(23990, 4.66977, 110.20632), new VSC(16574, 0.43719, 419.48464), new VSC(15820, 0.93809, 632.78374), new VSC(15054, 2.7167, 639.89729), new VSC(14907, 5.76903, 316.39187), new VSC(14610, 1.56519, 3.93215), new VSC(13160, 4.44891, 14.22709), new VSC(13005, 5.98119, 11.0457), new VSC(10725, 3.1294, 202.2534), new VSC(6126, 1.7633, 277.035), new VSC(5863, 0.2366, 529.691), new VSC(5228, 4.2078, 3.1814), new VSC(5020, 3.1779, 433.7117), new VSC(4593, 0.6198, 199.072), new VSC(4006, 2.2448, 63.7359), new VSC(3874, 3.2228, 138.5175), new VSC(3269, 0.7749, 949.1756), new VSC(2954, 0.9828, 95.9792), new VSC(2461, 2.0316, 735.8765), new VSC(1758, 3.2658, 522.5774), new VSC(1640, 5.505, 846.0828), new VSC(1581, 4.3727, 309.2783), new VSC(1391, 4.0233, 323.5054), new VSC(1124, 2.8373, 415.5525), new VSC(1087, 4.1834, 2.4477), new VSC(1017, 3.717, 227.5262), new VSC(957, 0.507, 1265.567), new VSC(853, 3.421, 175.166), new VSC(849, 3.191, 209.367), new VSC(789, 5.007, 0.963), new VSC(749, 2.144, 853.196), new VSC(744, 5.253, 224.345), new VSC(687, 1.747, 1052.268), new VSC(654, 1.599, 0.048), new VSC(634, 2.299, 412.371), new VSC(625, 0.97, 210.118), new VSC(580, 3.093, 74.782), new VSC(546, 2.127, 350.332), new VSC(543, 1.518, 9.561), new VSC(530, 4.449, 117.32), new VSC(478, 2.965, 137.033), new VSC(474, 5.475, 742.99), new VSC(452, 1.044, 490.334), new VSC(449, 1.29, 127.472), new VSC(372, 2.278, 217.231), new VSC(355, 3.013, 838.969), new VSC(347, 1.539, 340.771), new VSC(343, 0.246, 0.521), new VSC(330, 0.247, 1581.959), new VSC(322, 0.961, 203.738), new VSC(322, 2.572, 647.011), new VSC(309, 3.495, 216.48), new VSC(287, 2.37, 351.817), new VSC(278, 0.4, 211.815), new VSC(249, 1.47, 1368.66), new VSC(227, 4.91, 12.53), new VSC(220, 4.204, 200.769), new VSC(209, 1.345, 625.67), new VSC(208, 0.483, 1162.475), new VSC(208, 1.283, 39.357), new VSC(204, 6.011, 265.989), new VSC(185, 3.503, 149.563), new VSC(184, 0.973, 4.193), new VSC(182, 5.491, 2.921), new VSC(174, 1.863, 0.751), new VSC(165, 0.44, 5.417), new VSC(149, 5.736, 52.69), new VSC(148, 1.535, 5.629), new VSC(146, 6.231, 195.14), new VSC(140, 4.295, 21.341), new VSC(131, 4.068, 10.295), new VSC(125, 6.277, 1898.351), new VSC(122, 1.976, 4.666), new VSC(118, 5.341, 554.07), new VSC(117, 2.679, 1155.361), new VSC(114, 5.594, 1059.382), new VSC(112, 1.105, 191.208), new VSC(110, 0.166, 1.484), new VSC(109, 3.438, 536.805), new VSC(107, 4.012, 956.289), new VSC(104, 2.192, 88.866), new VSC(103, 1.197, 1685.052), new VSC(101, 4.965, 269.921) ];\r\n GFX.g_L1SaturnCoefficients = [ new VSC(21354295596, 0, 0), new VSC(1296855, 1.8282054, 213.2990954), new VSC(564348, 2.885001, 7.113547), new VSC(107679, 2.277699, 206.185548), new VSC(98323, 1.0807, 426.59819), new VSC(40255, 2.04128, 220.41264), new VSC(19942, 1.27955, 103.09277), new VSC(10512, 2.7488, 14.22709), new VSC(6939, 0.4049, 639.8973), new VSC(4803, 2.4419, 419.4846), new VSC(4056, 2.9217, 110.2063), new VSC(3769, 3.6497, 3.9322), new VSC(3385, 2.4169, 3.1814), new VSC(3302, 1.2626, 433.7117), new VSC(3071, 2.3274, 199.072), new VSC(1953, 3.5639, 11.0457), new VSC(1249, 2.628, 95.9792), new VSC(922, 1.961, 227.526), new VSC(706, 4.417, 529.691), new VSC(650, 6.174, 202.253), new VSC(628, 6.111, 309.278), new VSC(487, 6.04, 853.196), new VSC(479, 4.988, 522.577), new VSC(468, 4.617, 63.736), new VSC(417, 2.117, 323.505), new VSC(408, 1.299, 209.367), new VSC(352, 2.317, 632.784), new VSC(344, 3.959, 412.371), new VSC(340, 3.634, 316.392), new VSC(336, 3.772, 735.877), new VSC(332, 2.861, 210.118), new VSC(289, 2.733, 117.32), new VSC(281, 5.744, 2.448), new VSC(266, 0.543, 647.011), new VSC(230, 1.644, 216.48), new VSC(192, 2.965, 224.345), new VSC(173, 4.077, 846.083), new VSC(167, 2.597, 21.341), new VSC(136, 2.286, 10.295), new VSC(131, 3.441, 742.99), new VSC(128, 4.095, 217.231), new VSC(109, 6.161, 415.552), new VSC(98, 4.73, 838.97), new VSC(94, 3.48, 1052.27), new VSC(92, 3.95, 88.87), new VSC(87, 1.22, 440.83), new VSC(83, 3.11, 625.67), new VSC(78, 6.24, 302.16), new VSC(67, 0.29, 4.67), new VSC(66, 5.65, 9.56), new VSC(62, 4.29, 127.47), new VSC(62, 1.83, 195.14), new VSC(58, 2.48, 191.96), new VSC(57, 5.02, 137.03), new VSC(55, 0.28, 74.78), new VSC(54, 5.13, 490.33), new VSC(51, 1.46, 536.8), new VSC(47, 1.18, 149.56), new VSC(47, 5.15, 515.46), new VSC(46, 2.23, 956.29), new VSC(44, 2.71, 5.42), new VSC(40, 0.41, 269.92), new VSC(40, 3.89, 728.76), new VSC(38, 0.65, 422.67), new VSC(38, 2.53, 12.53), new VSC(37, 3.78, 2.92), new VSC(35, 6.08, 5.63), new VSC(34, 3.21, 1368.66), new VSC(33, 4.64, 277.03), new VSC(33, 5.43, 1066.5), new VSC(33, 0.3, 351.82), new VSC(32, 4.39, 1155.36), new VSC(31, 2.43, 52.69), new VSC(30, 2.84, 203), new VSC(30, 6.19, 284.15), new VSC(30, 3.39, 1059.38), new VSC(29, 2.03, 330.62), new VSC(28, 2.74, 265.99), new VSC(26, 4.51, 340.77) ];\r\n GFX.g_L2SaturnCoefficients = [ new VSC(116441, 1.179879, 7.113547), new VSC(91921, 0.07425, 213.2991), new VSC(90592, 0, 0), new VSC(15277, 4.06492, 206.18555), new VSC(10631, 0.25778, 220.41264), new VSC(10605, 5.40964, 426.59819), new VSC(4265, 1.046, 14.2271), new VSC(1216, 2.9186, 103.0928), new VSC(1165, 4.6094, 639.8973), new VSC(1082, 5.6913, 433.7117), new VSC(1045, 4.0421, 199.072), new VSC(1020, 0.6337, 3.1814), new VSC(634, 4.388, 419.485), new VSC(549, 5.573, 3.932), new VSC(457, 1.268, 110.206), new VSC(425, 0.209, 227.526), new VSC(274, 4.288, 95.979), new VSC(162, 1.381, 11.046), new VSC(129, 1.566, 309.278), new VSC(117, 3.881, 853.196), new VSC(105, 4.9, 647.011), new VSC(101, 0.893, 21.341), new VSC(96, 2.91, 316.39), new VSC(95, 5.63, 412.37), new VSC(85, 5.73, 209.37), new VSC(83, 6.05, 216.48), new VSC(82, 1.02, 117.32), new VSC(75, 4.76, 210.12), new VSC(67, 0.46, 522.58), new VSC(66, 0.48, 10.29), new VSC(64, 0.35, 323.51), new VSC(61, 4.88, 632.78), new VSC(53, 2.75, 529.69), new VSC(46, 5.69, 440.83), new VSC(45, 1.67, 202.25), new VSC(42, 5.71, 88.87), new VSC(32, 0.07, 63.74), new VSC(32, 1.67, 302.16), new VSC(31, 4.16, 191.96), new VSC(27, 0.83, 224.34), new VSC(25, 5.66, 735.88), new VSC(20, 5.94, 217.23), new VSC(18, 4.9, 625.67), new VSC(17, 1.63, 742.99), new VSC(16, 0.58, 515.46), new VSC(14, 0.21, 838.97), new VSC(14, 3.76, 195.14), new VSC(12, 4.72, 203), new VSC(12, 0.13, 234.64), new VSC(12, 3.12, 846.08), new VSC(11, 5.92, 536.8), new VSC(11, 5.6, 728.76), new VSC(11, 3.2, 1066.5), new VSC(10, 4.99, 422.67), new VSC(10, 0.26, 330.62), new VSC(10, 4.15, 860.31), new VSC(9, 0.46, 956.29), new VSC(8, 2.14, 269.92), new VSC(8, 5.25, 429.78), new VSC(8, 4.03, 9.56), new VSC(7, 5.4, 1052.27), new VSC(6, 4.46, 284.15), new VSC(6, 5.93, 405.26) ];\r\n GFX.g_L3SaturnCoefficients = [ new VSC(16039, 5.73945, 7.11355), new VSC(4250, 4.5854, 213.2991), new VSC(1907, 4.7608, 220.4126), new VSC(1466, 5.9133, 206.1855), new VSC(1162, 5.6197, 14.2271), new VSC(1067, 3.6082, 426.5982), new VSC(239, 3.861, 433.712), new VSC(237, 5.768, 199.072), new VSC(166, 5.116, 3.181), new VSC(151, 2.736, 639.897), new VSC(131, 4.743, 227.526), new VSC(63, 0.23, 419.48), new VSC(62, 4.74, 103.09), new VSC(40, 5.47, 21.34), new VSC(40, 5.96, 95.98), new VSC(39, 5.83, 110.21), new VSC(28, 3.01, 647.01), new VSC(25, 0.99, 3.93), new VSC(19, 1.92, 853.2), new VSC(18, 4.97, 10.29), new VSC(18, 1.03, 412.37), new VSC(18, 4.2, 216.48), new VSC(18, 3.32, 309.28), new VSC(16, 3.9, 440.83), new VSC(16, 5.62, 117.32), new VSC(13, 1.18, 88.87), new VSC(11, 5.58, 11.05), new VSC(11, 5.93, 191.96), new VSC(10, 3.95, 209.37), new VSC(9, 3.39, 302.16), new VSC(8, 4.88, 323.51), new VSC(7, 0.38, 632.78), new VSC(6, 2.25, 522.58), new VSC(6, 1.06, 210.12), new VSC(5, 4.64, 234.64), new VSC(4, 3.14, 0), new VSC(4, 2.31, 515.46), new VSC(3, 2.2, 860.31), new VSC(3, 0.59, 529.69), new VSC(3, 4.93, 224.34), new VSC(3, 0.42, 625.67), new VSC(2, 4.77, 330.62), new VSC(2, 3.35, 429.78), new VSC(2, 3.2, 202.25), new VSC(2, 1.19, 1066.5), new VSC(2, 1.35, 405.26), new VSC(2, 4.16, 223.59), new VSC(2, 3.07, 654.12) ];\r\n GFX.g_L4SaturnCoefficients = [ new VSC(1662, 3.9983, 7.1135), new VSC(257, 2.984, 220.413), new VSC(236, 3.902, 14.227), new VSC(149, 2.741, 213.299), new VSC(114, 3.142, 0), new VSC(110, 1.515, 206.186), new VSC(68, 1.72, 426.6), new VSC(40, 2.05, 433.71), new VSC(38, 1.24, 199.07), new VSC(31, 3.01, 227.53), new VSC(15, 0.83, 639.9), new VSC(9, 3.71, 21.34), new VSC(6, 2.42, 419.48), new VSC(6, 1.16, 647.01), new VSC(4, 1.45, 95.98), new VSC(4, 2.12, 440.83), new VSC(3, 4.09, 110.21), new VSC(3, 2.77, 412.37), new VSC(3, 3.01, 88.87), new VSC(3, 0, 853.2), new VSC(3, 0.39, 103.09), new VSC(2, 3.78, 117.32), new VSC(2, 2.83, 234.64), new VSC(2, 5.08, 309.28), new VSC(2, 2.24, 216.48), new VSC(2, 5.19, 302.16), new VSC(1, 1.55, 191.96) ];\r\n GFX.g_L5SaturnCoefficients = [ new VSC(124, 2.259, 7.114), new VSC(34, 2.16, 14.23), new VSC(28, 1.2, 220.41), new VSC(6, 1.22, 227.53), new VSC(5, 0.24, 433.71), new VSC(4, 6.23, 426.6), new VSC(3, 2.97, 199.07), new VSC(3, 4.29, 206.19), new VSC(2, 6.25, 213.3), new VSC(1, 5.28, 639.9), new VSC(1, 0.24, 440.83), new VSC(1, 3.14, 0) ];\r\n GFX.g_B0SaturnCoefficients = [ new VSC(4330678, 3.6028443, 213.2990954), new VSC(240348, 2.852385, 426.598191), new VSC(84746, 0, 0), new VSC(34116, 0.57297, 206.18555), new VSC(30863, 3.48442, 220.41264), new VSC(14734, 2.11847, 639.89729), new VSC(9917, 5.79, 419.4846), new VSC(6994, 4.736, 7.1135), new VSC(4808, 5.4331, 316.3919), new VSC(4788, 4.9651, 110.2063), new VSC(3432, 2.7326, 433.7117), new VSC(1506, 6.013, 103.0928), new VSC(1060, 5.631, 529.691), new VSC(969, 5.204, 632.784), new VSC(942, 1.396, 853.196), new VSC(708, 3.803, 323.505), new VSC(552, 5.131, 202.253), new VSC(400, 3.359, 227.526), new VSC(319, 3.626, 209.367), new VSC(316, 1.997, 647.011), new VSC(314, 0.465, 217.231), new VSC(284, 4.886, 224.345), new VSC(236, 2.139, 11.046), new VSC(215, 5.95, 846.083), new VSC(209, 2.12, 415.552), new VSC(207, 0.73, 199.072), new VSC(179, 2.954, 63.736), new VSC(141, 0.644, 490.334), new VSC(139, 4.595, 14.227), new VSC(139, 1.998, 735.877), new VSC(135, 5.245, 742.99), new VSC(122, 3.115, 522.577), new VSC(116, 3.109, 216.48), new VSC(114, 0.963, 210.118) ];\r\n GFX.g_B1SaturnCoefficients = [ new VSC(397555, 5.3329, 213.299095), new VSC(49479, 3.14159, 0), new VSC(18572, 6.09919, 426.59819), new VSC(14801, 2.30586, 206.18555), new VSC(9644, 1.6967, 220.4126), new VSC(3757, 1.2543, 419.4846), new VSC(2717, 5.9117, 639.8973), new VSC(1455, 0.8516, 433.7117), new VSC(1291, 2.9177, 7.1135), new VSC(853, 0.436, 316.392), new VSC(298, 0.919, 632.784), new VSC(292, 5.316, 853.196), new VSC(284, 1.619, 227.526), new VSC(275, 3.889, 103.093), new VSC(172, 0.052, 647.011), new VSC(166, 2.444, 199.072), new VSC(158, 5.209, 110.206), new VSC(128, 1.207, 529.691), new VSC(110, 2.457, 217.231), new VSC(82, 2.76, 210.12), new VSC(81, 2.86, 14.23), new VSC(69, 1.66, 202.25), new VSC(65, 1.26, 216.48), new VSC(61, 1.25, 209.37), new VSC(59, 1.82, 323.51), new VSC(46, 0.82, 440.83), new VSC(36, 1.82, 224.34), new VSC(34, 2.84, 117.32), new VSC(33, 1.31, 412.37), new VSC(32, 1.19, 846.08), new VSC(27, 4.65, 1066.5), new VSC(27, 4.44, 11.05) ];\r\n GFX.g_B2SaturnCoefficients = [ new VSC(20630, 0.50482, 213.2991), new VSC(3720, 3.9983, 206.1855), new VSC(1627, 6.1819, 220.4126), new VSC(1346, 0, 0), new VSC(706, 3.039, 419.485), new VSC(365, 5.099, 426.598), new VSC(330, 5.279, 433.712), new VSC(219, 3.828, 639.897), new VSC(139, 1.043, 7.114), new VSC(104, 6.157, 227.526), new VSC(93, 1.98, 316.39), new VSC(71, 4.15, 199.07), new VSC(52, 2.88, 632.78), new VSC(49, 4.43, 647.01), new VSC(41, 3.16, 853.2), new VSC(29, 4.53, 210.12), new VSC(24, 1.12, 14.23), new VSC(21, 4.35, 217.23), new VSC(20, 5.31, 440.83), new VSC(18, 0.85, 110.21), new VSC(17, 5.68, 216.48), new VSC(16, 4.26, 103.09), new VSC(14, 3, 412.37), new VSC(12, 2.53, 529.69), new VSC(8, 3.32, 202.25), new VSC(7, 5.56, 209.37), new VSC(7, 0.29, 323.51), new VSC(6, 1.16, 117.32), new VSC(6, 3.61, 869.31) ];\r\n GFX.g_B3SaturnCoefficients = [ new VSC(666, 1.99, 213.299), new VSC(632, 5.698, 206.186), new VSC(398, 0, 0), new VSC(188, 4.338, 220.413), new VSC(92, 4.84, 419.48), new VSC(52, 3.42, 433.71), new VSC(42, 2.38, 426.6), new VSC(26, 4.4, 227.53), new VSC(21, 5.85, 199.07), new VSC(18, 1.99, 639.9), new VSC(11, 5.37, 7.11), new VSC(10, 2.55, 647.01), new VSC(7, 3.46, 316.39), new VSC(6, 4.8, 632.78), new VSC(6, 0.02, 210.12), new VSC(6, 3.52, 440.83), new VSC(5, 5.64, 14.23), new VSC(5, 1.22, 853.2), new VSC(4, 4.71, 412.37), new VSC(3, 0.63, 103.09), new VSC(2, 3.72, 216.48) ];\r\n GFX.g_B4SaturnCoefficients = [ new VSC(80, 1.12, 206.19), new VSC(32, 3.12, 213.3), new VSC(17, 2.48, 220.41), new VSC(12, 3.14, 0), new VSC(9, 0.38, 419.48), new VSC(6, 1.56, 433.71), new VSC(5, 2.63, 227.53), new VSC(5, 1.28, 199.07), new VSC(1, 1.43, 426.6), new VSC(1, 0.67, 647.01), new VSC(1, 1.72, 440.83), new VSC(1, 6.18, 639.9) ];\r\n GFX.g_B5SaturnCoefficients = [ new VSC(8, 2.82, 206.19), new VSC(1, 0.51, 220.41) ];\r\n GFX.g_R0SaturnCoefficients = [ new VSC(955758136, 0, 0), new VSC(52921382, 2.3922622, 213.29909544), new VSC(1873680, 5.2354961, 206.1855484), new VSC(1464664, 1.6476305, 426.5981909), new VSC(821891, 5.9352, 316.39187), new VSC(547507, 5.015326, 103.092774), new VSC(371684, 2.271148, 220.412642), new VSC(361778, 3.139043, 7.113547), new VSC(140618, 5.704067, 632.783739), new VSC(108975, 3.293136, 110.206321), new VSC(69007, 5.941, 419.48464), new VSC(61053, 0.94038, 639.89729), new VSC(48913, 1.55733, 202.2534), new VSC(34144, 0.19519, 277.03499), new VSC(32402, 5.47085, 949.17561), new VSC(20937, 0.46349, 735.87651), new VSC(20839, 1.52103, 433.71174), new VSC(20747, 5.33256, 199.072), new VSC(15298, 3.05944, 529.69097), new VSC(14296, 2.60434, 323.50542), new VSC(12884, 1.64892, 138.5175), new VSC(11993, 5.98051, 846.08283), new VSC(11380, 1.73106, 522.57742), new VSC(9796, 5.2048, 1265.5675), new VSC(7753, 5.8519, 95.9792), new VSC(6771, 3.0043, 14.2271), new VSC(6466, 0.1773, 1052.2684), new VSC(5850, 1.4552, 415.5525), new VSC(5307, 0.5974, 63.7359), new VSC(4696, 2.1492, 227.5262), new VSC(4044, 1.6401, 209.3669), new VSC(3688, 0.7802, 412.3711), new VSC(3461, 1.8509, 175.1661), new VSC(3420, 4.9455, 1581.9593), new VSC(3401, 0.5539, 350.3321), new VSC(3376, 3.6953, 224.3448), new VSC(2976, 5.6847, 210.1177), new VSC(2885, 1.3876, 838.9693), new VSC(2881, 0.1796, 853.1964), new VSC(2508, 3.5385, 742.9901), new VSC(2448, 6.1841, 1368.6603), new VSC(2406, 2.9656, 117.3199), new VSC(2174, 0.0151, 340.7709), new VSC(2024, 5.0541, 11.0457) ];\r\n GFX.g_R1SaturnCoefficients = [ new VSC(6182981, 0.2584352, 213.2990954), new VSC(506578, 0.711147, 206.185548), new VSC(341394, 5.796358, 426.598191), new VSC(188491, 0.472157, 220.412642), new VSC(186262, 3.141593, 0), new VSC(143891, 1.407449, 7.113547), new VSC(49621, 6.01744, 103.09277), new VSC(20928, 5.09246, 639.89729), new VSC(19953, 1.1756, 419.48464), new VSC(18840, 1.6082, 110.20632), new VSC(13877, 0.75886, 199.072), new VSC(12893, 5.9433, 433.71174), new VSC(5397, 1.2885, 14.2271), new VSC(4869, 0.8679, 323.5054), new VSC(4247, 0.393, 227.5262), new VSC(3252, 1.2585, 95.9792), new VSC(3081, 3.4366, 522.5774), new VSC(2909, 4.6068, 202.2534), new VSC(2856, 2.1673, 735.8765), new VSC(1988, 2.4505, 412.3711), new VSC(1941, 6.0239, 209.3669), new VSC(1581, 1.2919, 210.1177), new VSC(1340, 4.308, 853.1964), new VSC(1316, 1.253, 117.3199), new VSC(1203, 1.8665, 316.3919), new VSC(1091, 0.0753, 216.4805), new VSC(966, 0.48, 632.784), new VSC(954, 5.152, 647.011), new VSC(898, 0.983, 529.691), new VSC(882, 1.885, 1052.268), new VSC(874, 1.402, 224.345), new VSC(785, 3.064, 838.969), new VSC(740, 1.382, 625.67), new VSC(658, 4.144, 309.278), new VSC(650, 1.725, 742.99), new VSC(613, 3.033, 63.736), new VSC(599, 2.549, 217.231), new VSC(503, 2.13, 3.932) ];\r\n GFX.g_R2SaturnCoefficients = [ new VSC(436902, 4.786717, 213.299095), new VSC(71923, 2.5007, 206.18555), new VSC(49767, 4.97168, 220.41264), new VSC(43221, 3.8694, 426.59819), new VSC(29646, 5.9631, 7.11355), new VSC(4721, 2.4753, 199.072), new VSC(4142, 4.1067, 433.7117), new VSC(3789, 3.0977, 639.8973), new VSC(2964, 1.3721, 103.0928), new VSC(2556, 2.8507, 419.4846), new VSC(2327, 0, 0), new VSC(2208, 6.2759, 110.2063), new VSC(2188, 5.8555, 14.2271), new VSC(1957, 4.9245, 227.5262), new VSC(924, 5.464, 323.505), new VSC(706, 2.971, 95.979), new VSC(546, 4.129, 412.371), new VSC(431, 5.178, 522.577), new VSC(405, 4.173, 209.367), new VSC(391, 4.481, 216.48), new VSC(374, 5.834, 117.32), new VSC(361, 3.277, 647.011), new VSC(356, 3.192, 210.118), new VSC(326, 2.269, 853.196), new VSC(207, 4.022, 735.877), new VSC(204, 0.088, 202.253), new VSC(180, 3.597, 632.784), new VSC(178, 4.097, 440.825), new VSC(154, 3.135, 625.67), new VSC(148, 0.136, 302.165), new VSC(133, 2.594, 191.958), new VSC(132, 5.933, 309.278) ];\r\n GFX.g_R3SaturnCoefficients = [ new VSC(20315, 3.02187, 213.2991), new VSC(8924, 3.1914, 220.4126), new VSC(6909, 4.3517, 206.1855), new VSC(4087, 4.2241, 7.1135), new VSC(3879, 2.0106, 426.5982), new VSC(1071, 4.2036, 199.072), new VSC(907, 2.283, 433.712), new VSC(606, 3.175, 227.526), new VSC(597, 4.135, 14.227), new VSC(483, 1.173, 639.897), new VSC(393, 0, 0), new VSC(229, 4.698, 419.485), new VSC(188, 4.59, 110.206), new VSC(150, 3.202, 103.093), new VSC(121, 3.768, 323.505), new VSC(102, 4.71, 95.979), new VSC(101, 5.819, 412.371), new VSC(93, 1.44, 647.01), new VSC(84, 2.63, 216.48), new VSC(73, 4.15, 117.32), new VSC(62, 2.31, 440.83), new VSC(55, 0.31, 853.2), new VSC(50, 2.39, 209.37), new VSC(45, 4.37, 191.96), new VSC(41, 0.69, 522.58), new VSC(40, 1.84, 302.16), new VSC(38, 5.94, 88.87), new VSC(32, 4.01, 21.34) ];\r\n GFX.g_R4SaturnCoefficients = [ new VSC(1202, 1.415, 220.4126), new VSC(708, 1.162, 213.299), new VSC(516, 6.24, 206.186), new VSC(427, 2.469, 7.114), new VSC(268, 0.187, 426.598), new VSC(170, 5.959, 199.072), new VSC(150, 0.48, 433.712), new VSC(145, 1.442, 227.526), new VSC(121, 2.405, 14.227), new VSC(47, 5.57, 639.9), new VSC(19, 5.86, 647.01), new VSC(17, 0.53, 440.83), new VSC(16, 2.9, 110.21), new VSC(15, 0.3, 419.48), new VSC(14, 1.3, 412.37), new VSC(13, 2.09, 323.51), new VSC(11, 0.22, 95.98), new VSC(11, 2.46, 117.32), new VSC(10, 3.14, 0), new VSC(9, 1.56, 88.87), new VSC(9, 2.28, 21.34), new VSC(9, 0.68, 216.48), new VSC(8, 1.27, 234.64) ];\r\n GFX.g_R5SaturnCoefficients = [ new VSC(129, 5.913, 220.413), new VSC(32, 0.69, 7.11), new VSC(27, 5.91, 227.53), new VSC(20, 4.95, 433.71), new VSC(20, 0.67, 14.23), new VSC(14, 2.67, 206.19), new VSC(14, 1.46, 199.07), new VSC(13, 4.59, 426.6), new VSC(7, 4.63, 213.3), new VSC(5, 3.61, 639.9), new VSC(4, 4.9, 440.83), new VSC(3, 4.07, 647.01), new VSC(3, 4.66, 191.96), new VSC(3, 0.49, 323.51), new VSC(3, 3.18, 419.48), new VSC(2, 3.7, 88.87), new VSC(2, 3.32, 95.98), new VSC(2, 0.56, 117.32) ];\r\n GFX.g_L0UranusCoefficients = [ new VSC(548129294, 0, 0), new VSC(9260408, 0.8910642, 74.7815986), new VSC(1504248, 3.6271926, 1.4844727), new VSC(365982, 1.899622, 73.297126), new VSC(272328, 3.358237, 149.563197), new VSC(70328, 5.39254, 63.7359), new VSC(68893, 6.09292, 76.26607), new VSC(61999, 2.26952, 2.96895), new VSC(61951, 2.85099, 11.0457), new VSC(26469, 3.14152, 71.81265), new VSC(25711, 6.1138, 454.90937), new VSC(21079, 4.36059, 148.07872), new VSC(17819, 1.74437, 36.64856), new VSC(14613, 4.73732, 3.93215), new VSC(11163, 5.82682, 224.3448), new VSC(10998, 0.48865, 138.5175), new VSC(9527, 2.9552, 35.1641), new VSC(7546, 5.2363, 109.9457), new VSC(4220, 3.2333, 70.8494), new VSC(4052, 2.2775, 151.0477), new VSC(3490, 5.4831, 146.5943), new VSC(3355, 1.0655, 4.4534), new VSC(3144, 4.752, 77.7505), new VSC(2927, 4.629, 9.5612), new VSC(2922, 5.3524, 85.8273), new VSC(2273, 4.366, 70.3282), new VSC(2149, 0.6075, 38.133), new VSC(2051, 1.5177, 0.1119), new VSC(1992, 4.9244, 277.035), new VSC(1667, 3.6274, 380.1278), new VSC(1533, 2.5859, 52.6902), new VSC(1376, 2.0428, 65.2204), new VSC(1372, 4.1964, 111.4302), new VSC(1284, 3.1135, 202.2534), new VSC(1282, 0.5427, 222.8603), new VSC(1244, 0.9161, 2.4477), new VSC(1221, 0.199, 108.4612), new VSC(1151, 4.179, 33.6796), new VSC(1150, 0.9334, 3.1814), new VSC(1090, 1.775, 12.5302), new VSC(1072, 0.2356, 62.2514), new VSC(946, 1.192, 127.472), new VSC(708, 5.183, 213.299), new VSC(653, 0.966, 78.714), new VSC(628, 0.182, 984.6), new VSC(607, 5.432, 529.691), new VSC(559, 3.358, 0.521), new VSC(524, 2.013, 299.126), new VSC(483, 2.106, 0.963), new VSC(471, 1.407, 184.727), new VSC(467, 0.415, 145.11), new VSC(434, 5.521, 183.243), new VSC(405, 5.987, 8.077), new VSC(399, 0.338, 415.552), new VSC(396, 5.87, 351.817), new VSC(379, 2.35, 56.622), new VSC(310, 5.833, 145.631), new VSC(300, 5.644, 22.091), new VSC(294, 5.839, 39.618), new VSC(252, 1.637, 221.376), new VSC(249, 4.746, 225.829), new VSC(239, 2.35, 137.033), new VSC(224, 0.516, 84.343), new VSC(223, 2.843, 0.261), new VSC(220, 1.922, 67.668), new VSC(217, 6.142, 5.938), new VSC(216, 4.778, 340.771), new VSC(208, 5.58, 68.844), new VSC(202, 1.297, 0.048), new VSC(199, 0.956, 152.532), new VSC(194, 1.888, 456.394), new VSC(193, 0.916, 453.425), new VSC(187, 1.319, 0.16), new VSC(182, 3.536, 79.235), new VSC(173, 1.539, 160.609), new VSC(172, 5.68, 219.891), new VSC(170, 3.677, 5.417), new VSC(169, 5.879, 18.159), new VSC(165, 1.424, 106.977), new VSC(163, 3.05, 112.915), new VSC(158, 0.738, 54.175), new VSC(147, 1.263, 59.804), new VSC(143, 1.3, 35.425), new VSC(139, 5.386, 32.195), new VSC(139, 4.26, 909.819), new VSC(124, 1.374, 7.114), new VSC(110, 2.027, 554.07), new VSC(109, 5.706, 77.963), new VSC(104, 5.028, 0.751), new VSC(104, 1.458, 24.379), new VSC(103, 0.681, 14.978) ];\r\n GFX.g_L1UranusCoefficients = [ new VSC(7502543122, 0, 0), new VSC(154458, 5.242017, 74.781599), new VSC(24456, 1.71256, 1.48447), new VSC(9258, 0.4284, 11.0457), new VSC(8266, 1.5022, 63.7359), new VSC(7842, 1.3198, 149.5632), new VSC(3899, 0.4648, 3.9322), new VSC(2284, 4.1737, 76.2661), new VSC(1927, 0.5301, 2.9689), new VSC(1233, 1.5863, 70.8494), new VSC(791, 5.436, 3.181), new VSC(767, 1.996, 73.297), new VSC(482, 2.984, 85.827), new VSC(450, 4.138, 138.517), new VSC(446, 3.723, 224.345), new VSC(427, 4.731, 71.813), new VSC(354, 2.583, 148.079), new VSC(348, 2.454, 9.561), new VSC(317, 5.579, 52.69), new VSC(206, 2.363, 2.448), new VSC(189, 4.202, 56.622), new VSC(184, 0.284, 151.048), new VSC(180, 5.684, 12.53), new VSC(171, 3.001, 78.714), new VSC(158, 2.909, 0.963), new VSC(155, 5.591, 4.453), new VSC(154, 4.652, 35.164), new VSC(152, 2.942, 77.751), new VSC(143, 2.59, 62.251), new VSC(121, 4.148, 127.472), new VSC(116, 3.732, 65.22), new VSC(102, 4.188, 145.631), new VSC(102, 6.034, 0.112), new VSC(88, 3.99, 18.16), new VSC(88, 6.16, 202.25), new VSC(81, 2.64, 22.09), new VSC(72, 6.05, 70.33), new VSC(69, 4.05, 77.96), new VSC(59, 3.7, 67.67), new VSC(47, 3.54, 351.82), new VSC(44, 5.91, 7.11), new VSC(43, 5.72, 5.42), new VSC(39, 4.92, 222.86), new VSC(36, 5.9, 33.68), new VSC(36, 3.29, 8.08), new VSC(36, 3.33, 71.6), new VSC(35, 5.08, 38.13), new VSC(31, 5.62, 984.6), new VSC(31, 5.5, 59.8), new VSC(31, 5.46, 160.61), new VSC(30, 1.66, 447.8), new VSC(29, 1.15, 462.02), new VSC(29, 4.52, 84.34), new VSC(27, 5.54, 131.4), new VSC(27, 6.15, 299.13), new VSC(26, 4.99, 137.03), new VSC(25, 5.74, 380.13) ];\r\n GFX.g_L2UranusCoefficients = [ new VSC(53033, 0, 0), new VSC(2358, 2.2601, 74.7816), new VSC(769, 4.526, 11.046), new VSC(552, 3.258, 63.736), new VSC(542, 2.276, 3.932), new VSC(529, 4.923, 1.484), new VSC(258, 3.691, 3.181), new VSC(239, 5.858, 149.563), new VSC(182, 6.218, 70.849), new VSC(54, 1.44, 76.27), new VSC(49, 6.03, 56.62), new VSC(45, 3.91, 2.45), new VSC(45, 0.81, 85.83), new VSC(38, 1.78, 52.69), new VSC(37, 4.46, 2.97), new VSC(33, 0.86, 9.56), new VSC(29, 5.1, 73.3), new VSC(24, 2.11, 18.16), new VSC(22, 5.99, 138.52), new VSC(22, 4.82, 78.71), new VSC(21, 2.4, 77.96), new VSC(21, 2.17, 224.34), new VSC(17, 2.54, 145.63), new VSC(17, 3.47, 12.53), new VSC(12, 0.02, 22.09), new VSC(11, 0.08, 127.47), new VSC(10, 5.16, 71.6), new VSC(10, 4.46, 62.25), new VSC(9, 4.26, 7.11), new VSC(8, 5.5, 67.67), new VSC(7, 1.25, 5.42), new VSC(6, 3.36, 447.8), new VSC(6, 5.45, 65.22), new VSC(6, 4.52, 151.05), new VSC(6, 5.73, 462.02) ];\r\n GFX.g_L3UranusCoefficients = [ new VSC(121, 0.024, 74.782), new VSC(68, 4.12, 3.93), new VSC(53, 2.39, 11.05), new VSC(46, 0, 0), new VSC(45, 2.04, 3.18), new VSC(44, 2.96, 1.48), new VSC(25, 4.89, 63.74), new VSC(21, 4.55, 70.85), new VSC(20, 2.31, 149.56), new VSC(9, 1.58, 56.62), new VSC(4, 0.23, 18.16), new VSC(4, 5.39, 76.27), new VSC(4, 0.95, 77.96), new VSC(3, 4.98, 85.83), new VSC(3, 4.13, 52.69), new VSC(3, 0.37, 78.71), new VSC(2, 0.86, 145.63), new VSC(2, 5.66, 9.56) ];\r\n GFX.g_L4UranusCoefficients = [ new VSC(114, 3.142, 0), new VSC(6, 4.58, 74.78), new VSC(3, 0.35, 11.05), new VSC(1, 3.42, 56.62) ];\r\n GFX.g_B0UranusCoefficients = [ new VSC(1346278, 2.6187781, 74.7815986), new VSC(62341, 5.08111, 149.5632), new VSC(61601, 3.14159, 0), new VSC(9964, 1.616, 76.2661), new VSC(9926, 0.5763, 73.2971), new VSC(3259, 1.2612, 224.3448), new VSC(2972, 2.2437, 1.4845), new VSC(2010, 6.0555, 148.0787), new VSC(1522, 0.2796, 63.7359), new VSC(924, 4.038, 151.048), new VSC(761, 6.14, 71.813), new VSC(522, 3.321, 138.517), new VSC(463, 0.743, 85.827), new VSC(437, 3.381, 529.691), new VSC(435, 0.341, 77.751), new VSC(431, 3.554, 213.299), new VSC(420, 5.213, 11.046), new VSC(245, 0.788, 2.969), new VSC(233, 2.257, 222.86), new VSC(216, 1.591, 38.133), new VSC(180, 3.725, 299.126), new VSC(175, 1.236, 146.594), new VSC(174, 1.937, 380.128), new VSC(160, 5.336, 111.43), new VSC(144, 5.962, 35.164), new VSC(116, 5.739, 70.849), new VSC(106, 0.941, 70.328), new VSC(102, 2.619, 78.714) ];\r\n GFX.g_B1UranusCoefficients = [ new VSC(206366, 4.123943, 74.781599), new VSC(8563, 0.3382, 149.5632), new VSC(1726, 2.1219, 73.2971), new VSC(1374, 0, 0), new VSC(1369, 3.0686, 76.2661), new VSC(451, 3.777, 1.484), new VSC(400, 2.848, 224.345), new VSC(307, 1.255, 148.079), new VSC(154, 3.786, 63.736), new VSC(112, 5.573, 151.048), new VSC(111, 5.329, 138.517), new VSC(83, 3.59, 71.81), new VSC(56, 3.4, 85.83), new VSC(54, 1.7, 77.75), new VSC(42, 1.21, 11.05), new VSC(41, 4.45, 78.71), new VSC(32, 3.77, 222.86), new VSC(30, 2.56, 2.97), new VSC(27, 5.34, 213.3), new VSC(26, 0.42, 380.13) ];\r\n GFX.g_B2UranusCoefficients = [ new VSC(9212, 5.8004, 74.7816), new VSC(557, 0, 0), new VSC(286, 2.177, 149.563), new VSC(95, 3.84, 73.3), new VSC(45, 4.88, 76.27), new VSC(20, 5.46, 1.48), new VSC(15, 0.88, 138.52), new VSC(14, 2.85, 148.08), new VSC(14, 5.07, 63.74), new VSC(10, 5, 224.34), new VSC(8, 6.27, 78.71) ];\r\n GFX.g_B3UranusCoefficients = [ new VSC(268, 1.251, 74.782), new VSC(11, 3.14, 0), new VSC(6, 4.01, 149.56), new VSC(3, 5.78, 73.3) ];\r\n GFX.g_B4UranusCoefficients = [ new VSC(6, 2.85, 74.78) ];\r\n GFX.g_R0UranusCoefficients = [ new VSC(1921264848, 0, 0), new VSC(88784984, 5.60377527, 74.78159857), new VSC(3440836, 0.328361, 73.2971259), new VSC(2055653, 1.7829517, 149.5631971), new VSC(649322, 4.522473, 76.266071), new VSC(602248, 3.860038, 63.735898), new VSC(496404, 1.401399, 454.909367), new VSC(338526, 1.580027, 138.517497), new VSC(243508, 1.570866, 71.812653), new VSC(190522, 1.998094, 1.484473), new VSC(161858, 2.791379, 148.078724), new VSC(143706, 1.383686, 11.0457), new VSC(93192, 0.17437, 36.64856), new VSC(89806, 3.66105, 109.94569), new VSC(71424, 4.24509, 224.3448), new VSC(46677, 1.39977, 35.16409), new VSC(39026, 3.36235, 277.03499), new VSC(39010, 1.66971, 70.84945), new VSC(36755, 3.88649, 146.59425), new VSC(30349, 0.701, 151.04767), new VSC(29156, 3.18056, 77.75054), new VSC(25786, 3.78538, 85.8273), new VSC(25620, 5.25656, 380.12777), new VSC(22637, 0.72519, 529.69097), new VSC(20473, 2.7964, 70.32818), new VSC(20472, 1.55589, 202.2534), new VSC(17901, 0.55455, 2.96895), new VSC(15503, 5.35405, 38.13304), new VSC(14702, 4.90434, 108.46122), new VSC(12897, 2.62154, 111.43016), new VSC(12328, 5.96039, 127.4718), new VSC(11959, 1.75044, 984.60033), new VSC(11853, 0.99343, 52.6902), new VSC(11696, 3.29826, 3.93215), new VSC(11495, 0.43774, 65.22037), new VSC(10793, 1.42105, 213.2991), new VSC(9111, 4.9964, 62.2514), new VSC(8421, 5.2535, 222.8603), new VSC(8402, 5.0388, 415.5525), new VSC(7449, 0.7949, 351.8166), new VSC(7329, 3.9728, 183.2428), new VSC(6046, 5.6796, 78.7138), new VSC(5524, 3.115, 9.5612), new VSC(5445, 5.1058, 145.1098), new VSC(5238, 2.6296, 33.6796), new VSC(4079, 3.2206, 340.7709), new VSC(3919, 4.2502, 39.6175), new VSC(3802, 6.1099, 184.7273), new VSC(3781, 3.4584, 456.3938), new VSC(3687, 2.4872, 453.4249), new VSC(3102, 4.1403, 219.8914), new VSC(2963, 0.8298, 56.6224), new VSC(2942, 0.4239, 299.1264), new VSC(2940, 2.1464, 137.033), new VSC(2938, 3.6766, 140.002), new VSC(2865, 0.31, 12.5302), new VSC(2538, 4.8546, 131.4039), new VSC(2364, 0.4425, 554.07), new VSC(2183, 2.9404, 305.3462) ];\r\n GFX.g_R1UranusCoefficients = [ new VSC(1479896, 3.6720571, 74.7815986), new VSC(71212, 6.22601, 63.7359), new VSC(68627, 6.13411, 149.5632), new VSC(24060, 3.14159, 0), new VSC(21468, 2.60177, 76.26607), new VSC(20857, 5.24625, 11.0457), new VSC(11405, 0.01848, 70.84945), new VSC(7497, 0.4236, 73.2971), new VSC(4244, 1.4169, 85.8273), new VSC(3927, 3.1551, 71.8127), new VSC(3578, 2.3116, 224.3448), new VSC(3506, 2.5835, 138.5175), new VSC(3229, 5.255, 3.9322), new VSC(3060, 0.1532, 1.4845), new VSC(2564, 0.9808, 148.0787), new VSC(2429, 3.9944, 52.6902), new VSC(1645, 2.6535, 127.4718), new VSC(1584, 1.4305, 78.7138), new VSC(1508, 5.06, 151.0477), new VSC(1490, 2.6756, 56.6224), new VSC(1413, 4.5746, 202.2534), new VSC(1403, 1.3699, 77.7505), new VSC(1228, 1.047, 62.2514), new VSC(1033, 0.2646, 131.4039), new VSC(992, 2.172, 65.22), new VSC(862, 5.055, 351.817), new VSC(744, 3.076, 35.164), new VSC(687, 2.499, 77.963), new VSC(647, 4.473, 70.328), new VSC(624, 0.863, 9.561), new VSC(604, 0.907, 984.6), new VSC(575, 3.231, 447.796), new VSC(562, 2.718, 462.023), new VSC(530, 5.917, 213.299), new VSC(528, 5.151, 2.969) ];\r\n GFX.g_R2UranusCoefficients = [ new VSC(22440, 0.69953, 74.7816), new VSC(4727, 1.699, 63.7359), new VSC(1682, 4.6483, 70.8494), new VSC(1650, 3.0966, 11.0457), new VSC(1434, 3.5212, 149.5632), new VSC(770, 0, 0), new VSC(500, 6.172, 76.266), new VSC(461, 0.767, 3.932), new VSC(390, 4.496, 56.622), new VSC(390, 5.527, 85.827), new VSC(292, 0.204, 52.69), new VSC(287, 3.534, 73.297), new VSC(273, 3.847, 138.517), new VSC(220, 1.964, 131.404), new VSC(216, 0.848, 77.963), new VSC(205, 3.248, 78.714), new VSC(149, 4.898, 127.472), new VSC(129, 2.081, 3.181) ];\r\n GFX.g_R3UranusCoefficients = [ new VSC(1164, 4.7345, 74.7816), new VSC(212, 3.343, 63.736), new VSC(196, 2.98, 70.849), new VSC(105, 0.958, 11.046), new VSC(73, 1, 149.56), new VSC(72, 0.03, 56.62), new VSC(55, 2.59, 3.93), new VSC(36, 5.65, 77.96), new VSC(34, 3.82, 76.27), new VSC(32, 3.6, 131.4) ];\r\n GFX.g_R4UranusCoefficients = [ new VSC(53, 3.01, 74.78), new VSC(10, 1.91, 56.62) ];\r\n GFX.g_L0VenusCoefficients = [ new VSC(317614667, 0, 0), new VSC(1353968, 5.5931332, 10213.2855462), new VSC(89892, 5.3065, 20426.57109), new VSC(5477, 4.4163, 7860.4194), new VSC(3456, 2.6996, 11790.6291), new VSC(2372, 2.9938, 3930.2097), new VSC(1664, 4.2502, 1577.3435), new VSC(1438, 4.1575, 9683.5946), new VSC(1317, 5.1867, 26.2983), new VSC(1201, 6.1536, 30639.8566), new VSC(769, 0.816, 9437.763), new VSC(761, 1.95, 529.691), new VSC(708, 1.065, 775.523), new VSC(585, 3.998, 191.448), new VSC(500, 4.123, 15720.839), new VSC(429, 3.586, 19367.189), new VSC(327, 5.677, 5507.553), new VSC(326, 4.591, 10404.734), new VSC(232, 3.163, 9153.904), new VSC(180, 4.653, 1109.379), new VSC(155, 5.57, 19651.048), new VSC(128, 4.226, 20.775), new VSC(128, 0.962, 5661.332), new VSC(106, 1.537, 801.821) ];\r\n GFX.g_L1VenusCoefficients = [ new VSC(1021352943053, 0, 0), new VSC(95708, 2.46424, 10213.28555), new VSC(14445, 0.51625, 20426.57109), new VSC(213, 1.795, 30639.857), new VSC(174, 2.655, 26.298), new VSC(152, 6.106, 1577.344), new VSC(82, 5.7, 191.45), new VSC(70, 2.68, 9437.76), new VSC(52, 3.6, 775.52), new VSC(38, 1.03, 529.69), new VSC(30, 1.25, 5507.55), new VSC(25, 6.11, 10404.73) ];\r\n GFX.g_L2VenusCoefficients = [ new VSC(54127, 0, 0), new VSC(3891, 0.3451, 10213.2855), new VSC(1338, 2.0201, 20426.5711), new VSC(24, 2.05, 26.3), new VSC(19, 3.54, 30639.86), new VSC(10, 3.97, 775.52), new VSC(7, 1.52, 1577.34), new VSC(6, 1, 191.45) ];\r\n GFX.g_L3VenusCoefficients = [ new VSC(136, 4.804, 10213.286), new VSC(78, 3.67, 20426.57), new VSC(26, 0, 0) ];\r\n GFX.g_L4VenusCoefficients = [ new VSC(114, 3.1416, 0), new VSC(3, 5.21, 20426.57), new VSC(2, 2.51, 10213.29) ];\r\n GFX.g_L5VenusCoefficients = [ new VSC(1, 3.14, 0) ];\r\n GFX.g_B0VenusCoefficients = [ new VSC(5923638, 0.2670278, 10213.2855462), new VSC(40108, 1.14737, 20426.57109), new VSC(32815, 3.14737, 0), new VSC(1011, 1.0895, 30639.8566), new VSC(149, 6.254, 18073.705), new VSC(138, 0.86, 1577.344), new VSC(130, 3.672, 9437.763), new VSC(120, 3.705, 2352.866), new VSC(108, 4.539, 22003.915) ];\r\n GFX.g_B1VenusCoefficients = [ new VSC(513348, 1.803643, 10213.285546), new VSC(4380, 3.3862, 20426.5711), new VSC(199, 0, 0), new VSC(197, 2.53, 30639.857) ];\r\n GFX.g_B2VenusCoefficients = [ new VSC(22378, 3.38509, 10213.28555), new VSC(282, 0, 0), new VSC(173, 5.256, 20426.571), new VSC(27, 3.87, 30639.86) ];\r\n GFX.g_B3VenusCoefficients = [ new VSC(647, 4.992, 10213.286), new VSC(20, 3.14, 0), new VSC(6, 0.77, 20426.57), new VSC(3, 5.44, 30639.86) ];\r\n GFX.g_B4VenusCoefficients = [ new VSC(14, 0.32, 10213.29) ];\r\n GFX.g_R0VenusCoefficients = [ new VSC(72334821, 0, 0), new VSC(489824, 4.021518, 10213.285546), new VSC(1658, 4.9021, 20426.5711), new VSC(1632, 2.8455, 7860.4194), new VSC(1378, 1.1285, 11790.6291), new VSC(498, 2.587, 9683.595), new VSC(374, 1.423, 3930.21), new VSC(264, 5.529, 9437.763), new VSC(237, 2.551, 15720.839), new VSC(222, 2.013, 19367.189), new VSC(126, 2.728, 1577.344), new VSC(119, 3.02, 10404.734) ];\r\n GFX.g_R1VenusCoefficients = [ new VSC(34551, 0.89199, 10213.28555), new VSC(234, 1.772, 20426.571), new VSC(234, 3.142, 0) ];\r\n GFX.g_R2VenusCoefficients = [ new VSC(1407, 5.0637, 10213.2855), new VSC(16, 5.47, 20426.57), new VSC(13, 0, 0) ];\r\n GFX.g_R3VenusCoefficients = [ new VSC(50, 3.22, 10213.29) ];\r\n GFX.g_R4VenusCoefficients = [ new VSC(1, 0.92, 10213.29) ];\r\n FastMath._pI4_A = 0.785398155450821;\r\n FastMath._pI4_B = 7.94662735614793E-09;\r\n FastMath._pI4_C = 3.06161699786838E-17;\r\n FastMath._m_1_PI = 0.318309886183791;\r\n HealpixTables.ctab = [ 0, 1, 256, 257, 2, 3, 258, 259, 512, 513, 768, 769, 514, 515, 770, 771, 4, 5, 260, 261, 6, 7, 262, 263, 516, 517, 772, 773, 518, 519, 774, 775, 1024, 1025, 1280, 1281, 1026, 1027, 1282, 1283, 1536, 1537, 1792, 1793, 1538, 1539, 1794, 1795, 1028, 1029, 1284, 1285, 1030, 1031, 1286, 1287, 1540, 1541, 1796, 1797, 1542, 1543, 1798, 1799, 8, 9, 264, 265, 10, 11, 266, 267, 520, 521, 776, 777, 522, 523, 778, 779, 12, 13, 268, 269, 14, 15, 270, 271, 524, 525, 780, 781, 526, 527, 782, 783, 1032, 1033, 1288, 1289, 1034, 1035, 1290, 1291, 1544, 1545, 1800, 1801, 1546, 1547, 1802, 1803, 1036, 1037, 1292, 1293, 1038, 1039, 1294, 1295, 1548, 1549, 1804, 1805, 1550, 1551, 1806, 1807, 2048, 2049, 2304, 2305, 2050, 2051, 2306, 2307, 2560, 2561, 2816, 2817, 2562, 2563, 2818, 2819, 2052, 2053, 2308, 2309, 2054, 2055, 2310, 2311, 2564, 2565, 2820, 2821, 2566, 2567, 2822, 2823, 3072, 3073, 3328, 3329, 3074, 3075, 3330, 3331, 3584, 3585, 3840, 3841, 3586, 3587, 3842, 3843, 3076, 3077, 3332, 3333, 3078, 3079, 3334, 3335, 3588, 3589, 3844, 3845, 3590, 3591, 3846, 3847, 2056, 2057, 2312, 2313, 2058, 2059, 2314, 2315, 2568, 2569, 2824, 2825, 2570, 2571, 2826, 2827, 2060, 2061, 2316, 2317, 2062, 2063, 2318, 2319, 2572, 2573, 2828, 2829, 2574, 2575, 2830, 2831, 3080, 3081, 3336, 3337, 3082, 3083, 3338, 3339, 3592, 3593, 3848, 3849, 3594, 3595, 3850, 3851, 3084, 3085, 3340, 3341, 3086, 3087, 3342, 3343, 3596, 3597, 3852, 3853, 3598, 3599, 3854, 3855 ];\r\n HealpixTables.utab = [ 0, 1, 4, 5, 16, 17, 20, 21, 64, 65, 68, 69, 80, 81, 84, 85, 256, 257, 260, 261, 272, 273, 276, 277, 320, 321, 324, 325, 336, 337, 340, 341, 1024, 1025, 1028, 1029, 1040, 1041, 1044, 1045, 1088, 1089, 1092, 1093, 1104, 1105, 1108, 1109, 1280, 1281, 1284, 1285, 1296, 1297, 1300, 1301, 1344, 1345, 1348, 1349, 1360, 1361, 1364, 1365, 4096, 4097, 4100, 4101, 4112, 4113, 4116, 4117, 4160, 4161, 4164, 4165, 4176, 4177, 4180, 4181, 4352, 4353, 4356, 4357, 4368, 4369, 4372, 4373, 4416, 4417, 4420, 4421, 4432, 4433, 4436, 4437, 5120, 5121, 5124, 5125, 5136, 5137, 5140, 5141, 5184, 5185, 5188, 5189, 5200, 5201, 5204, 5205, 5376, 5377, 5380, 5381, 5392, 5393, 5396, 5397, 5440, 5441, 5444, 5445, 5456, 5457, 5460, 5461, 16384, 16385, 16388, 16389, 16400, 16401, 16404, 16405, 16448, 16449, 16452, 16453, 16464, 16465, 16468, 16469, 16640, 16641, 16644, 16645, 16656, 16657, 16660, 16661, 16704, 16705, 16708, 16709, 16720, 16721, 16724, 16725, 17408, 17409, 17412, 17413, 17424, 17425, 17428, 17429, 17472, 17473, 17476, 17477, 17488, 17489, 17492, 17493, 17664, 17665, 17668, 17669, 17680, 17681, 17684, 17685, 17728, 17729, 17732, 17733, 17744, 17745, 17748, 17749, 20480, 20481, 20484, 20485, 20496, 20497, 20500, 20501, 20544, 20545, 20548, 20549, 20560, 20561, 20564, 20565, 20736, 20737, 20740, 20741, 20752, 20753, 20756, 20757, 20800, 20801, 20804, 20805, 20816, 20817, 20820, 20821, 21504, 21505, 21508, 21509, 21520, 21521, 21524, 21525, 21568, 21569, 21572, 21573, 21584, 21585, 21588, 21589, 21760, 21761, 21764, 21765, 21776, 21777, 21780, 21781, 21824, 21825, 21828, 21829, 21840, 21841, 21844, 21845 ];\r\n HealpixTables.jrll = [ 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 ];\r\n HealpixTables.jpll = [ 1, 3, 5, 7, 0, 2, 4, 6, 1, 3, 5, 7 ];\r\n HealpixTables.xoffset = [ -1, -1, 0, 1, 1, 1, 0, -1 ];\r\n HealpixTables.yoffset = [ 0, 1, 1, 1, 0, -1, -1, -1 ];\r\n URLHelpers.singleton = new URLHelpers();\r\n Annotation.pointList = null;\r\n Annotation.lineList = null;\r\n Annotation.triangleFanPointList = null;\r\n Annotation.triangleList = null;\r\n Annotation.batchDirty = true;\r\n AstroCalc._galDetails = new GMDS();\r\n AstroCalc._jupDetails = new EPD();\r\n AstroCalc._jupPhisical = new CAAPhysicalJupiterDetails();\r\n AstroCalc._jDateLast = 0;\r\n Constellations.RC = 0.017453292519943;\r\n Constellations._maxSeperation = 0.745;\r\n Constellations.containment = Constellations.create('Constellations', URLHelpers.singleton.engineAssetUrl('constellations.txt'), true, true, true);\r\n Constellations._constToDraw = '';\r\n Constellations.selectedSegment = null;\r\n Constellations._artFile = null;\r\n Constellations.artwork = null;\r\n Constellations.boundries = null;\r\n Constellations.pictureBlendStates = {};\r\n (function() {\r\n var url = URLHelpers.singleton.engineAssetUrl('ConstellationNamePositions_EN.txt');\r\n Constellations._webFileConstNames = new WebFile(url);\r\n Constellations._webFileConstNames.onStateChange = Constellations._loadNames;\r\n Constellations._webFileConstNames.send();\r\n })();\r\n ConstellationFilter.families = {};\r\n Vector3d.zero = new Vector3d();\r\n Matrix3d._s_identity = Matrix3d._createIdentity();\r\n FolderBrowser._downloading = false;\r\n FolderBrowser._imagesLoaded = false;\r\n FolderBrowser._imageLoadCount = 0;\r\n PointList.starTexture = null;\r\n SimpleLineShader.vertLoc = 0;\r\n SimpleLineShader.initialized = false;\r\n SimpleLineShader._prog = null;\r\n SimpleLineShader2D.vertLoc = 0;\r\n SimpleLineShader2D.initialized = false;\r\n SimpleLineShader2D._prog = null;\r\n OrbitLineShader.vertLoc = 0;\r\n OrbitLineShader.colorLoc = 0;\r\n OrbitLineShader.initialized = false;\r\n OrbitLineShader._prog = null;\r\n LineShaderNormalDates.vertLoc = 0;\r\n LineShaderNormalDates.colorLoc = 0;\r\n LineShaderNormalDates.timeLoc = 0;\r\n LineShaderNormalDates.initialized = false;\r\n LineShaderNormalDates._prog = null;\r\n TimeSeriesPointSpriteShader.vertLoc = 0;\r\n TimeSeriesPointSpriteShader.colorLoc = 0;\r\n TimeSeriesPointSpriteShader.pointSizeLoc = 0;\r\n TimeSeriesPointSpriteShader.timeLoc = 0;\r\n TimeSeriesPointSpriteShader.initialized = false;\r\n TimeSeriesPointSpriteShader._prog = null;\r\n KeplerPointSpriteShader.abcLoc = 0;\r\n KeplerPointSpriteShader.abcLoc1 = 0;\r\n KeplerPointSpriteShader.pointSizeLoc = 0;\r\n KeplerPointSpriteShader.colorLoc = 0;\r\n KeplerPointSpriteShader.weLoc = 0;\r\n KeplerPointSpriteShader.nTLoc = 0;\r\n KeplerPointSpriteShader.azLoc = 0;\r\n KeplerPointSpriteShader.orbitLoc = 0;\r\n KeplerPointSpriteShader.initialized = false;\r\n KeplerPointSpriteShader._prog = null;\r\n EllipseShader.angleLoc = 0;\r\n EllipseShader.initialized = false;\r\n EllipseShader._prog = null;\r\n ModelShader.vertLoc = 0;\r\n ModelShader.normalLoc = 0;\r\n ModelShader.textureLoc = 0;\r\n ModelShader.initialized = false;\r\n ModelShader._prog = null;\r\n ModelShader.sunPosition = Vector3d.create(-1, -1, -1);\r\n ModelShader.minLightingBrightness = 1;\r\n ModelShader.atmosphereColor = Color.fromArgb(0, 0, 0, 0);\r\n ModelShaderTan.vertLoc = 0;\r\n ModelShaderTan.normalLoc = 0;\r\n ModelShaderTan.textureLoc = 0;\r\n ModelShaderTan.initialized = false;\r\n ModelShaderTan._prog = null;\r\n ModelShaderTan.sunPosition = Vector3d.create(-1, -1, -1);\r\n ModelShaderTan.minLightingBrightness = 1;\r\n ModelShaderTan.atmosphereColor = Color.fromArgb(0, 0, 0, 0);\r\n TileShader.vertLoc = 0;\r\n TileShader.textureLoc = 0;\r\n TileShader.initialized = false;\r\n TileShader._prog = null;\r\n TileShader.sunPosition = Vector3d.create(-1, -1, -1);\r\n TileShader.minLightingBrightness = 1;\r\n TileShader.atmosphereColor = Color.fromArgb(0, 0, 0, 0);\r\n FitsShader.vertLoc = 0;\r\n FitsShader.textureLoc = 0;\r\n FitsShader.initialized = false;\r\n FitsShader._prog = null;\r\n FitsShader.blankValue = 0;\r\n FitsShader.bScale = 1;\r\n FitsShader.bZero = 0;\r\n FitsShader.min = 0;\r\n FitsShader.max = 0;\r\n FitsShader.transparentBlack = false;\r\n FitsShader.containsBlanks = false;\r\n FitsShader.scaleType = 0;\r\n ImageShader.vertLoc = 0;\r\n ImageShader.textureLoc = 0;\r\n ImageShader.initialized = false;\r\n ImageShader._prog = null;\r\n ImageShader2.vertLoc = 0;\r\n ImageShader2.textureLoc = 0;\r\n ImageShader2.initialized = false;\r\n ImageShader2._prog = null;\r\n SpriteShader.vertLoc = 0;\r\n SpriteShader.textureLoc = 0;\r\n SpriteShader.colorLoc = 0;\r\n SpriteShader.initialized = false;\r\n SpriteShader._prog = null;\r\n ShapeSpriteShader.vertLoc = 0;\r\n ShapeSpriteShader.textureLoc = 0;\r\n ShapeSpriteShader.colorLoc = 0;\r\n ShapeSpriteShader.initialized = false;\r\n ShapeSpriteShader._prog = null;\r\n TextShader.vertLoc = 0;\r\n TextShader.textureLoc = 0;\r\n TextShader.initialized = false;\r\n TextShader._prog = null;\r\n Texture.empty = null;\r\n Grids._galaxyImageIndexBuffer = null;\r\n Grids._galaxyImageTriangleCount = 0;\r\n Grids._milkyWayImage = null;\r\n Grids._starSprites = null;\r\n Grids._starCount = 0;\r\n Grids._starsDownloading = false;\r\n Grids._stars = null;\r\n Grids._hipparcosIndex = {};\r\n Grids._limitingMagnitude = 16;\r\n Grids._galaxyTextures = null;\r\n Grids._galaxyVertexCounts = null;\r\n Grids._largeSet = true;\r\n Grids._cosmosReady = false;\r\n Grids._cosmos = null;\r\n Grids._downloadingGalaxy = false;\r\n Grids._eclipticCount = 0;\r\n Grids._eclipticYear = 0;\r\n Grids._monthDays = [ 31, 28.2421, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\r\n Grids._monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];\r\n Grids._eclipticTextYear = 0;\r\n KeplerVertex._sine = 0;\r\n KeplerVertex._cose = 1;\r\n KeplerVertex._degrad = Math.PI / 180;\r\n KeplerVertex.baseDate = ss.truncate(SpaceTimeController.utcToJulian(ss.now()));\r\n ColorMapContainer.colorTextures = {};\r\n ColorMapContainer.viridis = ColorMapContainer.fromStringList(['#440154', '#440256', '#450457', '#450559', '#46075a', '#46085c', '#460a5d', '#460b5e', '#470d60', '#470e61', '#471063', '#471164', '#471365', '#481467', '#481668', '#481769', '#48186a', '#481a6c', '#481b6d', '#481c6e', '#481d6f', '#481f70', '#482071', '#482173', '#482374', '#482475', '#482576', '#482677', '#482878', '#482979', '#472a7a', '#472c7a', '#472d7b', '#472e7c', '#472f7d', '#46307e', '#46327e', '#46337f', '#463480', '#453581', '#453781', '#453882', '#443983', '#443a83', '#443b84', '#433d84', '#433e85', '#423f85', '#424086', '#424186', '#414287', '#414487', '#404588', '#404688', '#3f4788', '#3f4889', '#3e4989', '#3e4a89', '#3e4c8a', '#3d4d8a', '#3d4e8a', '#3c4f8a', '#3c508b', '#3b518b', '#3b528b', '#3a538b', '#3a548c', '#39558c', '#39568c', '#38588c', '#38598c', '#375a8c', '#375b8d', '#365c8d', '#365d8d', '#355e8d', '#355f8d', '#34608d', '#34618d', '#33628d', '#33638d', '#32648e', '#32658e', '#31668e', '#31678e', '#31688e', '#30698e', '#306a8e', '#2f6b8e', '#2f6c8e', '#2e6d8e', '#2e6e8e', '#2e6f8e', '#2d708e', '#2d718e', '#2c718e', '#2c728e', '#2c738e', '#2b748e', '#2b758e', '#2a768e', '#2a778e', '#2a788e', '#29798e', '#297a8e', '#297b8e', '#287c8e', '#287d8e', '#277e8e', '#277f8e', '#27808e', '#26818e', '#26828e', '#26828e', '#25838e', '#25848e', '#25858e', '#24868e', '#24878e', '#23888e', '#23898e', '#238a8d', '#228b8d', '#228c8d', '#228d8d', '#218e8d', '#218f8d', '#21908d', '#21918c', '#20928c', '#20928c', '#20938c', '#1f948c', '#1f958b', '#1f968b', '#1f978b', '#1f988b', '#1f998a', '#1f9a8a', '#1e9b8a', '#1e9c89', '#1e9d89', '#1f9e89', '#1f9f88', '#1fa088', '#1fa188', '#1fa187', '#1fa287', '#20a386', '#20a486', '#21a585', '#21a685', '#22a785', '#22a884', '#23a983', '#24aa83', '#25ab82', '#25ac82', '#26ad81', '#27ad81', '#28ae80', '#29af7f', '#2ab07f', '#2cb17e', '#2db27d', '#2eb37c', '#2fb47c', '#31b57b', '#32b67a', '#34b679', '#35b779', '#37b878', '#38b977', '#3aba76', '#3bbb75', '#3dbc74', '#3fbc73', '#40bd72', '#42be71', '#44bf70', '#46c06f', '#48c16e', '#4ac16d', '#4cc26c', '#4ec36b', '#50c46a', '#52c569', '#54c568', '#56c667', '#58c765', '#5ac864', '#5cc863', '#5ec962', '#60ca60', '#63cb5f', '#65cb5e', '#67cc5c', '#69cd5b', '#6ccd5a', '#6ece58', '#70cf57', '#73d056', '#75d054', '#77d153', '#7ad151', '#7cd250', '#7fd34e', '#81d34d', '#84d44b', '#86d549', '#89d548', '#8bd646', '#8ed645', '#90d743', '#93d741', '#95d840', '#98d83e', '#9bd93c', '#9dd93b', '#a0da39', '#a2da37', '#a5db36', '#a8db34', '#aadc32', '#addc30', '#b0dd2f', '#b2dd2d', '#b5de2b', '#b8de29', '#bade28', '#bddf26', '#c0df25', '#c2df23', '#c5e021', '#c8e020', '#cae11f', '#cde11d', '#d0e11c', '#d2e21b', '#d5e21a', '#d8e219', '#dae319', '#dde318', '#dfe318', '#e2e418', '#e5e419', '#e7e419', '#eae51a', '#ece51b', '#efe51c', '#f1e51d', '#f4e61e', '#f6e620', '#f8e621', '#fbe723', '#fde725']);\r\n ColorMapContainer.plasma = ColorMapContainer.fromStringList(['#0d0887', '#100788', '#130789', '#16078a', '#19068c', '#1b068d', '#1d068e', '#20068f', '#220690', '#240691', '#260591', '#280592', '#2a0593', '#2c0594', '#2e0595', '#2f0596', '#310597', '#330597', '#350498', '#370499', '#38049a', '#3a049a', '#3c049b', '#3e049c', '#3f049c', '#41049d', '#43039e', '#44039e', '#46039f', '#48039f', '#4903a0', '#4b03a1', '#4c02a1', '#4e02a2', '#5002a2', '#5102a3', '#5302a3', '#5502a4', '#5601a4', '#5801a4', '#5901a5', '#5b01a5', '#5c01a6', '#5e01a6', '#6001a6', '#6100a7', '#6300a7', '#6400a7', '#6600a7', '#6700a8', '#6900a8', '#6a00a8', '#6c00a8', '#6e00a8', '#6f00a8', '#7100a8', '#7201a8', '#7401a8', '#7501a8', '#7701a8', '#7801a8', '#7a02a8', '#7b02a8', '#7d03a8', '#7e03a8', '#8004a8', '#8104a7', '#8305a7', '#8405a7', '#8606a6', '#8707a6', '#8808a6', '#8a09a5', '#8b0aa5', '#8d0ba5', '#8e0ca4', '#8f0da4', '#910ea3', '#920fa3', '#9410a2', '#9511a1', '#9613a1', '#9814a0', '#99159f', '#9a169f', '#9c179e', '#9d189d', '#9e199d', '#a01a9c', '#a11b9b', '#a21d9a', '#a31e9a', '#a51f99', '#a62098', '#a72197', '#a82296', '#aa2395', '#ab2494', '#ac2694', '#ad2793', '#ae2892', '#b02991', '#b12a90', '#b22b8f', '#b32c8e', '#b42e8d', '#b52f8c', '#b6308b', '#b7318a', '#b83289', '#ba3388', '#bb3488', '#bc3587', '#bd3786', '#be3885', '#bf3984', '#c03a83', '#c13b82', '#c23c81', '#c33d80', '#c43e7f', '#c5407e', '#c6417d', '#c7427c', '#c8437b', '#c9447a', '#ca457a', '#cb4679', '#cc4778', '#cc4977', '#cd4a76', '#ce4b75', '#cf4c74', '#d04d73', '#d14e72', '#d24f71', '#d35171', '#d45270', '#d5536f', '#d5546e', '#d6556d', '#d7566c', '#d8576b', '#d9586a', '#da5a6a', '#da5b69', '#db5c68', '#dc5d67', '#dd5e66', '#de5f65', '#de6164', '#df6263', '#e06363', '#e16462', '#e26561', '#e26660', '#e3685f', '#e4695e', '#e56a5d', '#e56b5d', '#e66c5c', '#e76e5b', '#e76f5a', '#e87059', '#e97158', '#e97257', '#ea7457', '#eb7556', '#eb7655', '#ec7754', '#ed7953', '#ed7a52', '#ee7b51', '#ef7c51', '#ef7e50', '#f07f4f', '#f0804e', '#f1814d', '#f1834c', '#f2844b', '#f3854b', '#f3874a', '#f48849', '#f48948', '#f58b47', '#f58c46', '#f68d45', '#f68f44', '#f79044', '#f79143', '#f79342', '#f89441', '#f89540', '#f9973f', '#f9983e', '#f99a3e', '#fa9b3d', '#fa9c3c', '#fa9e3b', '#fb9f3a', '#fba139', '#fba238', '#fca338', '#fca537', '#fca636', '#fca835', '#fca934', '#fdab33', '#fdac33', '#fdae32', '#fdaf31', '#fdb130', '#fdb22f', '#fdb42f', '#fdb52e', '#feb72d', '#feb82c', '#feba2c', '#febb2b', '#febd2a', '#febe2a', '#fec029', '#fdc229', '#fdc328', '#fdc527', '#fdc627', '#fdc827', '#fdca26', '#fdcb26', '#fccd25', '#fcce25', '#fcd025', '#fcd225', '#fbd324', '#fbd524', '#fbd724', '#fad824', '#fada24', '#f9dc24', '#f9dd25', '#f8df25', '#f8e125', '#f7e225', '#f7e425', '#f6e626', '#f6e826', '#f5e926', '#f5eb27', '#f4ed27', '#f3ee27', '#f3f027', '#f2f227', '#f1f426', '#f1f525', '#f0f724', '#f0f921']);\r\n ColorMapContainer.inferno = ColorMapContainer.fromStringList(['#000004', '#010005', '#010106', '#010108', '#02010a', '#02020c', '#02020e', '#030210', '#040312', '#040314', '#050417', '#060419', '#07051b', '#08051d', '#09061f', '#0a0722', '#0b0724', '#0c0826', '#0d0829', '#0e092b', '#10092d', '#110a30', '#120a32', '#140b34', '#150b37', '#160b39', '#180c3c', '#190c3e', '#1b0c41', '#1c0c43', '#1e0c45', '#1f0c48', '#210c4a', '#230c4c', '#240c4f', '#260c51', '#280b53', '#290b55', '#2b0b57', '#2d0b59', '#2f0a5b', '#310a5c', '#320a5e', '#340a5f', '#360961', '#380962', '#390963', '#3b0964', '#3d0965', '#3e0966', '#400a67', '#420a68', '#440a68', '#450a69', '#470b6a', '#490b6a', '#4a0c6b', '#4c0c6b', '#4d0d6c', '#4f0d6c', '#510e6c', '#520e6d', '#540f6d', '#550f6d', '#57106e', '#59106e', '#5a116e', '#5c126e', '#5d126e', '#5f136e', '#61136e', '#62146e', '#64156e', '#65156e', '#67166e', '#69166e', '#6a176e', '#6c186e', '#6d186e', '#6f196e', '#71196e', '#721a6e', '#741a6e', '#751b6e', '#771c6d', '#781c6d', '#7a1d6d', '#7c1d6d', '#7d1e6d', '#7f1e6c', '#801f6c', '#82206c', '#84206b', '#85216b', '#87216b', '#88226a', '#8a226a', '#8c2369', '#8d2369', '#8f2469', '#902568', '#922568', '#932667', '#952667', '#972766', '#982766', '#9a2865', '#9b2964', '#9d2964', '#9f2a63', '#a02a63', '#a22b62', '#a32c61', '#a52c60', '#a62d60', '#a82e5f', '#a92e5e', '#ab2f5e', '#ad305d', '#ae305c', '#b0315b', '#b1325a', '#b3325a', '#b43359', '#b63458', '#b73557', '#b93556', '#ba3655', '#bc3754', '#bd3853', '#bf3952', '#c03a51', '#c13a50', '#c33b4f', '#c43c4e', '#c63d4d', '#c73e4c', '#c83f4b', '#ca404a', '#cb4149', '#cc4248', '#ce4347', '#cf4446', '#d04545', '#d24644', '#d34743', '#d44842', '#d54a41', '#d74b3f', '#d84c3e', '#d94d3d', '#da4e3c', '#db503b', '#dd513a', '#de5238', '#df5337', '#e05536', '#e15635', '#e25734', '#e35933', '#e45a31', '#e55c30', '#e65d2f', '#e75e2e', '#e8602d', '#e9612b', '#ea632a', '#eb6429', '#eb6628', '#ec6726', '#ed6925', '#ee6a24', '#ef6c23', '#ef6e21', '#f06f20', '#f1711f', '#f1731d', '#f2741c', '#f3761b', '#f37819', '#f47918', '#f57b17', '#f57d15', '#f67e14', '#f68013', '#f78212', '#f78410', '#f8850f', '#f8870e', '#f8890c', '#f98b0b', '#f98c0a', '#f98e09', '#fa9008', '#fa9207', '#fa9407', '#fb9606', '#fb9706', '#fb9906', '#fb9b06', '#fb9d07', '#fc9f07', '#fca108', '#fca309', '#fca50a', '#fca60c', '#fca80d', '#fcaa0f', '#fcac11', '#fcae12', '#fcb014', '#fcb216', '#fcb418', '#fbb61a', '#fbb81d', '#fbba1f', '#fbbc21', '#fbbe23', '#fac026', '#fac228', '#fac42a', '#fac62d', '#f9c72f', '#f9c932', '#f9cb35', '#f8cd37', '#f8cf3a', '#f7d13d', '#f7d340', '#f6d543', '#f6d746', '#f5d949', '#f5db4c', '#f4dd4f', '#f4df53', '#f4e156', '#f3e35a', '#f3e55d', '#f2e661', '#f2e865', '#f2ea69', '#f1ec6d', '#f1ed71', '#f1ef75', '#f1f179', '#f2f27d', '#f2f482', '#f3f586', '#f3f68a', '#f4f88e', '#f5f992', '#f6fa96', '#f8fb9a', '#f9fc9d', '#fafda1', '#fcffa4']);\r\n ColorMapContainer.magma = ColorMapContainer.fromStringList(['#000004', '#010005', '#010106', '#010108', '#020109', '#02020b', '#02020d', '#03030f', '#030312', '#040414', '#050416', '#060518', '#06051a', '#07061c', '#08071e', '#090720', '#0a0822', '#0b0924', '#0c0926', '#0d0a29', '#0e0b2b', '#100b2d', '#110c2f', '#120d31', '#130d34', '#140e36', '#150e38', '#160f3b', '#180f3d', '#19103f', '#1a1042', '#1c1044', '#1d1147', '#1e1149', '#20114b', '#21114e', '#221150', '#241253', '#251255', '#271258', '#29115a', '#2a115c', '#2c115f', '#2d1161', '#2f1163', '#311165', '#331067', '#341069', '#36106b', '#38106c', '#390f6e', '#3b0f70', '#3d0f71', '#3f0f72', '#400f74', '#420f75', '#440f76', '#451077', '#471078', '#491078', '#4a1079', '#4c117a', '#4e117b', '#4f127b', '#51127c', '#52137c', '#54137d', '#56147d', '#57157e', '#59157e', '#5a167e', '#5c167f', '#5d177f', '#5f187f', '#601880', '#621980', '#641a80', '#651a80', '#671b80', '#681c81', '#6a1c81', '#6b1d81', '#6d1d81', '#6e1e81', '#701f81', '#721f81', '#732081', '#752181', '#762181', '#782281', '#792282', '#7b2382', '#7c2382', '#7e2482', '#802582', '#812581', '#832681', '#842681', '#862781', '#882781', '#892881', '#8b2981', '#8c2981', '#8e2a81', '#902a81', '#912b81', '#932b80', '#942c80', '#962c80', '#982d80', '#992d80', '#9b2e7f', '#9c2e7f', '#9e2f7f', '#a02f7f', '#a1307e', '#a3307e', '#a5317e', '#a6317d', '#a8327d', '#aa337d', '#ab337c', '#ad347c', '#ae347b', '#b0357b', '#b2357b', '#b3367a', '#b5367a', '#b73779', '#b83779', '#ba3878', '#bc3978', '#bd3977', '#bf3a77', '#c03a76', '#c23b75', '#c43c75', '#c53c74', '#c73d73', '#c83e73', '#ca3e72', '#cc3f71', '#cd4071', '#cf4070', '#d0416f', '#d2426f', '#d3436e', '#d5446d', '#d6456c', '#d8456c', '#d9466b', '#db476a', '#dc4869', '#de4968', '#df4a68', '#e04c67', '#e24d66', '#e34e65', '#e44f64', '#e55064', '#e75263', '#e85362', '#e95462', '#ea5661', '#eb5760', '#ec5860', '#ed5a5f', '#ee5b5e', '#ef5d5e', '#f05f5e', '#f1605d', '#f2625d', '#f2645c', '#f3655c', '#f4675c', '#f4695c', '#f56b5c', '#f66c5c', '#f66e5c', '#f7705c', '#f7725c', '#f8745c', '#f8765c', '#f9785d', '#f9795d', '#f97b5d', '#fa7d5e', '#fa7f5e', '#fa815f', '#fb835f', '#fb8560', '#fb8761', '#fc8961', '#fc8a62', '#fc8c63', '#fc8e64', '#fc9065', '#fd9266', '#fd9467', '#fd9668', '#fd9869', '#fd9a6a', '#fd9b6b', '#fe9d6c', '#fe9f6d', '#fea16e', '#fea36f', '#fea571', '#fea772', '#fea973', '#feaa74', '#feac76', '#feae77', '#feb078', '#feb27a', '#feb47b', '#feb67c', '#feb77e', '#feb97f', '#febb81', '#febd82', '#febf84', '#fec185', '#fec287', '#fec488', '#fec68a', '#fec88c', '#feca8d', '#fecc8f', '#fecd90', '#fecf92', '#fed194', '#fed395', '#fed597', '#fed799', '#fed89a', '#fdda9c', '#fddc9e', '#fddea0', '#fde0a1', '#fde2a3', '#fde3a5', '#fde5a7', '#fde7a9', '#fde9aa', '#fdebac', '#fcecae', '#fceeb0', '#fcf0b2', '#fcf2b4', '#fcf4b6', '#fcf6b8', '#fcf7b9', '#fcf9bb', '#fcfbbd', '#fcfdbf']);\r\n ColorMapContainer.cividis = ColorMapContainer.fromStringList(['#00224e', '#00234f', '#002451', '#002553', '#002554', '#002656', '#002758', '#002859', '#00285b', '#00295d', '#002a5f', '#002a61', '#002b62', '#002c64', '#002c66', '#002d68', '#002e6a', '#002e6c', '#002f6d', '#00306f', '#003070', '#003170', '#003171', '#013271', '#053371', '#083370', '#0c3470', '#0f3570', '#123570', '#143670', '#163770', '#18376f', '#1a386f', '#1c396f', '#1e3a6f', '#203a6f', '#213b6e', '#233c6e', '#243c6e', '#263d6e', '#273e6e', '#293f6e', '#2a3f6d', '#2b406d', '#2d416d', '#2e416d', '#2f426d', '#31436d', '#32436d', '#33446d', '#34456c', '#35456c', '#36466c', '#38476c', '#39486c', '#3a486c', '#3b496c', '#3c4a6c', '#3d4a6c', '#3e4b6c', '#3f4c6c', '#404c6c', '#414d6c', '#424e6c', '#434e6c', '#444f6c', '#45506c', '#46516c', '#47516c', '#48526c', '#49536c', '#4a536c', '#4b546c', '#4c556c', '#4d556c', '#4e566c', '#4f576c', '#50576c', '#51586d', '#52596d', '#535a6d', '#545a6d', '#555b6d', '#555c6d', '#565c6d', '#575d6d', '#585e6d', '#595e6e', '#5a5f6e', '#5b606e', '#5c616e', '#5d616e', '#5e626e', '#5e636f', '#5f636f', '#60646f', '#61656f', '#62656f', '#636670', '#646770', '#656870', '#656870', '#666970', '#676a71', '#686a71', '#696b71', '#6a6c71', '#6b6d72', '#6c6d72', '#6c6e72', '#6d6f72', '#6e6f73', '#6f7073', '#707173', '#717274', '#727274', '#727374', '#737475', '#747475', '#757575', '#767676', '#777776', '#777777', '#787877', '#797977', '#7a7a78', '#7b7a78', '#7c7b78', '#7d7c78', '#7e7c78', '#7e7d78', '#7f7e78', '#807f78', '#817f78', '#828079', '#838179', '#848279', '#858279', '#868379', '#878478', '#888578', '#898578', '#8a8678', '#8b8778', '#8c8878', '#8d8878', '#8e8978', '#8f8a78', '#908b78', '#918b78', '#928c78', '#928d78', '#938e78', '#948e77', '#958f77', '#969077', '#979177', '#989277', '#999277', '#9a9376', '#9b9476', '#9c9576', '#9d9576', '#9e9676', '#9f9775', '#a09875', '#a19975', '#a29975', '#a39a74', '#a49b74', '#a59c74', '#a69c74', '#a79d73', '#a89e73', '#a99f73', '#aaa073', '#aba072', '#aca172', '#ada272', '#aea371', '#afa471', '#b0a571', '#b1a570', '#b3a670', '#b4a76f', '#b5a86f', '#b6a96f', '#b7a96e', '#b8aa6e', '#b9ab6d', '#baac6d', '#bbad6d', '#bcae6c', '#bdae6c', '#beaf6b', '#bfb06b', '#c0b16a', '#c1b26a', '#c2b369', '#c3b369', '#c4b468', '#c5b568', '#c6b667', '#c7b767', '#c8b866', '#c9b965', '#cbb965', '#ccba64', '#cdbb63', '#cebc63', '#cfbd62', '#d0be62', '#d1bf61', '#d2c060', '#d3c05f', '#d4c15f', '#d5c25e', '#d6c35d', '#d7c45c', '#d9c55c', '#dac65b', '#dbc75a', '#dcc859', '#ddc858', '#dec958', '#dfca57', '#e0cb56', '#e1cc55', '#e2cd54', '#e4ce53', '#e5cf52', '#e6d051', '#e7d150', '#e8d24f', '#e9d34e', '#ead34c', '#ebd44b', '#edd54a', '#eed649', '#efd748', '#f0d846', '#f1d945', '#f2da44', '#f3db42', '#f5dc41', '#f6dd3f', '#f7de3e', '#f8df3c', '#f9e03a', '#fbe138', '#fce236', '#fde334', '#fee434', '#fee535', '#fee636', '#fee838']);\r\n ColorMapContainer.greys = ColorMapContainer.fromStringList(['#ffffff', '#ffffff', '#fefefe', '#fefefe', '#fdfdfd', '#fdfdfd', '#fcfcfc', '#fcfcfc', '#fbfbfb', '#fbfbfb', '#fafafa', '#fafafa', '#f9f9f9', '#f9f9f9', '#f8f8f8', '#f8f8f8', '#f7f7f7', '#f7f7f7', '#f7f7f7', '#f6f6f6', '#f6f6f6', '#f5f5f5', '#f5f5f5', '#f4f4f4', '#f4f4f4', '#f3f3f3', '#f3f3f3', '#f2f2f2', '#f2f2f2', '#f1f1f1', '#f1f1f1', '#f0f0f0', '#f0f0f0', '#efefef', '#eeeeee', '#eeeeee', '#ededed', '#ececec', '#ececec', '#ebebeb', '#eaeaea', '#e9e9e9', '#e9e9e9', '#e8e8e8', '#e7e7e7', '#e7e7e7', '#e6e6e6', '#e5e5e5', '#e4e4e4', '#e4e4e4', '#e3e3e3', '#e2e2e2', '#e1e1e1', '#e1e1e1', '#e0e0e0', '#dfdfdf', '#dfdfdf', '#dedede', '#dddddd', '#dcdcdc', '#dcdcdc', '#dbdbdb', '#dadada', '#dadada', '#d9d9d9', '#d8d8d8', '#d7d7d7', '#d6d6d6', '#d5d5d5', '#d4d4d4', '#d4d4d4', '#d3d3d3', '#d2d2d2', '#d1d1d1', '#d0d0d0', '#cfcfcf', '#cecece', '#cdcdcd', '#cccccc', '#cccccc', '#cbcbcb', '#cacaca', '#c9c9c9', '#c8c8c8', '#c7c7c7', '#c6c6c6', '#c5c5c5', '#c5c5c5', '#c4c4c4', '#c3c3c3', '#c2c2c2', '#c1c1c1', '#c0c0c0', '#bfbfbf', '#bebebe', '#bebebe', '#bdbdbd', '#bbbbbb', '#bababa', '#b9b9b9', '#b8b8b8', '#b6b6b6', '#b5b5b5', '#b4b4b4', '#b3b3b3', '#b2b2b2', '#b0b0b0', '#afafaf', '#aeaeae', '#adadad', '#ababab', '#aaaaaa', '#a9a9a9', '#a8a8a8', '#a7a7a7', '#a5a5a5', '#a4a4a4', '#a3a3a3', '#a2a2a2', '#a0a0a0', '#9f9f9f', '#9e9e9e', '#9d9d9d', '#9c9c9c', '#9a9a9a', '#999999', '#989898', '#979797', '#959595', '#949494', '#939393', '#929292', '#919191', '#909090', '#8f8f8f', '#8e8e8e', '#8d8d8d', '#8c8c8c', '#8a8a8a', '#898989', '#888888', '#878787', '#868686', '#858585', '#848484', '#838383', '#828282', '#818181', '#7f7f7f', '#7e7e7e', '#7d7d7d', '#7c7c7c', '#7b7b7b', '#7a7a7a', '#797979', '#787878', '#777777', '#767676', '#757575', '#737373', '#727272', '#717171', '#707070', '#6f6f6f', '#6e6e6e', '#6d6d6d', '#6c6c6c', '#6b6b6b', '#6a6a6a', '#696969', '#686868', '#676767', '#666666', '#656565', '#646464', '#636363', '#626262', '#616161', '#606060', '#5f5f5f', '#5e5e5e', '#5d5d5d', '#5c5c5c', '#5b5b5b', '#5a5a5a', '#585858', '#575757', '#565656', '#555555', '#545454', '#535353', '#525252', '#515151', '#505050', '#4e4e4e', '#4d4d4d', '#4b4b4b', '#4a4a4a', '#484848', '#474747', '#464646', '#444444', '#434343', '#414141', '#404040', '#3f3f3f', '#3d3d3d', '#3c3c3c', '#3a3a3a', '#393939', '#383838', '#363636', '#353535', '#333333', '#323232', '#303030', '#2f2f2f', '#2e2e2e', '#2c2c2c', '#2b2b2b', '#292929', '#282828', '#272727', '#252525', '#242424', '#232323', '#222222', '#212121', '#1f1f1f', '#1e1e1e', '#1d1d1d', '#1c1c1c', '#1b1b1b', '#1a1a1a', '#181818', '#171717', '#161616', '#151515', '#141414', '#131313', '#111111', '#101010', '#0f0f0f', '#0e0e0e', '#0d0d0d', '#0c0c0c', '#0a0a0a', '#090909', '#080808', '#070707', '#060606', '#050505', '#030303', '#020202', '#010101', '#000000']);\r\n ColorMapContainer.gray = ColorMapContainer.fromStringList(['#000000', '#010101', '#020202', '#030303', '#040404', '#050505', '#060606', '#070707', '#080808', '#090909', '#0a0a0a', '#0b0b0b', '#0c0c0c', '#0d0d0d', '#0e0e0e', '#0f0f0f', '#101010', '#111111', '#121212', '#131313', '#141414', '#151515', '#161616', '#171717', '#181818', '#191919', '#1a1a1a', '#1b1b1b', '#1c1c1c', '#1d1d1d', '#1e1e1e', '#1f1f1f', '#202020', '#212121', '#222222', '#232323', '#242424', '#252525', '#262626', '#272727', '#282828', '#292929', '#2a2a2a', '#2b2b2b', '#2c2c2c', '#2d2d2d', '#2e2e2e', '#2f2f2f', '#303030', '#313131', '#323232', '#333333', '#343434', '#353535', '#363636', '#373737', '#383838', '#393939', '#3a3a3a', '#3b3b3b', '#3c3c3c', '#3d3d3d', '#3e3e3e', '#3f3f3f', '#404040', '#414141', '#424242', '#434343', '#444444', '#454545', '#464646', '#474747', '#484848', '#494949', '#4a4a4a', '#4b4b4b', '#4c4c4c', '#4d4d4d', '#4e4e4e', '#4f4f4f', '#505050', '#515151', '#525252', '#535353', '#545454', '#555555', '#565656', '#575757', '#585858', '#595959', '#5a5a5a', '#5b5b5b', '#5c5c5c', '#5d5d5d', '#5e5e5e', '#5f5f5f', '#606060', '#616161', '#626262', '#636363', '#646464', '#656565', '#666666', '#676767', '#686868', '#696969', '#6a6a6a', '#6b6b6b', '#6c6c6c', '#6d6d6d', '#6e6e6e', '#6f6f6f', '#707070', '#717171', '#727272', '#737373', '#747474', '#757575', '#767676', '#777777', '#787878', '#797979', '#7a7a7a', '#7b7b7b', '#7c7c7c', '#7d7d7d', '#7e7e7e', '#7f7f7f', '#808080', '#818181', '#828282', '#838383', '#848484', '#858585', '#868686', '#878787', '#888888', '#898989', '#8a8a8a', '#8b8b8b', '#8c8c8c', '#8d8d8d', '#8e8e8e', '#8f8f8f', '#909090', '#919191', '#929292', '#939393', '#949494', '#959595', '#969696', '#979797', '#989898', '#999999', '#9a9a9a', '#9b9b9b', '#9c9c9c', '#9d9d9d', '#9e9e9e', '#9f9f9f', '#a0a0a0', '#a1a1a1', '#a2a2a2', '#a3a3a3', '#a4a4a4', '#a5a5a5', '#a6a6a6', '#a7a7a7', '#a8a8a8', '#a9a9a9', '#aaaaaa', '#ababab', '#acacac', '#adadad', '#aeaeae', '#afafaf', '#b0b0b0', '#b1b1b1', '#b2b2b2', '#b3b3b3', '#b4b4b4', '#b5b5b5', '#b6b6b6', '#b7b7b7', '#b8b8b8', '#b9b9b9', '#bababa', '#bbbbbb', '#bcbcbc', '#bdbdbd', '#bebebe', '#bfbfbf', '#c0c0c0', '#c1c1c1', '#c2c2c2', '#c3c3c3', '#c4c4c4', '#c5c5c5', '#c6c6c6', '#c7c7c7', '#c8c8c8', '#c9c9c9', '#cacaca', '#cbcbcb', '#cccccc', '#cdcdcd', '#cecece', '#cfcfcf', '#d0d0d0', '#d1d1d1', '#d2d2d2', '#d3d3d3', '#d4d4d4', '#d5d5d5', '#d6d6d6', '#d7d7d7', '#d8d8d8', '#d9d9d9', '#dadada', '#dbdbdb', '#dcdcdc', '#dddddd', '#dedede', '#dfdfdf', '#e0e0e0', '#e1e1e1', '#e2e2e2', '#e3e3e3', '#e4e4e4', '#e5e5e5', '#e6e6e6', '#e7e7e7', '#e8e8e8', '#e9e9e9', '#eaeaea', '#ebebeb', '#ececec', '#ededed', '#eeeeee', '#efefef', '#f0f0f0', '#f1f1f1', '#f2f2f2', '#f3f3f3', '#f4f4f4', '#f5f5f5', '#f6f6f6', '#f7f7f7', '#f8f8f8', '#f9f9f9', '#fafafa', '#fbfbfb', '#fcfcfc', '#fdfdfd', '#fefefe', '#ffffff']);\r\n ColorMapContainer.purples = ColorMapContainer.fromStringList(['#fcfbfd', '#fcfbfd', '#fbfafc', '#fbfafc', '#faf9fc', '#faf9fc', '#faf8fb', '#f9f8fb', '#f9f7fb', '#f8f7fb', '#f8f7fa', '#f8f6fa', '#f7f6fa', '#f7f5fa', '#f6f5f9', '#f6f4f9', '#f5f4f9', '#f5f4f9', '#f5f3f8', '#f4f3f8', '#f4f2f8', '#f3f2f8', '#f3f1f7', '#f3f1f7', '#f2f0f7', '#f2f0f7', '#f1f0f6', '#f1eff6', '#f1eff6', '#f0eef6', '#f0eef5', '#efedf5', '#efedf5', '#eeecf5', '#eeecf4', '#edebf4', '#ecebf4', '#eceaf3', '#ebe9f3', '#eae9f3', '#eae8f2', '#e9e8f2', '#e8e7f2', '#e8e6f2', '#e7e6f1', '#e6e5f1', '#e6e5f1', '#e5e4f0', '#e4e3f0', '#e4e3f0', '#e3e2ef', '#e2e2ef', '#e2e1ef', '#e1e0ee', '#e0e0ee', '#e0dfee', '#dfdfed', '#dedeed', '#dedded', '#ddddec', '#dcdcec', '#dcdcec', '#dbdbec', '#dadaeb', '#dadaeb', '#d9d9ea', '#d8d8ea', '#d7d7e9', '#d6d6e9', '#d5d5e9', '#d4d4e8', '#d3d3e8', '#d2d2e7', '#d1d2e7', '#d0d1e6', '#cfd0e6', '#cecfe5', '#cecee5', '#cdcde4', '#cccce4', '#cbcbe3', '#cacae3', '#c9c9e2', '#c8c8e2', '#c7c8e1', '#c6c7e1', '#c5c6e1', '#c4c5e0', '#c3c4e0', '#c2c3df', '#c1c2df', '#c0c1de', '#bfc0de', '#bebfdd', '#bebedd', '#bdbedc', '#bcbddc', '#bbbbdb', '#babadb', '#b9b9da', '#b8b8d9', '#b7b7d9', '#b6b6d8', '#b5b5d7', '#b4b4d7', '#b3b3d6', '#b2b2d5', '#b1b1d5', '#b0afd4', '#afaed4', '#aeadd3', '#aeacd2', '#adabd2', '#acaad1', '#aba9d0', '#aaa8d0', '#a9a7cf', '#a8a6cf', '#a7a4ce', '#a6a3cd', '#a5a2cd', '#a4a1cc', '#a3a0cb', '#a29fcb', '#a19eca', '#a09dca', '#9f9cc9', '#9e9bc8', '#9e9ac8', '#9d99c7', '#9c98c7', '#9b97c6', '#9a96c6', '#9995c6', '#9894c5', '#9793c5', '#9692c4', '#9591c4', '#9490c3', '#9390c3', '#928fc3', '#918ec2', '#908dc2', '#8f8cc1', '#8e8bc1', '#8e8ac0', '#8d89c0', '#8c88bf', '#8b87bf', '#8a86bf', '#8986be', '#8885be', '#8784bd', '#8683bd', '#8582bc', '#8481bc', '#8380bb', '#827fbb', '#817ebb', '#807dba', '#807cba', '#7f7bb9', '#7e79b8', '#7d78b7', '#7d77b7', '#7c75b6', '#7b74b5', '#7b72b4', '#7a71b4', '#7970b3', '#796eb2', '#786db2', '#776cb1', '#776ab0', '#7669af', '#7567af', '#7566ae', '#7465ad', '#7363ad', '#7262ac', '#7261ab', '#715faa', '#705eaa', '#705ca9', '#6f5ba8', '#6e5aa8', '#6e58a7', '#6d57a6', '#6c55a5', '#6c54a5', '#6b53a4', '#6a51a3', '#6950a3', '#694fa2', '#684da1', '#674ca1', '#674ba0', '#66499f', '#65489f', '#65479e', '#64459e', '#63449d', '#63439c', '#62429c', '#61409b', '#613f9a', '#603e9a', '#5f3c99', '#5e3b98', '#5e3a98', '#5d3897', '#5c3797', '#5c3696', '#5b3495', '#5a3395', '#5a3294', '#593093', '#582f93', '#582e92', '#572c92', '#562b91', '#552a90', '#552890', '#54278f', '#53268f', '#53258e', '#52238d', '#51228d', '#51218c', '#50208c', '#4f1f8b', '#4f1d8b', '#4e1c8a', '#4d1b89', '#4d1a89', '#4c1888', '#4c1788', '#4b1687', '#4a1587', '#4a1486', '#491285', '#481185', '#481084', '#470f84', '#460d83', '#460c83', '#450b82', '#440a82', '#440981', '#430780', '#420680', '#42057f', '#41047f', '#40027e', '#40017e', '#3f007d']);\r\n ColorMapContainer.blues = ColorMapContainer.fromStringList(['#f7fbff', '#f6faff', '#f5fafe', '#f5f9fe', '#f4f9fe', '#f3f8fe', '#f2f8fd', '#f2f7fd', '#f1f7fd', '#f0f6fd', '#eff6fc', '#eef5fc', '#eef5fc', '#edf4fc', '#ecf4fb', '#ebf3fb', '#eaf3fb', '#eaf2fb', '#e9f2fa', '#e8f1fa', '#e7f1fa', '#e7f0fa', '#e6f0f9', '#e5eff9', '#e4eff9', '#e3eef9', '#e3eef8', '#e2edf8', '#e1edf8', '#e0ecf8', '#dfecf7', '#dfebf7', '#deebf7', '#ddeaf7', '#dceaf6', '#dce9f6', '#dbe9f6', '#dae8f6', '#d9e8f5', '#d9e7f5', '#d8e7f5', '#d7e6f5', '#d6e6f4', '#d6e5f4', '#d5e5f4', '#d4e4f4', '#d3e4f3', '#d3e3f3', '#d2e3f3', '#d1e2f3', '#d0e2f2', '#d0e1f2', '#cfe1f2', '#cee0f2', '#cde0f1', '#cddff1', '#ccdff1', '#cbdef1', '#cadef0', '#caddf0', '#c9ddf0', '#c8dcf0', '#c7dcef', '#c7dbef', '#c6dbef', '#c4daee', '#c3daee', '#c2d9ee', '#c1d9ed', '#bfd8ed', '#bed8ec', '#bdd7ec', '#bcd7eb', '#bad6eb', '#b9d6ea', '#b8d5ea', '#b7d4ea', '#b5d4e9', '#b4d3e9', '#b3d3e8', '#b2d2e8', '#b0d2e7', '#afd1e7', '#aed1e7', '#add0e6', '#abd0e6', '#aacfe5', '#a9cfe5', '#a8cee4', '#a6cee4', '#a5cde3', '#a4cce3', '#a3cce3', '#a1cbe2', '#a0cbe2', '#9fcae1', '#9dcae1', '#9cc9e1', '#9ac8e0', '#99c7e0', '#97c6df', '#95c5df', '#94c4df', '#92c4de', '#91c3de', '#8fc2de', '#8dc1dd', '#8cc0dd', '#8abfdd', '#89bedc', '#87bddc', '#85bcdc', '#84bcdb', '#82bbdb', '#81badb', '#7fb9da', '#7db8da', '#7cb7da', '#7ab6d9', '#79b5d9', '#77b5d9', '#75b4d8', '#74b3d8', '#72b2d8', '#71b1d7', '#6fb0d7', '#6dafd7', '#6caed6', '#6aaed6', '#69add5', '#68acd5', '#66abd4', '#65aad4', '#64a9d3', '#63a8d3', '#61a7d2', '#60a7d2', '#5fa6d1', '#5da5d1', '#5ca4d0', '#5ba3d0', '#5aa2cf', '#58a1cf', '#57a0ce', '#56a0ce', '#549fcd', '#539ecd', '#529dcc', '#519ccc', '#4f9bcb', '#4e9acb', '#4d99ca', '#4b98ca', '#4a98c9', '#4997c9', '#4896c8', '#4695c8', '#4594c7', '#4493c7', '#4292c6', '#4191c6', '#4090c5', '#3f8fc5', '#3e8ec4', '#3d8dc4', '#3c8cc3', '#3b8bc2', '#3a8ac2', '#3989c1', '#3888c1', '#3787c0', '#3686c0', '#3585bf', '#3484bf', '#3383be', '#3282be', '#3181bd', '#3080bd', '#2f7fbc', '#2e7ebc', '#2d7dbb', '#2c7cba', '#2b7bba', '#2a7ab9', '#2979b9', '#2777b8', '#2676b8', '#2575b7', '#2474b7', '#2373b6', '#2272b6', '#2171b5', '#2070b4', '#206fb4', '#1f6eb3', '#1e6db2', '#1d6cb1', '#1c6bb0', '#1c6ab0', '#1b69af', '#1a68ae', '#1967ad', '#1966ad', '#1865ac', '#1764ab', '#1663aa', '#1562a9', '#1561a9', '#1460a8', '#135fa7', '#125ea6', '#125da6', '#115ca5', '#105ba4', '#0f5aa3', '#0e59a2', '#0e58a2', '#0d57a1', '#0c56a0', '#0b559f', '#0a549e', '#0a539e', '#09529d', '#08519c', '#08509b', '#084f99', '#084e98', '#084d96', '#084c95', '#084b93', '#084a91', '#084990', '#08488e', '#08478d', '#08468b', '#08458a', '#084488', '#084387', '#084285', '#084184', '#084082', '#083e81', '#083d7f', '#083c7d', '#083b7c', '#083a7a', '#083979', '#083877', '#083776', '#083674', '#083573', '#083471', '#083370', '#08326e', '#08316d', '#08306b']);\r\n ColorMapContainer.greens = ColorMapContainer.fromStringList(['#f7fcf5', '#f6fcf4', '#f6fcf4', '#f5fbf3', '#f5fbf2', '#f4fbf2', '#f4fbf1', '#f3faf0', '#f2faf0', '#f2faef', '#f1faee', '#f1faee', '#f0f9ed', '#f0f9ec', '#eff9ec', '#eff9eb', '#eef8ea', '#edf8ea', '#edf8e9', '#ecf8e8', '#ecf8e8', '#ebf7e7', '#ebf7e7', '#eaf7e6', '#e9f7e5', '#e9f7e5', '#e8f6e4', '#e8f6e3', '#e7f6e3', '#e7f6e2', '#e6f5e1', '#e5f5e1', '#e5f5e0', '#e4f5df', '#e3f4de', '#e2f4dd', '#e1f3dc', '#e0f3db', '#dff3da', '#def2d9', '#ddf2d8', '#dcf2d7', '#dbf1d6', '#dbf1d5', '#daf0d4', '#d9f0d3', '#d8f0d2', '#d7efd1', '#d6efd0', '#d5efcf', '#d4eece', '#d3eecd', '#d2edcc', '#d1edcb', '#d0edca', '#cfecc9', '#ceecc8', '#cdecc7', '#ccebc6', '#cbebc5', '#cbeac4', '#caeac3', '#c9eac2', '#c8e9c1', '#c7e9c0', '#c6e8bf', '#c4e8bd', '#c3e7bc', '#c2e7bb', '#c1e6ba', '#c0e6b9', '#bee5b8', '#bde5b6', '#bce4b5', '#bbe4b4', '#bae3b3', '#b8e3b2', '#b7e2b1', '#b6e2af', '#b5e1ae', '#b4e1ad', '#b2e0ac', '#b1e0ab', '#b0dfaa', '#afdfa8', '#aedea7', '#acdea6', '#abdda5', '#aadda4', '#a9dca3', '#a8dca2', '#a7dba0', '#a5db9f', '#a4da9e', '#a3da9d', '#a2d99c', '#a0d99b', '#9fd899', '#9ed798', '#9cd797', '#9bd696', '#99d595', '#98d594', '#97d492', '#95d391', '#94d390', '#92d28f', '#91d28e', '#90d18d', '#8ed08b', '#8dd08a', '#8bcf89', '#8ace88', '#88ce87', '#87cd86', '#86cc85', '#84cc83', '#83cb82', '#81ca81', '#80ca80', '#7fc97f', '#7dc87e', '#7cc87c', '#7ac77b', '#79c67a', '#78c679', '#76c578', '#75c477', '#73c476', '#72c375', '#70c274', '#6ec173', '#6dc072', '#6bc072', '#6abf71', '#68be70', '#66bd6f', '#65bd6f', '#63bc6e', '#62bb6d', '#60ba6c', '#5eb96b', '#5db96b', '#5bb86a', '#5ab769', '#58b668', '#56b567', '#55b567', '#53b466', '#52b365', '#50b264', '#4eb264', '#4db163', '#4bb062', '#4aaf61', '#48ae60', '#46ae60', '#45ad5f', '#43ac5e', '#42ab5d', '#40aa5d', '#3fa95c', '#3fa85b', '#3ea75a', '#3da65a', '#3ca559', '#3ba458', '#3aa357', '#39a257', '#38a156', '#37a055', '#369f54', '#359e53', '#349d53', '#339c52', '#329b51', '#319a50', '#309950', '#2f984f', '#2f974e', '#2e964d', '#2d954d', '#2c944c', '#2b934b', '#2a924a', '#29914a', '#289049', '#278f48', '#268e47', '#258d47', '#248c46', '#238b45', '#228a44', '#218944', '#208843', '#1f8742', '#1e8741', '#1d8640', '#1c8540', '#1a843f', '#19833e', '#18823d', '#17813d', '#16803c', '#157f3b', '#147e3a', '#137d39', '#127c39', '#117b38', '#107a37', '#0e7936', '#0d7836', '#0c7735', '#0b7734', '#0a7633', '#097532', '#087432', '#077331', '#067230', '#05712f', '#03702e', '#026f2e', '#016e2d', '#006d2c', '#006c2c', '#006b2b', '#00692a', '#00682a', '#006729', '#006529', '#006428', '#006328', '#006227', '#006027', '#005f26', '#005e26', '#005c25', '#005b25', '#005a24', '#005924', '#005723', '#005622', '#005522', '#005321', '#005221', '#005120', '#005020', '#004e1f', '#004d1f', '#004c1e', '#004a1e', '#00491d', '#00481d', '#00471c', '#00451c', '#00441b']);\r\n ColorMapContainer.oranges = ColorMapContainer.fromStringList(['#fff5eb', '#fff5ea', '#fff4e9', '#fff4e8', '#fff3e7', '#fff3e6', '#fff2e6', '#fff2e5', '#fff1e4', '#fff1e3', '#fff0e2', '#fff0e1', '#ffefe0', '#ffefdf', '#ffeede', '#ffeedd', '#feeddc', '#feeddc', '#feeddb', '#feecda', '#feecd9', '#feebd8', '#feebd7', '#feead6', '#feead5', '#fee9d4', '#fee9d3', '#fee8d2', '#fee8d2', '#fee7d1', '#fee7d0', '#fee6cf', '#fee6ce', '#fee5cc', '#fee5cb', '#fee4ca', '#fee3c8', '#fee2c7', '#fee2c6', '#fee1c4', '#fee0c3', '#fee0c1', '#fedfc0', '#fedebf', '#fedebd', '#feddbc', '#fedcbb', '#fedcb9', '#fddbb8', '#fddab6', '#fdd9b5', '#fdd9b4', '#fdd8b2', '#fdd7b1', '#fdd7af', '#fdd6ae', '#fdd5ad', '#fdd5ab', '#fdd4aa', '#fdd3a9', '#fdd3a7', '#fdd2a6', '#fdd1a4', '#fdd1a3', '#fdd0a2', '#fdcfa0', '#fdce9e', '#fdcd9c', '#fdcb9b', '#fdca99', '#fdc997', '#fdc895', '#fdc794', '#fdc692', '#fdc590', '#fdc48f', '#fdc38d', '#fdc28b', '#fdc189', '#fdc088', '#fdbf86', '#fdbe84', '#fdbd83', '#fdbb81', '#fdba7f', '#fdb97d', '#fdb87c', '#fdb77a', '#fdb678', '#fdb576', '#fdb475', '#fdb373', '#fdb271', '#fdb170', '#fdb06e', '#fdaf6c', '#fdae6a', '#fdad69', '#fdac67', '#fdab66', '#fda965', '#fda863', '#fda762', '#fda660', '#fda55f', '#fda45d', '#fda35c', '#fda25a', '#fda159', '#fda057', '#fd9f56', '#fd9e54', '#fd9d53', '#fd9c51', '#fd9b50', '#fd9a4e', '#fd994d', '#fd984b', '#fd974a', '#fd9649', '#fd9547', '#fd9446', '#fd9344', '#fd9243', '#fd9141', '#fd9040', '#fd8f3e', '#fd8e3d', '#fd8c3b', '#fc8b3a', '#fc8a39', '#fc8937', '#fb8836', '#fb8735', '#fb8634', '#fa8532', '#fa8331', '#f98230', '#f9812e', '#f9802d', '#f87f2c', '#f87e2b', '#f87d29', '#f77b28', '#f77a27', '#f67925', '#f67824', '#f67723', '#f57622', '#f57520', '#f5741f', '#f4721e', '#f4711c', '#f3701b', '#f36f1a', '#f36e19', '#f26d17', '#f26c16', '#f26b15', '#f16913', '#f16813', '#f06712', '#ef6612', '#ee6511', '#ee6410', '#ed6310', '#ec620f', '#eb610f', '#eb600e', '#ea5f0e', '#e95e0d', '#e85d0c', '#e75c0c', '#e75b0b', '#e65a0b', '#e5590a', '#e4580a', '#e45709', '#e35608', '#e25508', '#e15407', '#e15307', '#e05206', '#df5106', '#de5005', '#de4e05', '#dd4d04', '#dc4c03', '#db4b03', '#db4a02', '#da4902', '#d94801', '#d84801', '#d64701', '#d54601', '#d34601', '#d14501', '#d04501', '#ce4401', '#cd4401', '#cb4302', '#c94202', '#c84202', '#c64102', '#c54102', '#c34002', '#c14002', '#c03f02', '#be3f02', '#bd3e02', '#bb3d02', '#b93d02', '#b83c02', '#b63c02', '#b53b02', '#b33b02', '#b13a03', '#b03903', '#ae3903', '#ad3803', '#ab3803', '#a93703', '#a83703', '#a63603', '#a53603', '#a43503', '#a23503', '#a13403', '#a03403', '#9f3303', '#9e3303', '#9c3203', '#9b3203', '#9a3103', '#993103', '#973003', '#963003', '#952f03', '#942f03', '#932f03', '#912e04', '#902e04', '#8f2d04', '#8e2d04', '#8c2c04', '#8b2c04', '#8a2b04', '#892b04', '#882a04', '#862a04', '#852904', '#842904', '#832804', '#812804', '#802704', '#7f2704']);\r\n ColorMapContainer.reds = ColorMapContainer.fromStringList(['#fff5f0', '#fff4ef', '#fff4ee', '#fff3ed', '#fff2ec', '#fff2eb', '#fff1ea', '#fff0e9', '#fff0e8', '#ffefe8', '#ffeee7', '#ffeee6', '#ffede5', '#ffece4', '#ffece3', '#ffebe2', '#feeae1', '#feeae0', '#fee9df', '#fee8de', '#fee8dd', '#fee7dc', '#fee7db', '#fee6da', '#fee5d9', '#fee5d8', '#fee4d8', '#fee3d7', '#fee3d6', '#fee2d5', '#fee1d4', '#fee1d3', '#fee0d2', '#fedfd0', '#fedecf', '#fedccd', '#fedbcc', '#fedaca', '#fed9c9', '#fed8c7', '#fdd7c6', '#fdd5c4', '#fdd4c2', '#fdd3c1', '#fdd2bf', '#fdd1be', '#fdd0bc', '#fdcebb', '#fdcdb9', '#fdccb8', '#fdcbb6', '#fdcab5', '#fdc9b3', '#fdc7b2', '#fdc6b0', '#fdc5ae', '#fcc4ad', '#fcc3ab', '#fcc2aa', '#fcc1a8', '#fcbfa7', '#fcbea5', '#fcbda4', '#fcbca2', '#fcbba1', '#fcb99f', '#fcb89e', '#fcb79c', '#fcb69b', '#fcb499', '#fcb398', '#fcb296', '#fcb095', '#fcaf93', '#fcae92', '#fcad90', '#fcab8f', '#fcaa8d', '#fca98c', '#fca78b', '#fca689', '#fca588', '#fca486', '#fca285', '#fca183', '#fca082', '#fc9e80', '#fc9d7f', '#fc9c7d', '#fc9b7c', '#fc997a', '#fc9879', '#fc9777', '#fc9576', '#fc9474', '#fc9373', '#fc9272', '#fc9070', '#fc8f6f', '#fc8e6e', '#fc8d6d', '#fc8b6b', '#fc8a6a', '#fc8969', '#fc8767', '#fc8666', '#fc8565', '#fc8464', '#fc8262', '#fc8161', '#fc8060', '#fc7f5f', '#fb7d5d', '#fb7c5c', '#fb7b5b', '#fb7a5a', '#fb7858', '#fb7757', '#fb7656', '#fb7555', '#fb7353', '#fb7252', '#fb7151', '#fb7050', '#fb6e4e', '#fb6d4d', '#fb6c4c', '#fb6b4b', '#fb694a', '#fa6849', '#fa6648', '#fa6547', '#f96346', '#f96245', '#f96044', '#f85f43', '#f85d42', '#f75c41', '#f75b40', '#f7593f', '#f6583e', '#f6563d', '#f6553c', '#f5533b', '#f5523a', '#f4503a', '#f44f39', '#f44d38', '#f34c37', '#f34a36', '#f34935', '#f24734', '#f24633', '#f14432', '#f14331', '#f14130', '#f0402f', '#f03f2e', '#f03d2d', '#ef3c2c', '#ee3a2c', '#ed392b', '#ec382b', '#eb372a', '#ea362a', '#e93529', '#e83429', '#e63328', '#e53228', '#e43027', '#e32f27', '#e22e27', '#e12d26', '#e02c26', '#de2b25', '#dd2a25', '#dc2924', '#db2824', '#da2723', '#d92523', '#d82422', '#d72322', '#d52221', '#d42121', '#d32020', '#d21f20', '#d11e1f', '#d01d1f', '#cf1c1f', '#ce1a1e', '#cc191e', '#cb181d', '#ca181d', '#c9181d', '#c8171c', '#c7171c', '#c5171c', '#c4161c', '#c3161b', '#c2161b', '#c1161b', '#bf151b', '#be151a', '#bd151a', '#bc141a', '#bb141a', '#b91419', '#b81419', '#b71319', '#b61319', '#b51318', '#b31218', '#b21218', '#b11218', '#b01217', '#af1117', '#ad1117', '#ac1117', '#ab1016', '#aa1016', '#a91016', '#a81016', '#a60f15', '#a50f15', '#a30f15', '#a10e15', '#9f0e14', '#9d0d14', '#9c0d14', '#9a0c14', '#980c13', '#960b13', '#940b13', '#920a13', '#900a12', '#8e0912', '#8c0912', '#8a0812', '#880811', '#860811', '#840711', '#820711', '#800610', '#7e0610', '#7c0510', '#7a0510', '#79040f', '#77040f', '#75030f', '#73030f', '#71020e', '#6f020e', '#6d010e', '#6b010e', '#69000d', '#67000d']);\r\n ColorMapContainer.rdYlBu = ColorMapContainer.fromStringList(['#a50026', '#a70226', '#a90426', '#ab0626', '#ad0826', '#af0926', '#b10b26', '#b30d26', '#b50f26', '#b71126', '#b91326', '#bb1526', '#bd1726', '#be1827', '#c01a27', '#c21c27', '#c41e27', '#c62027', '#c82227', '#ca2427', '#cc2627', '#ce2827', '#d02927', '#d22b27', '#d42d27', '#d62f27', '#d83128', '#d93429', '#da362a', '#db382b', '#dc3b2c', '#dd3d2d', '#de402e', '#e0422f', '#e14430', '#e24731', '#e34933', '#e44c34', '#e54e35', '#e65036', '#e75337', '#e95538', '#ea5739', '#eb5a3a', '#ec5c3b', '#ed5f3c', '#ee613e', '#ef633f', '#f16640', '#f26841', '#f36b42', '#f46d43', '#f47044', '#f57245', '#f57547', '#f57748', '#f67a49', '#f67c4a', '#f67f4b', '#f7814c', '#f7844e', '#f8864f', '#f88950', '#f88c51', '#f98e52', '#f99153', '#f99355', '#fa9656', '#fa9857', '#fa9b58', '#fb9d59', '#fba05b', '#fba35c', '#fca55d', '#fca85e', '#fcaa5f', '#fdad60', '#fdaf62', '#fdb164', '#fdb366', '#fdb567', '#fdb769', '#fdb96b', '#fdbb6d', '#fdbd6f', '#fdbf71', '#fdc173', '#fdc374', '#fdc576', '#fdc778', '#fec87a', '#feca7c', '#fecc7e', '#fece7f', '#fed081', '#fed283', '#fed485', '#fed687', '#fed889', '#feda8a', '#fedc8c', '#fede8e', '#fee090', '#fee192', '#fee294', '#fee496', '#fee597', '#fee699', '#fee79b', '#fee99d', '#feea9f', '#feeba1', '#feeca2', '#feeda4', '#feefa6', '#fff0a8', '#fff1aa', '#fff2ac', '#fff3ad', '#fff5af', '#fff6b1', '#fff7b3', '#fff8b5', '#fffab7', '#fffbb9', '#fffcba', '#fffdbc', '#fffebe', '#feffc0', '#fdfec2', '#fcfec5', '#fbfdc7', '#fafdc9', '#f8fccb', '#f7fcce', '#f6fbd0', '#f5fbd2', '#f3fbd4', '#f2fad6', '#f1fad9', '#f0f9db', '#eff9dd', '#edf8df', '#ecf8e2', '#ebf7e4', '#eaf7e6', '#e9f6e8', '#e7f6eb', '#e6f5ed', '#e5f5ef', '#e4f4f1', '#e2f4f4', '#e1f3f6', '#e0f3f8', '#def2f7', '#dcf1f7', '#daf0f6', '#d8eff6', '#d6eef5', '#d4edf4', '#d1ecf4', '#cfebf3', '#cdeaf3', '#cbe9f2', '#c9e8f2', '#c7e7f1', '#c5e6f0', '#c3e5f0', '#c1e4ef', '#bfe3ef', '#bde2ee', '#bbe1ed', '#b9e0ed', '#b6dfec', '#b4deec', '#b2ddeb', '#b0dcea', '#aedbea', '#acdae9', '#aad8e9', '#a8d6e8', '#a6d5e7', '#a3d3e6', '#a1d1e5', '#9fd0e4', '#9dcee3', '#9bcce2', '#99cae1', '#97c9e0', '#94c7df', '#92c5de', '#90c3dd', '#8ec2dc', '#8cc0db', '#8abeda', '#87bdd9', '#85bbd9', '#83b9d8', '#81b7d7', '#7fb6d6', '#7db4d5', '#7ab2d4', '#78b0d3', '#76afd2', '#74add1', '#72abd0', '#70a9cf', '#6ea6ce', '#6da4cc', '#6ba2cb', '#69a0ca', '#679ec9', '#659bc8', '#6399c7', '#6297c6', '#6095c4', '#5e93c3', '#5c90c2', '#5a8ec1', '#588cc0', '#578abf', '#5588be', '#5385bd', '#5183bb', '#4f81ba', '#4d7fb9', '#4b7db8', '#4a7ab7', '#4878b6', '#4676b5', '#4574b3', '#4471b2', '#436fb1', '#426cb0', '#416aaf', '#4167ad', '#4065ac', '#3f62ab', '#3e60aa', '#3e5ea8', '#3d5ba7', '#3c59a6', '#3b56a5', '#3a54a4', '#3a51a2', '#394fa1', '#384ca0', '#374a9f', '#36479e', '#36459c', '#35429b', '#34409a', '#333d99', '#333b97', '#323896', '#313695']);\r\n LayerManager._version = 0;\r\n LayerManager._frameWizardDialog = new FrameWizard();\r\n LayerManager._dataVizWizardDialog = new DataVizWizard();\r\n LayerManager._referenceFramePropsDialog = new ReferenceFrameProps();\r\n LayerManager._greatCircleDialog = new GreatCircleDialog();\r\n LayerManager._tourLayers = false;\r\n LayerManager._layerMaps = {};\r\n LayerManager._layerMapsTours = {};\r\n LayerManager._allMaps = {};\r\n LayerManager._allMapsTours = {};\r\n LayerManager._currentMap = 'Earth';\r\n LayerManager._layerList = {};\r\n LayerManager._layerListTours = {};\r\n LayerManager._moonfile = '';\r\n LayerManager._selectedLayer = null;\r\n LayerManager._lastMenuClick = new Vector2d();\r\n LayerManager.getMoonFile(URLHelpers.singleton.engineAssetUrl('moons.txt'));\r\n LayerUI._type = null;\r\n Object3d.maX_VERTICES = 8000;\r\n Object3d.maX_POLYGONS = 8000;\r\n Orbit._orbitalToWwt = Matrix3d.create(1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1);\r\n Orbit._initBegun = false;\r\n PushPin._pinTextureCache = {};\r\n PushPin._pins = Planets.loadPlanetTexture(URLHelpers.singleton.engineAssetUrl('pins.png'));\r\n (function() {\r\n var canvas = document.getElementById('canvas');\r\n })();\r\n MinorPlanets.mpcList = [];\r\n MinorPlanets._initBegun = false;\r\n MinorPlanets._mpcBlendStates = new Array(7);\r\n MinorPlanets.starTexture = null;\r\n MinorPlanets._mpcVertexBuffer = null;\r\n MinorPlanets._mpcCount = 0;\r\n Planets.highPercision = true;\r\n Planets.showActualSize = Settings.get_active().get_actualPlanetScale();\r\n Planets.RC = (Math.PI / 180);\r\n Planets._jNow = 0;\r\n Planets._planetAngles = [ new BodyAngles(286.13, 63.87, 84.176, 14.1844), new BodyAngles(281.0097, 61.4143, 329.548, 6.1385025), new BodyAngles(272.76, 67.16, 160.2, -1.4813688), new BodyAngles(317.68143, 52.8865, 176.63, 350.89198226), new BodyAngles(268.056595, 64.495303, 284.95, 870.536), new BodyAngles(40.589, 83.537, 38.9, 810.7939024), new BodyAngles(257.311, -15.175, 203.81, 501.1600928), new BodyAngles(299.36, 43.46, 253.18, 536.3128492), new BodyAngles(132.993, -6.163, 302.695, 56.3625225), new BodyAngles(269.9949, 66.5392, 38.3213, 13.17635815), new BodyAngles(268.05, 64.5, 200.39, 203.4889538), new BodyAngles(268.08, 64.51, 36.022, 101.3747235), new BodyAngles(268.2, 64.57, 44.064, 50.3176081), new BodyAngles(268.72, 64.83, 259.51, 21.5710715), new BodyAngles(0, 0, 0, 0), new BodyAngles(0, 0, 0, 0), new BodyAngles(0, 0, 0, 0), new BodyAngles(0, 0, 0, 0), new BodyAngles(0, 0, 0, 0), new BodyAngles(0, 90, 190.147, 360.9856235) ];\r\n Planets._lastPlanetCenterID = -2;\r\n Planets._orbitalSampleRate = 256;\r\n Planets._obliquity = 23.5 * Planets.RC;\r\n Planets._drawOrder = {};\r\n Planets.earthMatrix = new Matrix3d();\r\n Planets.earthMatrixInv = new Matrix3d();\r\n Planets._lastUpdate = new Date();\r\n Planets._ringsTriangleLists = new Array(2);\r\n Planets._ringImage = null;\r\n Planets._triangleCountRings = 192 + 1 * 2;\r\n Planets._ringsVertexBuffer = null;\r\n Planets._planetSprite = new Sprite2d();\r\n Planets._planetPoints = null;\r\n RenderContext.useGl = false;\r\n RenderContext.useGlVersion2 = false;\r\n RenderContext.back = 0;\r\n RenderTriangle.width = 1024;\r\n RenderTriangle.height = 768;\r\n RenderTriangle._contractionInPixels = -0.5;\r\n RenderTriangle.trianglesRendered = 0;\r\n RenderTriangle.trianglesCulled = 0;\r\n RenderTriangle.renderingOn = true;\r\n RenderTriangle._factor = 1;\r\n RenderTriangle.cullInside = true;\r\n RenderTriangle._hw = 0;\r\n RenderTriangle._qw = 0;\r\n RenderTriangle._hh = 0;\r\n RenderTriangle._qh = 0;\r\n Settings._active = null;\r\n Settings.tourSettings = null;\r\n GlyphCache._caches = {};\r\n GlyphCache._allGlyphs = '';\r\n SpaceTimeController.last = ss.now();\r\n SpaceTimeController._offset = 0;\r\n SpaceTimeController._now = ss.now();\r\n SpaceTimeController._syncToClock = true;\r\n SpaceTimeController._timeRate = 1;\r\n SpaceTimeController._altitude = 0;\r\n Galaxy._eTypeBuckets = [ -3, -0.186, -0.168, -0.158, -0.15, -0.143, -0.137, -0.13, -0.123, -0.115, -0.104, -0.089, -0.068, -0.042, -0.011, 0.024, 0.064, 0.111, 0.169, 0.252, 3 ];\r\n Tile.currentRenderGeneration = 0;\r\n Tile.tileTargetX = -1;\r\n Tile.tileTargetY = -1;\r\n Tile.tileTargetLevel = -1;\r\n Tile.tilesInView = 0;\r\n Tile.trianglesRendered = 0;\r\n Tile.tilesTouched = 0;\r\n Tile.frustumList = null;\r\n Tile.prepDevice = null;\r\n Tile.uvMultiple = 256;\r\n Tile.callCount = 0;\r\n Tile.useAccomidation = true;\r\n Tile.demEnabled = false;\r\n Tile.maxLevel = 20;\r\n Tile.meshComplexity = 50;\r\n Tile.imageQuality = 50;\r\n Tile.lastDeepestLevel = 0;\r\n Tile.deepestLevel = 0;\r\n Tile.RC = (3.1415927 / 180);\r\n TileCache._queue = {};\r\n TileCache._tiles = {};\r\n TileCache.openThreads = 8;\r\n TileCache.readyToRenderCount = 0;\r\n TileCache.maxTileCacheSize = 800;\r\n TileCache.maxReadyToRenderSize = 200;\r\n TileCache.accessID = 0;\r\n TileCache._maxTotalToPurge = 0;\r\n Overlay.defaultAnchor = 1;\r\n Overlay.clipboardFormat = 'WorldWideTelescope.Overlay';\r\n Overlay.nextId = 11231;\r\n Overlay.RC = 3.1415927 / 180;\r\n Selection._points = new Array(9 * 3 * 2);\r\n TourEditor.capturing = false;\r\n TourEditor.currentEditor = null;\r\n TourPlayer._playing = false;\r\n TourPlayer._switchedToFullScreen = false;\r\n TourPlayer.noRestoreUIOnStop = false;\r\n TourStop.clipboardFormat = 'WorldWideTelescope.Slide';\r\n Undo._undoStack = new ss.Stack();\r\n Undo._redoStack = new ss.Stack();\r\n UiTools.kilometersPerAu = 149598000;\r\n UiTools.auPerParsec = 206264.806;\r\n UiTools.auPerLightYear = 63239.6717;\r\n UiTools.ssmUnitConversion = 370;\r\n BinaryReader.id = 1;\r\n VizLayer.earthRadius = 6371000;\r\n WWTControl.imageSets = [];\r\n WWTControl.exploreRoot = new Folder();\r\n WWTControl.imageSetName = '';\r\n WWTControl.showDataLayers = false;\r\n WWTControl._renderNeeded = false;\r\n WWTControl.constellationsFigures = null;\r\n WWTControl.constellationsBoundries = null;\r\n WWTControl.solarSystemObjectsNames = [ 'Sun', 'Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Moon', 'Io', 'Europa', 'Ganymede', 'Callisto', 'IoShadow', 'EuropaShadow', 'GanymedeShadow', 'CallistoShadow', 'SunEclipsed', 'Earth', 'Custom', 'Undefined' ];\r\n WWTControl.singleton = new WWTControl();\r\n WWTControl.singleton.renderContext = new RenderContext();\r\n SpaceTimeController.last = ss.now();\r\n SpaceTimeController.updateClock();\r\n Coordinates.RC = (3.1415927 / 180);\r\n Coordinates.RCRA = (3.1415927 / 12);\r\n Coordinates.radius = 1;\r\n Coordinates._rotationMatrix = null;\r\n Fxyf._halfpi$1 = Math.PI / 2;\r\n Fxyf._inv_halfpi$1 = 2 / Math.PI;\r\n Fxyf._twothird$1 = 2 / 3;\r\n HealpixTile._galacticMatrix$1 = Matrix3d.create(-0.0548755604024359, -0.483835015526738, -0.873437090247923, 0, -0.867666148981161, 0.455983776232537, -0.198076373464674, 0, 0.494109427943568, 0.746982244476371, -0.444829629919504, 0, 0, 0, 0, 1);\r\n FitsImage.naN = 0 / 0;\r\n Object3dLayer._translateUI$1 = null;\r\n Object3dLayer._translateUILines$1 = null;\r\n Object3dLayer._scaleUI$1 = null;\r\n Object3dLayer._rotateUi$1 = null;\r\n SpreadSheetLayer._circleTexture$1 = null;\r\n TimeSeriesLayer._circleTexture$1 = null;\r\n VoTableLayer._circleTexture$1 = null;\r\n ToastTile.slashIndexBuffer = new Array(64);\r\n ToastTile.backSlashIndexBuffer = new Array(64);\r\n ToastTile.rootIndexBuffer = new Array(4);\r\n ISSLayer.issGuid = Guid.fromString('00000001-0002-0003-0405-060708090a0b');\r\n ISSLayer._loading$2 = false;\r\n ISSLayer._issmodel$2 = null;\r\n ISSLayer._doc$2 = null;\r\n\n return $exports;\n});\n\n// (umd_footer.js intentionally incomplete -- it is concatenated to form index.js)\n return _exports_object;\n}));","module.exports = __webpack_public_path__ + \"img/logo_github.a4679030.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Embed.vue?vue&type=style&index=0&id=55607661&prod&lang=less&\"","module.exports = __webpack_public_path__ + \"img/logo_aas.02e8a389.png\";","// Copyright 2020-2021 the .NET Foundation\n// Licensed under the MIT License\n//\n// Based types used in the WWT WebGL engine.\n//\n// Try to keep everything alphabetized.\n\n/* eslint-disable @typescript-eslint/camelcase */\n\nexport enum AltTypes {\n depth = 0,\n altitude = 1,\n distance = 2,\n seaLevel = 3,\n terrain = 4\n}\n\nexport enum AltUnits {\n meters = 1,\n feet = 2,\n inches = 3,\n miles = 4,\n kilometers = 5,\n astronomicalUnits = 6,\n lightYears = 7,\n parsecs = 8,\n megaParsecs = 9,\n custom = 10\n}\n\nexport enum BandPass {\n gamma = 0,\n xRay = 1,\n ultraviolet = 2,\n visible = 3,\n hydrogenAlpha = 4,\n IR = 4,\n microwave = 5,\n radio = 6,\n visibleNight = 6\n}\n\nexport enum Classification {\n star = 1,\n supernova = 2,\n blackHole = 4,\n neutronStar = 8,\n doubleStar = 16,\n multipleStars = 32,\n asterism = 64,\n constellation = 128,\n openCluster = 256,\n globularCluster = 512,\n nebulousCluster = 1024,\n nebula = 2048,\n emissionNebula = 4096,\n planetaryNebula = 8192,\n reflectionNebula = 16384,\n darkNebula = 32768,\n giantMolecularCloud = 65536,\n supernovaRemnant = 131072,\n interstellarDust = 262144,\n quasar = 524288,\n galaxy = 1048576,\n spiralGalaxy = 2097152,\n irregularGalaxy = 4194304,\n ellipticalGalaxy = 8388608,\n knot = 16777216,\n plateDefect = 33554432,\n clusterOfGalaxies = 67108864,\n otherNGC = 134217728,\n unidentified = 268435456,\n solarSystem = 536870912,\n unfiltered = 1073741823,\n stellar = 63,\n stellarGroupings = 2032,\n nebulae = 523264,\n galactic = 133693440,\n other = 436207616\n}\n\nexport enum CoordinatesType {\n spherical = 0,\n rectangular = 1,\n orbital = 2,\n}\n\nexport enum DataTypes {\n byteT = 0,\n int16T = 1,\n int32T = 2,\n floatT = 3,\n doubleT = 4,\n none = 5,\n}\n\nexport enum FadeType {\n fadeIn = 1,\n fadeOut = 2,\n both = 3,\n none = 4,\n}\n\nexport enum FolderGroup {\n explorer = 0,\n tour = 1,\n search = 2,\n constellation = 3,\n view = 4,\n goTo = 5,\n community = 6,\n context = 7,\n voTable = 8,\n imageStack = 9\n}\n\nexport enum FolderRefreshType {\n interval = 0,\n conditionalGet = 1,\n viewChange = 2,\n}\n\nexport enum FolderType {\n earth = 0,\n planet = 1,\n sky = 2,\n panorama = 3,\n}\n\nexport enum ImageSetType {\n earth = 0,\n planet = 1,\n sky = 2,\n panorama = 3,\n solarSystem = 4,\n sandbox = 5\n}\n\nexport enum MarkerScales {\n screen = 0,\n world = 1,\n}\n\nexport enum PlotTypes {\n gaussian = 0,\n point = 1,\n circle = 2,\n square = 3,\n pushPin = 4,\n custom = 5,\n}\n\nexport enum PointScaleTypes {\n linear = 0,\n power = 1,\n log = 2,\n constant = 3,\n stellarMagnitude = 4,\n}\n\nexport enum ProjectionType {\n mercator = 0,\n equirectangular = 1,\n tangent = 2,\n tan = 2,\n toast = 3,\n spherical = 4,\n skyImage = 5,\n plotted = 6\n}\n\nexport enum RAUnits {\n hours = 0,\n degrees = 1,\n}\n\nexport enum ReferenceFrames {\n sky = 0,\n ecliptic = 1,\n galactic = 2,\n sun = 3,\n mercury = 4,\n venus = 5,\n earth = 6,\n mars = 7,\n jupiter = 8,\n saturn = 9,\n uranus = 10,\n neptune = 11,\n pluto = 12,\n moon = 13,\n io = 14,\n europa = 15,\n ganymede = 16,\n callisto = 17,\n custom = 18,\n identity = 19,\n sandbox = 20\n}\n\nexport enum ReferenceFrameTypes {\n fixedSherical = 0,\n orbital = 1,\n trajectory = 2,\n synodic = 3\n}\n\nexport enum ScaleTypes {\n linear = 0,\n log = 1,\n power = 2,\n squareRoot = 3,\n histogramEqualization = 4,\n}\n\nexport enum SolarSystemObjects {\n sun = 0,\n mercury = 1,\n venus = 2,\n mars = 3,\n jupiter = 4,\n saturn = 5,\n uranus = 6,\n neptune = 7,\n pluto = 8,\n moon = 9,\n io = 10,\n europa = 11,\n ganymede = 12,\n callisto = 13,\n ioShadow = 14,\n europaShadow = 15,\n ganymedeShadow = 16,\n callistoShadow = 17,\n sunEclipsed = 18,\n earth = 19,\n custom = 20,\n undefined = 65536\n}\n\n/** Items implementing IThumbnail in WWT can be exposed in its folder explorer\n * interface, or equivalently can be contained in its Folder objects.\n */\nexport interface Thumbnail {\n get_name(): string;\n get_thumbnailUrl(): string;\n set_thumbnailUrl(url: string): string;\n get_isImage(): boolean;\n get_isTour(): boolean;\n get_isFolder(): boolean;\n get_isCloudCommunityItem(): boolean;\n get_readOnly(): boolean;\n get_children(): Thumbnail[] | null;\n}\n\n\n// TypeScript-ification of the engine settings\n\n/** Settings for the WWT engine that don't depend on types defined in\n * the engine itself. */\nexport type BaseEngineSetting =\n [\"actualPlanetScale\", boolean] |\n [\"constellations\", boolean] |\n [\"constellationBoundryColor\", string] |\n [\"constellationFigureColor\", string] |\n [\"constellationsEnabled\", string] |\n [\"constellationSelectionColor\", string] |\n [\"crosshairsColor\", string] |\n [\"earthCutawayView\", boolean] |\n //[\"fovCamera\", number] | // skipping because not settable\n //[\"fovEyepiece\", number] | // skipping because not settable\n //[\"fovTelescope\", number] | // skipping because not settable\n [\"localHorizonMode\", boolean] |\n [\"galacticMode\", boolean] |\n [\"locationAltitude\", number] |\n [\"locationLat\", number] |\n [\"locationLng\", number] |\n [\"milkyWayModel\", boolean] |\n [\"showAltAzGrid\", boolean] |\n [\"showAltAzGridText\", boolean] |\n //[\"showClouds\", boolean] | // skipping because not settable\n [\"showConstellations\", boolean] |\n [\"showConstellationBoundries\", boolean] |\n [\"showConstellationFigures\", boolean] |\n [\"showConstellationLabels\", boolean] |\n [\"showConstellationPictures\", boolean] |\n [\"showConstellationSelection\", boolean] |\n [\"showCrosshairs\", boolean] |\n [\"showEarthSky\", boolean] |\n [\"showEcliptic\", boolean] |\n [\"showEclipticGrid\", boolean] |\n [\"showEclipticGridText\", boolean] |\n [\"showEclipticOverviewText\", boolean] |\n [\"showElevationModel\", boolean] |\n [\"showEquatorialGridText\", boolean] |\n //[\"showFieldOfView\", boolean] | // skipping because not settable\n [\"showGalacticGrid\", boolean] |\n [\"showGalacticGridText\", boolean] |\n [\"showGrid\", boolean] |\n [\"showHorizon\", boolean] |\n //[\"showHorizonPanorama\", boolean] | // skipping because not settable\n [\"showISSModel\", boolean] |\n //[\"showMoonsAsPointSource\", boolean] | // skipping because not settable\n [\"showPrecessionChart\", boolean] |\n [\"showSkyGrids\", boolean] |\n [\"showSkyNode\", boolean] |\n [\"showSkyOverlays\", boolean] |\n [\"showSkyOverlaysIn3d\", boolean] |\n [\"showSolarSystem\", boolean] |\n [\"smoothPan\", boolean] |\n [\"solarSystemCMB\", boolean] |\n [\"solarSystemCosmos\", boolean] |\n [\"solarSystemMilkyWay\", boolean] |\n [\"solarSystemOrbits\", boolean] |\n [\"solarSystemOverlays\", boolean] |\n [\"solarSystemLighting\", boolean] |\n [\"solarSystemMultiRes\", boolean] |\n [\"solarSystemMinorPlanets\", boolean] |\n [\"solarSystemMinorOrbits\", boolean] |\n [\"solarSystemPlanets\", boolean] |\n [\"solarSystemStars\", boolean] |\n [\"minorPlanetsFilter\", number] |\n [\"planetOrbitsFilter\", number] |\n [\"solarSystemScale\", number];\n\n// I'm not aware of any smart TypeScripty way to automate the construction of this table :-(\nconst baseEngineSettingTypeInfo = {\n \"actualPlanetScale/boolean\": true,\n \"constellations/boolean\": true,\n \"constellationBoundryColor/string\": true,\n \"constellationFigureColor/string\": true,\n \"constellationsEnabled/string\": true,\n \"constellationSelectionColor/string\": true,\n \"crosshairsColor/string\": true,\n \"earthCutawayView/boolean\": true,\n //\"fovCamera/number\": true, // skipping because not settable\n //\"fovEyepiece/number\": true, // skipping because not settable\n //\"fovTelescope/number\": true, // skipping because not settable\n \"localHorizonMode/boolean\": true,\n \"galacticMode/boolean\": true,\n \"locationAltitude/number\": true,\n \"locationLat/number\": true,\n \"locationLng/number\": true,\n \"milkyWayModel/boolean\": true,\n \"showAltAzGrid/boolean\": true,\n \"showAltAzGridText/boolean\": true,\n //\"showClouds/boolean\": true, // skipping because not settable\n \"showConstellations/boolean\": true,\n \"showConstellationBoundries/boolean\": true,\n \"showConstellationFigures/boolean\": true,\n \"showConstellationLabels/boolean\": true,\n \"showConstellationPictures/boolean\": true,\n \"showConstellationSelection/boolean\": true,\n \"showCrosshairs/boolean\": true,\n \"showEarthSky/boolean\": true,\n \"showEcliptic/boolean\": true,\n \"showEclipticGrid/boolean\": true,\n \"showEclipticGridText/boolean\": true,\n \"showEclipticOverviewText/boolean\": true,\n \"showElevationModel/boolean\": true,\n \"showEquatorialGridText/boolean\": true,\n //\"showFieldOfView/boolean\": true, // skipping because not settable\n \"showGalacticGrid/boolean\": true,\n \"showGalacticGridText/boolean\": true,\n \"showGrid/boolean\": true,\n \"showHorizon/boolean\": true,\n //\"showHorizonPanorama/boolean\": true, // skipping because not settable\n \"showISSModel/boolean\": true,\n //\"showMoonsAsPointSource/boolean\": true, // skipping because not settable\n \"showPrecessionChart/boolean\": true,\n \"showSkyGrids/boolean\": true,\n \"showSkyNode/boolean\": true,\n \"showSkyOverlays/boolean\": true,\n \"showSkyOverlaysIn3d/boolean\": true,\n \"showSolarSystem/boolean\": true,\n \"smoothPan/boolean\": true,\n \"solarSystemCMB/boolean\": true,\n \"solarSystemCosmos/boolean\": true,\n \"solarSystemMilkyWay/boolean\": true,\n \"solarSystemOrbits/boolean\": true,\n \"solarSystemOverlays/boolean\": true,\n \"solarSystemLighting/boolean\": true,\n \"solarSystemMultiRes/boolean\": true,\n \"solarSystemMinorPlanets/boolean\": true,\n \"solarSystemMinorOrbits/boolean\": true,\n \"solarSystemPlanets/boolean\": true,\n \"solarSystemStars/boolean\": true,\n \"minorPlanetsFilter/number\": true,\n \"planetOrbitsFilter/number\": true,\n \"solarSystemScale/number\": true,\n}\n\n/** Type guard function for BaseEngineSetting. */\nexport function isBaseEngineSetting(obj: [string, any]): obj is BaseEngineSetting { // eslint-disable-line @typescript-eslint/no-explicit-any\n const key = obj[0] + \"/\" + typeof obj[1];\n return (key in baseEngineSettingTypeInfo);\n}\n\n/** Placeholder for the engine ConstellationFilter type. */\nexport interface ConstellationFilterInterface {\n clone(): ConstellationFilterInterface;\n}\n\n/** Core settings for the WWT rendering engine.\n *\n * This (almost) corresponds to the `ISettings` interface, which is implemented\n * by the `Settings` and `TourStop` classes.\n*/\nexport interface SettingsInterface {\n get_actualPlanetScale(): boolean;\n get_constellationArtFilter(): ConstellationFilterInterface;\n get_constellationBoundariesFilter(): ConstellationFilterInterface;\n get_constellationFiguresFilter(): ConstellationFilterInterface;\n get_constellationNamesFilter(): ConstellationFilterInterface;\n get_constellationsEnabled(): string;\n get_earthCutawayView(): boolean;\n //get_fovCamera(): number; // skipping because not settable\n //get_fovEyepiece(): number; // skipping because not settable\n //get_fovTelescope(): number; // skipping because not settable\n get_galacticMode(): boolean;\n get_localHorizonMode(): boolean;\n get_locationAltitude(): number;\n get_locationLat(): number;\n get_locationLng(): number;\n get_milkyWayModel(): boolean;\n get_minorPlanetsFilter(): number;\n get_planetOrbitsFilter(): number;\n get_showAltAzGrid(): boolean;\n get_showAltAzGridText(): boolean;\n //get_showClouds(): boolean; // skipping because not settable\n get_showConstellationBoundries(): boolean;\n get_showConstellationFigures(): boolean;\n get_showConstellationLabels(): boolean;\n get_showConstellationPictures(): boolean;\n get_showConstellationSelection(): boolean;\n get_showConstellations(): boolean;\n get_showEarthSky(): boolean;\n get_showEcliptic(): boolean;\n get_showEclipticGrid(): boolean;\n get_showEclipticGridText(): boolean;\n get_showEclipticOverviewText(): boolean;\n get_showElevationModel(): boolean;\n get_showEquatorialGridText(): boolean;\n //get_showFieldOfView(): boolean; // skipping because not settable\n get_showGalacticGrid(): boolean;\n get_showGalacticGridText(): boolean;\n get_showGrid(): boolean;\n get_showHorizon(): boolean;\n //get_showHorizonPanorama(): boolean; // skipping because not settable\n get_showISSModel(): boolean;\n //get_showMoonsAsPointSource(): boolean; // skipping because not settable\n get_showPrecessionChart(): boolean;\n get_showSkyGrids(): boolean;\n get_showSkyNode(): boolean;\n get_showSkyOverlays(): boolean;\n get_showSkyOverlaysIn3d(): boolean;\n get_showSolarSystem(): boolean;\n get_solarSystemCMB(): boolean;\n get_solarSystemCosmos(): boolean;\n get_solarSystemLighting(): boolean;\n get_solarSystemMilkyWay(): boolean;\n get_solarSystemMinorOrbits(): boolean;\n get_solarSystemMinorPlanets(): boolean;\n get_solarSystemMultiRes(): boolean;\n get_solarSystemOrbits(): boolean;\n get_solarSystemOverlays(): boolean;\n get_solarSystemPlanets(): boolean;\n get_solarSystemScale(): number;\n get_solarSystemStars(): boolean;\n}\n\n/** Settings for instances of the Layer type. */\n// NOTE: this type not only skips `color`, which requires the `Color` type\n// defined in the `engine` package, but a few other fields which we could define\n// here.\nexport type BaseLayerSetting =\n [\"astronomical\", boolean] |\n [\"enabled\", boolean] |\n // endTime: Date\n [\"fadeSpan\", number] |\n // fadeType: FadeType\n [\"name\", string] |\n [\"opacity\", number] |\n [\"opened\", boolean] |\n [\"referenceFrame\", string] |\n // startTime: Date\n [\"version\", number];\n\nconst baseLayerSettingTypeInfo = {\n \"astronomical/boolean\": true,\n \"enabled/boolean\": true,\n \"fadeSpan/number\": true,\n \"name/string\": true,\n \"opacity/number\": true,\n \"opened/boolean\": true,\n \"referenceFrame/string\": true,\n \"version/number\": true,\n}\n\n/** Type guard function for BaseLayerSetting. */\nexport function isBaseLayerSetting(obj: [string, any]): obj is BaseLayerSetting { // eslint-disable-line @typescript-eslint/no-explicit-any\n const key = obj[0] + \"/\" + typeof obj[1];\n return key in baseLayerSettingTypeInfo;\n}\n\n/** Settings specifically for instances of the ImageSetLayer type. */\nexport type BaseImageSetLayerSetting =\n BaseLayerSetting |\n [\"colorMapperName\", string] |\n [\"overrideDefaultLayer\", boolean];\n\nconst baseImageSetLayerSettingTypeInfo = {\n \"colorMapperName/string\": true,\n \"overrideDefaultLayer/boolean\": true,\n};\n\n/** Type guard function for BaseImageSetLayerSetting. */\nexport function isBaseImageSetLayerSetting(obj: [string, any]): obj is BaseImageSetLayerSetting { // eslint-disable-line @typescript-eslint/no-explicit-any\n const key = obj[0] + \"/\" + typeof obj[1];\n return (key in baseImageSetLayerSettingTypeInfo) || isBaseLayerSetting(obj);\n}\n\n/** Settings specifically for instances of the SpreadSheetLayer type. */\nexport type BaseSpreadSheetLayerSetting =\n [\"altColumn\", number] |\n [\"altType\", AltTypes] |\n [\"altUnit\", AltUnits] |\n [\"barChartBitmask\", number] |\n [\"beginRange\", Date] |\n [\"cartesianCustomScale\", number] |\n [\"cartesianScale\", AltUnits] |\n [\"colorMapColumn\", number] |\n [\"colorMapperName\", string] |\n [\"coordinatesType\", CoordinatesType] |\n [\"decay\", number] |\n [\"dynamicColor\", boolean] |\n [\"dynamicData\", boolean] |\n [\"endDateColumn\", number] |\n [\"endRange\", Date] |\n [\"geometryColumn\", number] |\n [\"hyperlinkColumn\", number] |\n [\"hyperlinkFormat\", string] |\n [\"latColumn\", number] |\n [\"lngColumn\", number] |\n [\"markerColumn\", number] |\n [\"markerIndex\", number] |\n [\"markerScale\", MarkerScales] |\n [\"nameColumn\", number] |\n [\"normalizeColorMap\", boolean] |\n [\"normalizeColorMapMax\", number] |\n [\"normalizeColorMapMin\", number] |\n [\"normalizeSize\", boolean] |\n [\"normalizeSizeClip\", boolean] |\n [\"normalizeSizeMax\", number] |\n [\"normalizeSizeMin\", number] |\n [\"plotType\", PlotTypes] |\n [\"pointScaleType\", PointScaleTypes] |\n [\"raUnits\", RAUnits] |\n [\"scaleFactor\", number] |\n [\"showFarSide\", boolean] |\n [\"sizeColumn\", number] |\n [\"startDateColumn\", number] |\n [\"timeSeries\", boolean] |\n [\"xAxisColumn\", number] |\n [\"xAxisReverse\", boolean] |\n [\"yAxisColumn\", number] |\n [\"yAxisReverse\", boolean] |\n [\"zAxisColumn\", number] |\n [\"zAxisReverse\", boolean] |\n BaseLayerSetting;\n\n// See implementation below -- we need to handle enums specially\n// to make sure that inputs are in-range.\nconst baseSpreadSheetLayerSettingTypeInfo: { [k: string]: string } = {\n \"altColumn/number\": \"\",\n \"altType/number\": \"AltTypes\",\n \"altUnit/number\": \"AltUnits\",\n \"barChartBitmask/number\": \"\",\n \"beginRange/Date\": \"\",\n \"cartesianCustomScale/number\": \"\",\n \"cartesianScale/number\": \"AltUnits\",\n \"colorMapColumn/number\": \"\",\n \"colorMapperName/string\": \"\",\n \"coordinatesType/number\": \"CoordinatesType\",\n \"decay/number\": \"\",\n \"dynamicColor/boolean\": \"\",\n \"dynamicData/boolean\": \"\",\n \"endDateColumn/number\": \"\",\n \"endRange/Date\": \"\",\n \"geometryColumn/number\": \"\",\n \"hyperlinkColumn/number\": \"\",\n \"hyperlinkFormat/string\": \"\",\n \"latColumn/number\": \"\",\n \"lngColumn/number\": \"\",\n \"markerColumn/number\": \"\",\n \"markerIndex/number\": \"\",\n \"markerScale/number\": \"\",\n \"nameColumn/number\": \"\",\n \"normalizeColorMap/boolean\": \"\",\n \"normalizeColorMapMax/number\": \"\",\n \"normalizeColorMapMin/number\": \"\",\n \"normalizeSize/boolean\": \"\",\n \"normalizeSizeClip/boolean\": \"\",\n \"normalizeSizeMax/number\": \"\",\n \"normalizeSizeMin/number\": \"\",\n \"plotType/number\": \"PlotTypes\",\n \"pointScaleType/number\": \"PointScaleTypes\",\n \"raUnits/number\": \"RAUnits\",\n \"scaleFactor/number\": \"\",\n \"showFarSide/boolean\": \"\",\n \"sizeColumn/number\": \"\",\n \"startDateColumn/number\": \"\",\n \"timeSeries/boolean\": \"\",\n \"xAxisColumn/number\": \"\",\n \"xAxisReverse/boolean\": \"\",\n \"yAxisColumn/number\": \"\",\n \"yAxisReverse/boolean\": \"\",\n \"zAxisColumn/number\": \"\",\n \"zAxisReverse/boolean\": \"\",\n};\n\n/** Type guard function for BaseSpreadSheetLayerSetting. */\nexport function isBaseSpreadSheetLayerSetting(obj: [string, any]): obj is BaseSpreadSheetLayerSetting { // eslint-disable-line @typescript-eslint/no-explicit-any\n if (isBaseLayerSetting(obj))\n return true;\n\n // We want to be able to properly recognize Date objects\n const type = obj[1] instanceof Date ? 'Date' : typeof obj[1];\n const key = obj[0] + \"/\" + type;\n const enumType = baseSpreadSheetLayerSettingTypeInfo[key];\n\n if (enumType === undefined) {\n return false;\n } else if (enumType == \"\") {\n return true;\n } else if (enumType == \"AltTypes\") {\n return obj[1] in AltTypes;\n } else if (enumType == \"AltUnits\") {\n return obj[1] in AltUnits;\n } else if (enumType == \"CoordinatesType\") {\n return obj[1] in CoordinatesType;\n } else if (enumType == \"PlotTypes\") {\n return obj[1] in PlotTypes;\n } else if (enumType == \"PointScaleTypes\") {\n return obj[1] in PointScaleTypes;\n } else if (enumType == \"RAUnits\") {\n return obj[1] in RAUnits;\n } else {\n throw new Error('internal bug isBaseSpreadSheetLayerSetting');\n }\n}\n\n/** Settings specifically for instances of the VoTableLayer type.\n *\n * These are nearly, but not exactly, identical to [[BaseSpreadSheetLayerSetting]].\n * */\nexport type BaseVoTableLayerSetting =\n [\"altColumn\", number] |\n [\"altType\", AltTypes] |\n [\"altUnit\", AltUnits] |\n [\"beginRange\", Date] |\n [\"cartesianCustomScale\", number] |\n [\"cartesianScale\", AltUnits] |\n [\"colorMapColumn\", number] |\n [\"coordinatesType\", CoordinatesType] |\n [\"dataSourceUrl\", string] |\n [\"decay\", number] |\n [\"dynamicData\", boolean] |\n [\"endDateColumn\", number] |\n [\"endRange\", Date] |\n [\"hyperlinkColumn\", number] |\n [\"hyperlinkFormat\", string] |\n [\"latColumn\", number] |\n [\"lngColumn\", number] |\n [\"markerColumn\", number] |\n [\"markerIndex\", number] |\n [\"markerScale\", MarkerScales] |\n [\"nameColumn\", number] |\n [\"plotType\", PlotTypes] |\n [\"pointScaleType\", PointScaleTypes] |\n [\"raUnits\", RAUnits] |\n [\"scaleFactor\", number] |\n [\"showFarSide\", boolean] |\n [\"sizeColumn\", number] |\n [\"startDateColumn\", number] |\n [\"timeSeries\", boolean] |\n [\"xAxisColumn\", number] |\n [\"xAxisReverse\", boolean] |\n [\"yAxisColumn\", number] |\n [\"yAxisReverse\", boolean] |\n [\"zAxisColumn\", number] |\n [\"zAxisReverse\", boolean] |\n BaseLayerSetting;\n\n// See implementation below -- we need to handle enums specially\n// to make sure that inputs are in-range.\nconst baseVoTableLayerSettingTypeInfo: { [k: string]: string } = {\n \"altColumn/number\": \"\",\n \"altType/number\": \"AltTypes\",\n \"altUnit/number\": \"AltUnits\",\n \"beginRange/Date\": \"\",\n \"cartesianCustomScale/number\": \"\",\n \"cartesianScale/number\": \"AltUnits\",\n \"colorMapColumn/number\": \"\",\n \"coordinatesType/number\": \"CoordinatesType\",\n \"dataSourceUrl/string\": \"\",\n \"decay/number\": \"\",\n \"dynamicData/boolean\": \"\",\n \"endDateColumn/number\": \"\",\n \"endRange/Date\": \"\",\n \"hyperlinkColumn/number\": \"\",\n \"hyperlinkFormat/string\": \"\",\n \"latColumn/number\": \"\",\n \"lngColumn/number\": \"\",\n \"markerColumn/number\": \"\",\n \"markerIndex/number\": \"\",\n \"markerScale/number\": \"\",\n \"nameColumn/number\": \"\",\n \"plotType/number\": \"PlotTypes\",\n \"pointScaleType/number\": \"PointScaleTypes\",\n \"raUnits/number\": \"RAUnits\",\n \"scaleFactor/number\": \"\",\n \"showFarSide/boolean\": \"\",\n \"sizeColumn/number\": \"\",\n \"startDateColumn/number\": \"\",\n \"timeSeries/boolean\": \"\",\n \"xAxisColumn/number\": \"\",\n \"xAxisReverse/boolean\": \"\",\n \"yAxisColumn/number\": \"\",\n \"yAxisReverse/boolean\": \"\",\n \"zAxisColumn/number\": \"\",\n \"zAxisReverse/boolean\": \"\",\n};\n\n/** Type guard function for BaseVoTableLayerSetting. */\nexport function isBaseVoTableLayerSetting(obj: [string, any]): obj is BaseVoTableLayerSetting { // eslint-disable-line @typescript-eslint/no-explicit-any\n if (isBaseLayerSetting(obj))\n return true;\n\n const key = obj[0] + \"/\" + typeof obj[1];\n const enumType = baseVoTableLayerSettingTypeInfo[key];\n\n if (enumType === undefined) {\n return false;\n } else if (enumType == \"\") {\n return true;\n } else if (enumType == \"AltTypes\") {\n return obj[1] in AltTypes;\n } else if (enumType == \"AltUnits\") {\n return obj[1] in AltUnits;\n } else if (enumType == \"CoordinatesType\") {\n return obj[1] in CoordinatesType;\n } else if (enumType == \"PlotTypes\") {\n return obj[1] in PlotTypes;\n } else if (enumType == \"PointScaleTypes\") {\n return obj[1] in PointScaleTypes;\n } else if (enumType == \"RAUnits\") {\n return obj[1] in RAUnits;\n } else {\n throw new Error('internal bug isBaseVoTableLayerSetting');\n }\n}\n\n// TypeScript magic to allow fallible reverse mapping of string-valued enums.\n// https://stackoverflow.com/q/57922745/3760486\ntype StringEnum = { [key: string]: string };\n\nfunction keysOf(o: K): (keyof K)[];\nfunction keysOf(o: any) { return Object.keys(o); } // eslint-disable-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-explicit-any\n\nexport function enumLookup(\n stringEnum: E,\n s: string\n): E[keyof E] | undefined {\n for (const enumKey of keysOf(stringEnum)) {\n if (stringEnum[enumKey] === s) {\n return stringEnum[enumKey] as E[keyof E];\n }\n }\n return undefined;\n}\n","// Copyright 2020 the .NET Foundation\n// Licensed under the MIT License\n\nimport {\n BaseEngineSetting,\n enumLookup\n} from \"@wwtelescope/engine-types\";\n\nexport enum PlanetaryBodies {\n Sun = \"sun\",\n Mercury = \"mercury\",\n Venus = \"venus\",\n Earth = \"earth\",\n Mars = \"mars\",\n Jupiter = \"jupiter\",\n Saturn = \"saturn\",\n Uranus = \"uranus\",\n Neptune = \"neptune\",\n Pluto = \"pluto\",\n Moon = \"moon\",\n Io = \"io\",\n Europa = \"europa\",\n Ganymede = \"ganymede\",\n Callisto = \"callisto\",\n}\n\nexport enum CreditMode {\n Default = \"default\",\n None = \"no\"\n}\n\nexport class EmbedSettings {\n backgroundImagesetName = \"\";\n foregroundImagesetName = \"\";\n collectionUrl = \"\";\n creditMode = CreditMode.Default;\n showCoordinateReadout = false;\n showCrosshairs = false;\n tourUrl = \"\";\n wtmlUrl = \"\";\n wtmlPlace = \"\";\n\n static fromQueryParams(qp: IterableIterator<[string, string]>): EmbedSettings {\n const s = new EmbedSettings();\n\n for (const [key, value] of qp) {\n switch (key) {\n case \"bg\":\n s.backgroundImagesetName = value;\n break;\n\n case \"ch\":\n s.showCrosshairs = true;\n break;\n\n case \"coll\":\n s.collectionUrl = value;\n break;\n\n case \"cro\":\n s.showCoordinateReadout = true;\n break;\n\n case \"cred\":\n {\n const m = enumLookup(CreditMode, value);\n if (m !== undefined)\n s.creditMode = m;\n }\n break;\n\n case \"fg\":\n s.foregroundImagesetName = value;\n break;\n\n case \"p\":\n s.wtmlPlace = value;\n break;\n\n case \"planet\":\n if (value == \"mars\") {\n // Gnarly historical thing that the default Mars imageset\n // is named thusly:\n s.backgroundImagesetName = \"Visible Imagery\";\n s.foregroundImagesetName = \"Visible Imagery\";\n } else if (value == \"earth\") {\n s.backgroundImagesetName = \"Bing Maps Aerial\";\n s.foregroundImagesetName = \"Bing Maps Aerial\";\n } else if (value == \"pluto\") {\n s.backgroundImagesetName = \"Pluto (New Horizons)\";\n s.foregroundImagesetName = \"Pluto (New Horizons)\";\n } else {\n s.backgroundImagesetName = value;\n s.foregroundImagesetName = value;\n }\n break;\n\n case \"threed\":\n s.backgroundImagesetName = \"3D Solar System View\";\n s.foregroundImagesetName = \"\";\n break;\n\n case \"tour\":\n s.tourUrl = value;\n break;\n\n case \"wtml\":\n s.wtmlUrl = value;\n break;\n }\n }\n\n return s;\n }\n\n asSettings(): BaseEngineSetting[] {\n const s: BaseEngineSetting[] = [];\n s.push([\"showCrosshairs\", this.showCrosshairs]);\n return s;\n }\n}\n\n/** A class to help building query strings that get parsed into EmbedSettings\n * objects. There are a few shorthands for setups where the \"implementation\n * details\" are a bit weird or might change.\n */\nexport class EmbedQueryStringBuilder {\n s: EmbedSettings = new EmbedSettings();\n threeDMode = false;\n planetaryBody: PlanetaryBodies | null = null;\n\n toQueryItems(): Array<[string, string]> {\n const result: Array<[string, string]> = [];\n const defaults = new EmbedSettings();\n\n if (this.threeDMode) {\n result.push([\"threed\", \"\"]);\n } else if (this.planetaryBody !== null) {\n result.push([\"planet\", this.planetaryBody]);\n } else {\n if (this.s.backgroundImagesetName.length && this.s.backgroundImagesetName != defaults.backgroundImagesetName)\n result.push([\"bg\", this.s.backgroundImagesetName]);\n if (this.s.foregroundImagesetName.length && this.s.foregroundImagesetName != defaults.foregroundImagesetName)\n result.push([\"fg\", this.s.foregroundImagesetName]);\n }\n\n if (this.s.creditMode && this.s.creditMode != CreditMode.Default) {\n result.push([\"cred\", this.s.creditMode]);\n }\n\n if (this.s.showCoordinateReadout) {\n result.push([\"cro\", \"\"]);\n }\n\n if (this.s.showCrosshairs) {\n result.push([\"ch\", \"\"]);\n }\n\n if (this.s.tourUrl.length) {\n result.push([\"tour\", this.s.tourUrl]);\n }\n\n if (this.s.wtmlPlace.length) {\n result.push([\"p\", this.s.wtmlPlace]);\n }\n\n if (this.s.wtmlUrl.length) {\n result.push([\"wtml\", this.s.wtmlUrl]);\n }\n\n return result;\n }\n}","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\n\nimport * as screenfull from \"screenfull\";\n\nimport { fmtDegLat, fmtDegLon, fmtHours } from \"@wwtelescope/astro\";\nimport { Folder, FolderUp, Place, Imageset } from \"@wwtelescope/engine\";\nimport { ImageSetType } from \"@wwtelescope/engine-types\";\nimport {\n SetupForImagesetOptions,\n WWTAwareComponent,\n} from \"@wwtelescope/engine-vuex\";\nimport { CreditMode, EmbedSettings } from \"@wwtelescope/embed-common\";\nimport { Meta } from \"@sophosoft/vue-meta-decorator\";\n\n/** The overall state of the WWT embed component. */\nenum ComponentState {\n /** Waiting for resources and/or content to load. Not yet ready to start. */\n LoadingResources,\n\n /** Resources have loaded. We can start when the user activates us. */\n ReadyToStart,\n\n /** The user has activated us. */\n Started,\n}\n\ntype ToolType = \"crossfade\" | \"choose-background\" | \"playback-controls\" | null;\n\nclass BackgroundImageset {\n public imagesetName: string;\n public displayName: string;\n\n constructor(displayName: string, imagesetName: string) {\n this.displayName = displayName;\n this.imagesetName = imagesetName;\n }\n}\n\nconst skyBackgroundImagesets: BackgroundImageset[] = [\n new BackgroundImageset(\n \"Optical (Terapixel DSS)\",\n \"Digitized Sky Survey (Color)\"\n ),\n new BackgroundImageset(\n \"Low-frequency radio (VLSS)\",\n \"VLSS: VLA Low-frequency Sky Survey (Radio)\"\n ),\n new BackgroundImageset(\"Infrared (2MASS)\", \"2Mass: Imagery (Infrared)\"),\n new BackgroundImageset(\"Infrared (SFD dust map)\", \"SFD Dust Map (Infrared)\"),\n new BackgroundImageset(\"Ultraviolet (GALEX)\", \"GALEX (Ultraviolet)\"),\n new BackgroundImageset(\n \"X-Ray (ROSAT RASS)\",\n \"RASS: ROSAT All Sky Survey (X-ray)\"\n ),\n new BackgroundImageset(\n \"Gamma Rays (FERMI LAT 8-year)\",\n \"Fermi LAT 8-year (gamma)\"\n ),\n];\n\ntype Shape = { width: number; height: number };\nconst defaultWindowShape: Shape = { width: 1200, height: 900 };\n\ntype WwtComponentLayout = { top: string; height: string };\n\nexport type FolderItem = Folder | FolderUp | Imageset | Place;\n\n@Component\nexport default class Embed extends WWTAwareComponent {\n CreditMode = CreditMode;\n\n @Prop({ default: new EmbedSettings() })\n readonly embedSettings!: EmbedSettings;\n @Prop({ default: \"\" }) jwstWtmlUrl!: string;\n @Prop({ default: \"\" }) url!: string;\n @Prop({ default: \"\" }) thumbnailUrl!: string;\n @Prop({ default: \"\" }) bgWtml!: string;\n @Prop({ default: \"\" }) bgName!: string;\n\n componentState = ComponentState.LoadingResources;\n backgroundImagesets: BackgroundImageset[] = [];\n currentTool: ToolType = \"crossfade\";\n fullscreenModeActive = false;\n tourPlaybackJustEnded = false;\n windowShape = defaultWindowShape;\n\n collectionFolder: Folder | null = null;\n title = \"Explore JWST’s first image in full resolution!\";\n description = \"View JWST imagery using AAS WorldWide Telescope\";\n hashtags = [\"jwst\", \"wwt\", \"unfoldtheuniverse\"];\n\n get hashtagString() {\n return this.hashtags.join(\",\");\n }\n\n networks = [\n { name: \"facebook\", color: \"#1877f2\", text: \"Share\" },\n { name: \"twitter\", color: \"#1da1f2\", text: \"Tweet\" },\n ];\n\n // @Meta\n // getMetaInfo() {\n // return {\n // title: this.title,\n // meta: [\n // { property: \"og:type\", content: \"website\" },\n // { property: \"og:url\", content: this.url },\n // { property: \"og:title\", content: this.title },\n // { property: \"og:site_name\", content: \"WorldWide Telescope\" },\n // { property: \"og:description\", content: this.description },\n // { property: \"og:image\", content: this.thumbnailUrl.replace(\"https\", \"http\") },\n // { property: \"og:image:secure_url\", content: this.thumbnailUrl },\n // { property: \"og:image:type\", content: \"image/jpeg\" },\n // { property: \"og:image:width\", content: \"96\" },\n // { property: \"og:image:height\", content: \"45\" }\n // ],\n // }\n // }\n\n get showFolderView() {\n const children = this.collectionFolder?.get_children();\n return children !== null && children !== undefined && children.length > 1;\n }\n\n get isLoadingState() {\n return this.componentState == ComponentState.LoadingResources;\n }\n\n get isReadyToStartState() {\n return this.componentState == ComponentState.ReadyToStart;\n }\n\n get coordText() {\n if (this.wwtRenderType == ImageSetType.sky) {\n return `${fmtHours(this.wwtRARad)} ${fmtDegLat(this.wwtDecRad)}`;\n }\n\n return `${fmtDegLon(this.wwtRARad)} ${fmtDegLat(this.wwtDecRad)}`;\n }\n\n get curBackgroundImagesetName() {\n if (this.wwtBackgroundImageset == null) return \"\";\n return this.wwtBackgroundImageset.get_name();\n }\n\n set curBackgroundImagesetName(name: string) {\n this.setBackgroundImageByName(name);\n }\n\n get foregroundOpacity() {\n return this.wwtForegroundOpacity;\n }\n\n set foregroundOpacity(o: number) {\n this.setForegroundOpacity(o);\n }\n\n get fullscreenAvailable() {\n return screenfull.isEnabled;\n }\n\n get showBackgroundChooser() {\n if (this.wwtIsTourPlaying) return false;\n\n // TODO: we should wire in choices for other modes!\n return this.wwtRenderType == ImageSetType.sky;\n }\n\n get showCrossfader() {\n if (this.wwtIsTourPlaying) return false; // maybe show this if tour player is active but not playing?\n\n if (\n this.wwtForegroundImageset == null ||\n this.wwtForegroundImageset === undefined\n )\n return false;\n\n return this.wwtForegroundImageset != this.wwtBackgroundImageset;\n }\n\n get showPlaybackControls() {\n return this.wwtIsTourPlayerActive && !this.wwtIsTourPlaying;\n }\n\n get showToolMenu() {\n // This should return true if there are any tools to show.\n return (\n this.showBackgroundChooser ||\n this.showCrossfader ||\n this.showPlaybackControls\n );\n }\n\n created() {\n let prom = this.waitForReady().then(() => {\n for (const s of this.embedSettings.asSettings()) {\n this.applySetting(s);\n }\n });\n\n if (this.embedSettings.tourUrl.length) {\n prom = prom.then(async () => {\n // TODO: figure out a good thing to do here\n this.backgroundImagesets = [...skyBackgroundImagesets];\n\n await this.loadTour({\n url: this.embedSettings.tourUrl,\n play: false,\n });\n\n this.componentState = ComponentState.ReadyToStart;\n this.setTourPlayerLeaveSettingsWhenStopped(true);\n this.currentTool = \"playback-controls\";\n });\n } else {\n // Many more possibilities if we're not playing a tour ...\n if (this.embedSettings.wtmlUrl.length) {\n prom = prom.then(async () => {\n const folder = await this.loadImageCollection({\n url: this.embedSettings.wtmlUrl,\n loadChildFolders: false,\n });\n\n if (this.embedSettings.wtmlPlace) {\n // Currently, there is an issue with the `places` field of a `Folder`\n // object populating correctly. Thus, we iterate over `children` instead\n for (const pl of folder.get_children() ?? []) {\n if (!(pl instanceof Place)) {\n continue;\n }\n if (pl.get_name() == this.embedSettings.wtmlPlace) {\n /* This is nominally an async Action, but with `instant: true` it's ... instant */\n this.gotoTarget({\n place: pl,\n noZoom: false,\n instant: true,\n trackObject: true,\n });\n }\n }\n }\n });\n }\n\n prom.then(() => {\n // setupForImageset() will apply a default background that is appropriate\n // for the foreground, but we want to be able to override it.\n\n let backgroundWasInitialized = false;\n let bgName = this.embedSettings.backgroundImagesetName;\n\n if (this.embedSettings.foregroundImagesetName.length) {\n const img = this.lookupImageset(\n this.embedSettings.foregroundImagesetName\n );\n\n if (img !== null) {\n // If the imageset is a panorama, we want to set it to be the background\n const isPanorama = img.get_dataSetType() == ImageSetType.panorama;\n const options: SetupForImagesetOptions = { foreground: img };\n if (isPanorama) {\n options.background = img;\n backgroundWasInitialized = true;\n }\n\n // For setup of planetary modes to work, we need to pass the specified\n // background imageset to setupForImageset().\n // For a panorama, we've already set the imageset itself as the background\n if (!isPanorama && bgName.length) {\n const bkg = this.lookupImageset(bgName);\n if (bkg !== null) {\n options.background = bkg;\n backgroundWasInitialized = true;\n }\n }\n\n this.setupForImageset(options);\n }\n }\n\n this.loadImageCollection({\n url: this.bgWtml,\n loadChildFolders: true,\n }).then((_folder) => {\n this.curBackgroundImagesetName = this.bgName;\n this.backgroundImagesets.unshift(\n new BackgroundImageset(\"unWISE\", \"unwise\")\n );\n });\n\n this.loadImageCollection({\n url: this.jwstWtmlUrl,\n loadChildFolders: true,\n }).then((folder) => {\n this.collectionFolder = folder;\n const children = folder.get_children();\n if (children === null) {\n return;\n }\n if (children.length === 1) {\n const item = children[0];\n if (item instanceof Place) {\n this.gotoTarget({\n place: item,\n noZoom: false,\n instant: true,\n trackObject: true,\n });\n }\n }\n });\n\n if (!backgroundWasInitialized) {\n if (!bgName.length) {\n // Empty bgname implies that we should choose a default background. If\n // setupForImageset() didn't do that for us, go with:\n bgName = \"Digitized Sky Survey (Color)\";\n }\n\n this.setBackgroundImageByName(bgName);\n }\n\n // TODO: DTRT in different modes.\n this.backgroundImagesets = [...skyBackgroundImagesets];\n let foundBG = false;\n\n for (const bgi of this.backgroundImagesets) {\n if (bgi.imagesetName == bgName) {\n foundBG = true;\n break;\n }\n }\n\n if (!foundBG) {\n this.backgroundImagesets.unshift(\n new BackgroundImageset(bgName, bgName)\n );\n }\n\n this.componentState = ComponentState.Started;\n });\n }\n }\n\n mounted() {\n if (screenfull.isEnabled) {\n screenfull.on(\"change\", this.onFullscreenEvent);\n }\n\n window.addEventListener(\"resize\", this.onResizeEvent);\n // ResizeObserver not yet in TypeScript but we should start using it when\n // available. If we're in an iframe, our shape might change spontaneously.\n // const ro = new ResizeObserver(entries => this.onResizeEvent());\n // ro.observer(this.$el);\n this.onResizeEvent();\n }\n\n destroyed() {\n if (screenfull.isEnabled) {\n screenfull.off(\"change\", this.onFullscreenEvent);\n }\n\n window.removeEventListener(\"resize\", this.onResizeEvent);\n }\n\n selectTool(name: ToolType) {\n if (this.currentTool == name) {\n this.currentTool = null;\n } else {\n this.currentTool = name;\n }\n }\n\n doZoom(zoomIn: boolean) {\n if (zoomIn) {\n this.zoom(1 / 1.3);\n } else {\n this.zoom(1.3);\n }\n }\n\n toggleFullscreen() {\n if (screenfull.isEnabled) {\n screenfull.toggle();\n }\n }\n\n onFullscreenEvent() {\n // NB: we need the isEnabled check to make TypeScript happy even though it\n // is not necessary in practice here.\n if (screenfull.isEnabled) {\n this.fullscreenModeActive = screenfull.isFullscreen;\n }\n }\n\n onResizeEvent() {\n const width = this.$el.clientWidth;\n const height = this.$el.clientHeight;\n\n if (width > 0 && height > 0) {\n this.windowShape = { width, height };\n } else {\n this.windowShape = defaultWindowShape;\n }\n }\n\n startInteractive() {\n this.componentState = ComponentState.Started;\n\n if (this.embedSettings.tourUrl.length) {\n this.startTour();\n }\n }\n\n get tourPlaybackIcon() {\n if (this.tourPlaybackJustEnded) {\n return \"undo-alt\";\n }\n\n if (this.wwtIsTourPlaying) {\n return \"pause\";\n }\n\n return \"play\";\n }\n\n tourPlaybackButtonClicked() {\n if (this.wwtIsTourPlayerActive) {\n // If we're playing and our window is tall, we have styling active that\n // keeps the WWT widget in a widescreen-ish format to preserve tour\n // layout. If we're stopping playback, this styling will go away. Since\n // the WWT widget tracks its view height as an angular size, we need to\n // tweak it in order to preserve continuity when the tour is paused. This\n // isn't 100% necessary but is cool when it works. It doesn't work if the\n // pause occurs in a very zoomed-out state, where we can't zoom out any\n // farther because we hit the zoom clamps.\n //\n // Keep this in sync with wwtComponentLayout.\n //\n // TODO: make sure this works in 3D mode.\n let newView = null;\n\n if (this.wwtIsTourPlaying && this.wwtComponentLayout.top != \"0\") {\n const curHeight = this.windowShape.width * 0.75;\n newView = {\n raRad: 1.0 * this.wwtRARad,\n decRad: 1.0 * this.wwtDecRad,\n zoomDeg: (this.wwtZoomDeg * this.windowShape.height) / curHeight,\n instant: true,\n };\n }\n\n if (this.tourPlaybackJustEnded) {\n // Restart from beginning. (seekToTourTimecode() starts playback.)\n this.seekToTourTimecode(0);\n this.tourPlaybackJustEnded = false;\n } else {\n this.toggleTourPlayPauseState();\n }\n\n if (newView !== null) {\n this.gotoRADecZoom(newView);\n }\n }\n }\n\n formatTimecode(seconds: number): string {\n if (seconds < 0) return \"-:--\";\n\n const minutes = Math.floor(seconds / 60);\n seconds = Math.round(seconds - 60 * minutes);\n return minutes.toString() + \":\" + seconds.toString().padStart(2, \"0\");\n }\n\n get twoWayTourTimecode() {\n return this.wwtTourTimecode;\n }\n\n set twoWayTourTimecode(code: number) {\n this.seekToTourTimecode(code);\n this.tourPlaybackJustEnded = false;\n }\n\n @Watch(\"wwtTourCompletions\")\n onTourCompletionsChanged(_count: number) {\n this.tourPlaybackJustEnded = true;\n }\n\n // This property is used to achieve a widescreen effect when playing tours\n // back on a portrait-mode screen, such as on a mobile device. Tours have to\n // be designed with a target screen aspect ratio in mind, so without the\n // widescreen effect the content will get cut off.\n //\n // Keep this in sync with toggleTourPlayback.\n get wwtComponentLayout(): WwtComponentLayout {\n if (this.wwtIsTourPlaying) {\n if (this.windowShape.height > this.windowShape.width) {\n const wwtHeight = this.windowShape.width * 0.75; // => 4:3 aspect ratio\n const height = wwtHeight + \"px\";\n const top = 0.5 * (this.windowShape.height - wwtHeight) + \"px\";\n return { top, height };\n }\n }\n return { top: \"0\", height: \"100%\" };\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.items !== null)?_c('div',{staticClass:\"fv-root\",style:(_vm.cssVars)},_vm._l((_vm.items),function(item){return _c('div',{key:item.get_name(),class:['item', _vm.lastSelectedItem === item ? 'selected' : ''],attrs:{\"title\":item.get_name()},on:{\"click\":function () { return _vm.selectItem(item); }}},[_c('img',{attrs:{\"src\":item.get_thumbnailUrl(),\"alt\":item.get_name()}}),_c('div',{staticClass:\"item-name\"},[_vm._v(_vm._s(item.get_name()))])])}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { mapActions, mapMutations } from \"vuex\";\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Folder, FolderUp, Place, Imageset } from \"@wwtelescope/engine\";\nimport { GotoTargetOptions } from \"@wwtelescope/engine-helpers\";\nimport { ImageSetType, Thumbnail } from \"@wwtelescope/engine-types\";\n\n@Component\nexport default class FolderView extends Vue {\n @Prop() rootFolder!: Folder;\n @Prop() flexDirection!: \"row\" | \"column\";\n items: Thumbnail[] | null = null;\n lastSelectedItem: Thumbnail | null = null;\n\n gotoTarget!: (opts: GotoTargetOptions) => Promise;\n setBackgroundImageByName!: (imagesetName: string) => void;\n setForegroundImageByName!: (imagesetName: string) => void;\n\n beforeCreate(): void {\n this.$options.methods = {\n ...this.$options.methods,\n ...mapMutations(\"wwt-embed\", [\n \"setBackgroundImageByName\",\n \"setForegroundImageByName\"\n ]),\n ...mapActions(\"wwt-embed\", [\n \"gotoTarget\"\n ])\n };\n }\n\n created(): void {\n this.items = this.rootFolder.get_children();\n this.lastSelectedItem = null;\n }\n\n selectItem(item: Thumbnail): void {\n this.lastSelectedItem = item;\n if (item instanceof Folder || item instanceof FolderUp) {\n this.items = item.get_children();\n } else if (item instanceof Imageset) {\n const type = item.get_dataSetType();\n this.setForegroundImageByName(item.get_name());\n if (type === ImageSetType.planet) {\n this.setBackgroundImageByName(item.get_name());\n }\n } else if (item instanceof Place) {\n const imageset = item.get_backgroundImageset();\n if (imageset !== null) {\n this.setForegroundImageByName(imageset.get_name());\n }\n this.gotoTarget({\n place: item,\n noZoom: false,\n instant: false,\n trackObject: true\n });\n }\n }\n\n get cssVars() {\n return {\n \"--flex-direction\": this.flexDirection\n };\n }\n\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--13-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--13-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FolderView.vue?vue&type=template&id=54f227e1&scoped=true&\"\nimport script from \"./FolderView.vue?vue&type=script&lang=ts&\"\nexport * from \"./FolderView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FolderView.vue?vue&type=style&index=0&id=54f227e1&prod&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54f227e1\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('WorldWideTelescope',{style:({\n height: _vm.wwtComponentLayout.height,\n top: _vm.wwtComponentLayout.top,\n }),attrs:{\"wwt-namespace\":\"wwt-embed\"}}),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoadingState),expression:\"isLoadingState\"}],staticClass:\"modal\",attrs:{\"id\":\"modal-loading\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"spinner\"}),_c('p',[_vm._v(\"Loading …\")])])])]),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isReadyToStartState),expression:\"isReadyToStartState\"}],staticClass:\"modal\",attrs:{\"id\":\"modal-readytostart\"},on:{\"click\":function($event){return _vm.startInteractive()}}},[_c('div',[_c('font-awesome-icon',{staticClass:\"icon\",attrs:{\"icon\":\"play\"}})],1)])]),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{attrs:{\"id\":\"overlays\"}},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.embedSettings.showCoordinateReadout),expression:\"embedSettings.showCoordinateReadout\"}]},[_vm._v(_vm._s(_vm.coordText))])])]),_c('div',{attrs:{\"id\":\"left-content\"}},[(_vm.collectionFolder !== null && _vm.showFolderView)?_c('folder-view',{attrs:{\"id\":\"folder-view\",\"flex-direction\":\"column\",\"root-folder\":_vm.collectionFolder}}):_vm._e()],1),_c('ul',{attrs:{\"id\":\"controls\"}},[_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showToolMenu),expression:\"showToolMenu\"}]},[_c('v-popover',{attrs:{\"placement\":\"left\"}},[_c('font-awesome-icon',{staticClass:\"tooltip-target\",attrs:{\"icon\":\"sliders-h\",\"size\":\"lg\"}}),_c('template',{slot:\"popover\"},[_c('ul',{staticClass:\"tooltip-content tool-menu\"},[_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCrossfader),expression:\"showCrossfader\"}]},[_c('a',{directives:[{name:\"close-popover\",rawName:\"v-close-popover\"}],attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.selectTool('crossfade')}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"adjust\"}}),_vm._v(\" Crossfade\")],1)]),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showBackgroundChooser),expression:\"showBackgroundChooser\"}]},[_c('a',{directives:[{name:\"close-popover\",rawName:\"v-close-popover\"}],attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.selectTool('choose-background')}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"mountain\"}}),_vm._v(\" Choose background\")],1)]),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPlaybackControls),expression:\"showPlaybackControls\"}]},[_c('a',{directives:[{name:\"close-popover\",rawName:\"v-close-popover\"}],attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.selectTool('playback-controls')}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"redo\"}}),_vm._v(\" Tour player controls\")],1)])])])],2)],1),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.wwtIsTourPlaying),expression:\"!wwtIsTourPlaying\"}]},[_c('font-awesome-icon',{attrs:{\"icon\":\"search-plus\",\"size\":\"lg\"},on:{\"click\":function($event){return _vm.doZoom(true)}}})],1),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.wwtIsTourPlaying),expression:\"!wwtIsTourPlaying\"}]},[_c('font-awesome-icon',{attrs:{\"icon\":\"search-minus\",\"size\":\"lg\"},on:{\"click\":function($event){return _vm.doZoom(false)}}})],1),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullscreenAvailable),expression:\"fullscreenAvailable\"}]},[_c('font-awesome-icon',{staticClass:\"nudgeright1\",attrs:{\"icon\":_vm.fullscreenModeActive ? 'compress' : 'expand',\"size\":\"lg\"},on:{\"click\":function($event){return _vm.toggleFullscreen()}}})],1)]),_c('div',{attrs:{\"id\":\"bottom-content\"}},[_c('div',{attrs:{\"id\":\"tools\"}},[_c('div',{staticClass:\"tool-container\"},[(_vm.currentTool == 'crossfade')?[_c('span',[_vm._v(\"Foreground opacity:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.foregroundOpacity),expression:\"foregroundOpacity\"}],staticClass:\"opacity-range\",attrs:{\"type\":\"range\"},domProps:{\"value\":(_vm.foregroundOpacity)},on:{\"__r\":function($event){_vm.foregroundOpacity=$event.target.value}}})]:(_vm.currentTool == 'choose-background')?[_c('span',[_vm._v(\"Background imagery:\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.curBackgroundImagesetName),expression:\"curBackgroundImagesetName\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.curBackgroundImagesetName=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.backgroundImagesets),function(bg){return _c('option',{key:bg.imagesetName,domProps:{\"value\":bg.imagesetName}},[_vm._v(\" \"+_vm._s(bg.displayName)+\" \")])}),0)]:(_vm.currentTool == 'playback-controls')?[_c('div',{staticClass:\"playback-controls\"},[_c('font-awesome-icon',{staticClass:\"clickable\",attrs:{\"icon\":_vm.tourPlaybackIcon,\"size\":\"lg\"},on:{\"click\":function($event){return _vm.tourPlaybackButtonClicked()}}}),_c('vue-slider',{staticClass:\"scrubber\",attrs:{\"max\":_vm.wwtTourRunTime,\"marks\":_vm.wwtTourStopStartTimes,\"tooltip-formatter\":_vm.formatTimecode,\"adsorb\":true,\"duration\":0,\"interval\":0.001,\"contained\":true,\"hide-label\":true,\"use-keyboard\":false},model:{value:(_vm.twoWayTourTimecode),callback:function ($$v) {_vm.twoWayTourTimecode=$$v},expression:\"twoWayTourTimecode\"}})],1)]:_vm._e()],2)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.embedSettings.creditMode == _vm.CreditMode.Default),expression:\"embedSettings.creditMode == CreditMode.Default\"}],attrs:{\"id\":\"credits\"}},[_c('div',{attrs:{\"id\":\"network-sharing-container\"}},[_vm._l((_vm.networks),function(network){return _c('ShareNetwork',{key:network.name,class:((network.name) + \"-button\"),style:({ backgroundColor: network.color, width: 'fit-content' }),attrs:{\"network\":network.name,\"description\":_vm.description,\"url\":_vm.url,\"title\":_vm.title,\"hashtags\":_vm.hashtagString,\"quote\":_vm.description,\"twitter-user\":\"WWTelescope\"}},[_c('font-awesome-icon',{class:((network.name) + \"-icon\"),style:({ padding: '0px 4px 0px 2px' }),attrs:{\"icon\":['fab', network.name],\"size\":\"lg\"}}),_c('span',[_vm._v(_vm._s(network.text))])],1)}),_c('a',{staticClass:\"support-button\",staticStyle:{\"background-color\":\"#f056b0\",\"width\":\"fit-content\"},attrs:{\"href\":\"https://bit.ly/wwtdonate22\",\"target\":\"_blank\"}},[_c('font-awesome-icon',{staticClass:\"heart-icon\",style:({ padding: '0px 4px 0px 2px' }),attrs:{\"icon\":\"heart\",\"size\":\"lg\"}}),_c('span',[_vm._v(\"Support WWT\")])],1)],2),_vm._m(0)])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\" Powered by \"),_c('a',{attrs:{\"href\":\"https://worldwidetelescope.org/home/\",\"target\":\"_blank\"}},[_vm._v(\"AAS WorldWide Telescope\")]),_c('a',{attrs:{\"href\":\"https://worldwidetelescope.org/home/\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"alt\":\"WWT Logo\",\"src\":require(\"./assets/logo_wwt.png\")}})]),_c('a',{attrs:{\"href\":\"https://aas.org/\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"alt\":\"AAS Logo\",\"src\":require(\"./assets/logo_aas.png\")}})]),_c('a',{attrs:{\"href\":\"https://github.com/pkgw/wwt-webgl-engine/tree/special-2022-jwst-smacs#readme\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"alt\":\"GitHub Logo\",\"src\":require(\"./assets/logo_github.png\")}})])])}]\n\nexport { render, staticRenderFns }","// Copyright 2020 the .NET Foundation\n// Licensed under the MIT License\n\n/** The mathematical constant pi, around 3.14. */\nexport const PI = 3.14159265358979;\n\n/** Two times the mathematical constan pi, around 6.28. */\nexport const TWOPI = 2 * PI;\n\n/** Radians-to-degrees conversion factor.\n *\n * ```\n * let degrees = radians * R2D;\n * ```\n */\nexport const R2D = 180 / PI;\n\n/** Degrees-to-radians conversion factor.\n *\n * ```\n * let radians = degrees * D2R;\n * ```\n */\nexport const D2R = PI / 180;\n\n/** Radians-to-hours conversion factor.\n *\n * ```\n * let hours = radians * R2H;\n * ```\n */\nexport const R2H = 12 / PI;\n\n/** Hours-to-radians conversion factor.\n *\n * ```\n * let radians = hours * H2R;\n * ```\n */\nexport const H2R = PI / 12;\n\n/** Degrees-to-hours conversion factor.\n *\n * ```\n * let hours = degrees * D2H;\n * ```\n */\nexport const D2H = 12. / 180;\n\n/** Hours-to-degrees conversion factor.\n *\n * ```\n * let degrees = hours * H2D;\n * ```\n */\nexport const H2D = 15;\n\n/** Normalize an angle in radians to lie between 0 and 2pi.\n *\n * @param angleRad The input angle, in radians.\n * @returns An equivalent angle, also in radians.\n */\nexport function angnorm(angleRad: number): number {\n while (angleRad < 0)\n angleRad += TWOPI;\n while (angleRad >= TWOPI)\n angleRad -= TWOPI;\n return angleRad;\n}\n\n/**\n * Find the great-circle distance between two points\n *\n * This implementation uses a special case of the Vincenty formula\n * See the last formula in https://en.wikipedia.org/wiki/Great-circle_distance#Computational_formulas\n *\n * @param ra1 The right ascension of the first point, in radians\n * @param dec1 The declination of the first point, in radians\n * @param ra2 The right ascension of the second point, in radians\n * @param dec2 The declination of the second point, in radians\n * @returns The great-circle distance\n */\n export function distance(ra1: number, dec1: number, ra2: number, dec2: number): number {\n const dAbsRA = Math.abs(ra1 - ra2);\n const nt1 = (Math.cos(dec2) * Math.sin(dAbsRA)) ** 2;\n const nt2 = (Math.cos(dec1) * Math.sin(dec2) - Math.sin(dec1) * Math.cos(dec2) * Math.cos(dAbsRA)) ** 2;\n const num = Math.sqrt(nt1 + nt2);\n const den = Math.sin(dec1) * Math.sin(dec2) + Math.cos(dec1) * Math.cos(dec2) * Math.cos(dAbsRA);\n return Math.atan2(num, den);\n}\n\nfunction _formatSexagesimal(\n value: number,\n showPlus: boolean,\n padWhole: number,\n sep1: string,\n sep2: string,\n precision: number\n): string {\n let prefix = \"\";\n\n if (value < 0) {\n value = -value;\n prefix = \"-\";\n } else if (showPlus) {\n prefix = \"+\";\n }\n\n const whole = Math.floor(value);\n value = (value - whole) * 60;\n const minutes = Math.floor(value);\n value = (value - minutes) * 60;\n const seconds = Math.floor(value);\n const remainder = value - seconds;\n\n const wText = String(whole).padStart(padWhole, '0');\n const mText = String(minutes).padStart(2, '0');\n const sText = String(seconds).padStart(2, '0');\n const rText = remainder.toFixed(precision).slice(1); // drop the leading \"0\"\n return `${prefix}${wText}${sep1}${mText}${sep2}${sText}${rText}`\n}\n\n/** Format an angle, measured in radians, as sexagesimal hours.\n *\n * Before formatting, the angle is normalized to lie within 0-2pi.\n *\n * @param angleRad The angle in radians.\n * @param sep1 The text to put between the hours and the minutes. Defaults to\n * `\":\"`.\n * @param sep2 The text to put between the minutes and the seconds. Defaults to\n * `\":\"`.\n * @param precision The number of places of decimal precision to include in the\n * result. Defaults to 0.\n * @returns The formatted angle.\n */\nexport function fmtHours(angleRad: number, sep1 = \":\", sep2 = \":\", precision = 0): string {\n return _formatSexagesimal(angnorm(angleRad) * R2H, false, 2, sep1, sep2, precision);\n}\n\n/** Format a latitudinal angle, measured in radians, as sexagesimal degrees.\n *\n * If the number is not in the range [-pi, pi], `\" ??${sep1}??${sep2}??\"` is\n * returned.\n *\n * @param angleRad The latitude in radians.\n * @param sep1 The text to put between the degrees and the arcminutes. Defaults\n * to `\":\"`.\n * @param sep2 The text to put between the arcminutes and the arcseconds.\n * Defaults to `\":\"`.\n * @param precision The number of places of decimal precision to include in the\n * result. Defaults to 0.\n * @returns The formatted angle.\n */\nexport function fmtDegLat(angleRad: number, sep1 = \":\", sep2 = \":\", precision = 0): string {\n if (angleRad < -PI || angleRad > PI)\n return ` ??${sep1}??${sep2}??`;\n\n return _formatSexagesimal(angleRad * R2D, true, 2, sep1, sep2, precision);\n}\n\n/** Format a longitudinal angle, measured in radians, as sexagesimal degrees.\n *\n * Before formatting, the angle is normalized to lie within 0-2pi. The output\n * will be zero-padded to three digits, e.g. `\"000:01:30\"` or `\"359:59:59.123\"`.\n *\n * @param angleRad The longitude in radians.\n * @param sep1 The text to put between the degrees and the arcminutes. Defaults\n * to `\":\"`.\n * @param sep2 The text to put between the arcminutes and the arcseconds.\n * Defaults to `\":\"`.\n * @param precision The number of places of decimal precision to include in the\n * result. Defaults to 0.\n * @returns The formatted angle.\n */\nexport function fmtDegLon(angleRad: number, sep1 = \":\", sep2 = \":\", precision = 0): string {\n return _formatSexagesimal(angnorm(angleRad) * R2D, false, 3, sep1, sep2, precision);\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--13-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Embed.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--13-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Embed.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Embed.vue?vue&type=template&id=55607661&\"\nimport script from \"./Embed.vue?vue&type=script&lang=ts&\"\nexport * from \"./Embed.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Embed.vue?vue&type=style&index=0&id=55607661&prod&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport VTooltip from \"v-tooltip\";\nimport Vuex from \"vuex\";\n\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport {\n faAdjust,\n faCompress,\n faExpand,\n faHeart,\n faMountain,\n faPlay,\n faPause,\n faRedo,\n faSearchMinus,\n faSearchPlus,\n faSlidersH,\n faUndoAlt,\n} from '@fortawesome/free-solid-svg-icons';\nimport {\n faFacebook,\n faTwitter\n} from '@fortawesome/free-brands-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\n\nimport VueSlider from 'vue-slider-component';\nimport 'vue-slider-component/theme/default.css';\n\nimport VueMeta from \"vue-meta\";\nimport VueSocialSharing from \"vue-social-sharing\";\n\nimport { createPlugin } from \"@wwtelescope/engine-vuex\";\nimport { EmbedSettings } from \"@wwtelescope/embed-common\";\nimport FolderView from \"./FolderView.vue\";\n\nimport Embed from \"./Embed.vue\";\n\nVue.config.productionTip = false;\n\nVue.use(VTooltip);\nVue.use(Vuex);\nVue.use(VueMeta);\nVue.use(VueSocialSharing);\n\nconst store = new Vuex.Store({});\n\nVue.use(createPlugin(), {\n store,\n namespace: \"wwt-embed\"\n});\n\nlibrary.add(faAdjust);\nlibrary.add(faCompress);\nlibrary.add(faExpand);\nlibrary.add(faHeart);\nlibrary.add(faMountain);\nlibrary.add(faPlay);\nlibrary.add(faPause);\nlibrary.add(faRedo);\nlibrary.add(faSearchMinus);\nlibrary.add(faSearchPlus);\nlibrary.add(faSlidersH);\nlibrary.add(faUndoAlt);\nlibrary.add(faFacebook);\nlibrary.add(faTwitter);\nVue.component('font-awesome-icon', FontAwesomeIcon);\n\nVue.component('vue-slider', VueSlider);\nVue.component('folder-view', FolderView);\n\nconst queryParams = new URLSearchParams(window.location.search);\nconst settings = EmbedSettings.fromQueryParams(queryParams.entries());\n\nnew Vue({\n store,\n el: \"#app\",\n render: createElement => {\n return createElement(Embed, {\n props: {\n \"wwtNamespace\": \"wwt-embed\",\n \"embedSettings\": settings,\n \"jwstWtmlUrl\": \"https://data1.wwtassets.org/packages/2022/07_jwst/smacs0723/index.wtml\",\n \"url\": \"https://web.wwtassets.org/specials/2022/jwst-smacs/\",\n \"thumbnailUrl\": \"https://web.wwtassets.org/specials/2022/jwst-first/placeholder.jpg\",\n \"bgWtml\": \"https://data1.wwtassets.org/packages/2022/07_jwst/smacs0723/jwst_smacs0723.wtml\",\n \"bgName\": \"unwise\"\n }\n });\n }\n});\n"],"sourceRoot":""}