Repository Analysis

bilawalsidhu/gods-eye-view

A spy satellite simulator in your browser, except the data is real. Live open source spatial intelligence on a photorealistic 3D globe.

5.6 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of bilawalsidhu/gods-eye-view, a JavaScript project with 11,970 GitHub stars. SynthScan v2.0 examined 118,540 lines of code across 178 source files, recording 522 pattern matches distributed across 4 syntactic categories. The overall adjusted score of 5.6 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

5.6
Adjusted Score
5.6
Raw Score
100%
Time Factor
2026-08-28
Last Push
12.0K
Stars
JavaScript
Language
118.5K
Lines of Code
178
Files
522
Pattern Hits
2026-08-29
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 0MEDIUM 69LOW 453

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 522 distinct pattern matches across 4 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers371 hits · 352 pts
SeverityFileLineSnippetContext
LOWvite.config.js6694export function militaryInstallationDiskFresh(CODE
LOWvite.config.js6704export function militaryInstallationDiskPath(cacheKey, dir = MILITARY_INSTALLATION_DISK_DIR) {CODE
LOWvite.config.js6713export async function readMilitaryInstallationDisk(CODE
LOWvite.config.js268export function simplifyOverpassPayloadBody(bodyText, opts = {}) {CODE
LOWvite.config.js800export function normalizeRadioBrowserStation(raw) {CODE
LOWvite.config.js940async function resolveRadioProxyAddresses(hostname, lookupImpl) {CODE
LOWvite.config.js995export function createRadioProxyMiddleware({ fetchImpl = null, lookupImpl = lookupDns, now = Date.now } = {}) {CODE
LOWvite.config.js1602export function launchLibraryRequestHeaders(token = process.env.LL2_API_TOKEN) {CODE
LOWvite.config.js2467function overpassLooksRuntimeError(bodyText) {CODE
LOWvite.config.js2808async function fetchAdsbLolPointFallback(req) {CODE
LOWvite.config.js2863async function serveAdsbLolPointFallback(req, res, requestedMode, reason) {CODE
LOWvite.config.js3817async function loadAustinSourcesFromOpenData() {CODE
LOWvite.config.js3901async function loadCaltransSourcesFromOpenData() {CODE
LOWvite.config.js4002async function loadTflSourcesFromOpenData() {CODE
LOWvite.config.js4374export async function fetchCctvImageFromUpstream(url, {CODE
LOWvite.config.js5227function extractOpenAiResponseText(data) {CODE
LOWvite.config.js6269function ensureAisStreamConnection() {CODE
LOWvite.config.js6305function startAisStreamWatchdogTick() {CODE
LOWvite.config.js6492function mergeAisStaticIntoLiveVessel(mmsi, staticData) {CODE
LOWvite.config.js6603export function quantizeMilitaryInstallationBox(box, stepDeg = MILITARY_INSTALLATION_BBOX_STEP_DEG) {CODE
LOWvite.config.js6630export function militaryInstallationCacheKey(box, decimals = 3) {CODE
LOWvite.config.js6654export async function resolveMilitaryInstallationTier({CODE
LOWvite.config.js6681export function migrateMilitaryInstallationEntry(entry) {CODE
LOWvite.config.js6734export async function writeMilitaryInstallationDisk(CODE
LOWvite.config.js6754export function validMilitaryInstallationBox(params) {CODE
LOWvite.config.js6765function trimMilitaryInstallationCache() {CODE
LOWvite.config.js6773function militaryInstallationsProxy() {CODE
LOWvite.config.js6917export function requiredFiniteQueryNumber(params, key) {CODE
LOWvite.config.js7099export function regionalBriefHasAnySource({ place, weather, news } = {}) {CODE
LOWsrc/navigationPolicy.js28export function announceNavigationAuthority(CODE
LOWsrc/navigationPolicy.js48export function registerNavigationAuthorityListener(eventTarget, listener) {CODE
LOWsrc/navigationPolicy.js120export function reassertNavigationHandoff({CODE
LOWsrc/ui.js569function formatCockpitWindDirection(value) {CODE
LOWsrc/scopeMask.js147export function quantizeScopeTerminusAlpha(alpha) {CODE
LOWsrc/scopeMask.js179export function updateScopeTerminusForHeight(heightM) {CODE
LOWsrc/scopeMask.js254export function getScopeTerminusRepaintCount() {CODE
LOWsrc/scopeMask.js259export function scopeMaskDevicePixelRatio(ratio = (typeof window !== 'undefined' ? window.devicePixelRatio : 1)) {CODE
LOWsrc/scopeMask.js299function teardownDevicePixelRatioWatch() {CODE
LOWsrc/scopeMask.js451function teardownCameraHeightWatch() {CODE
LOWsrc/celestialRing.js97export function keyholeLabelAlphaFromGeometry(labelX, labelY, geometry) {CODE
LOWsrc/celestialRing.js120export function isCelestialRingStyleSupported(styleName) {CODE
LOWsrc/celestialRing.js207export function projectEarthDiscToViewport(CODE
LOWsrc/cockpitCloudEffects.js159export function cockpitWeatherEnabledFromStoredValue(value) {CODE
LOWsrc/rightRailPolicy.js10export function shouldHideCollapsedRightPanels({ hudVariant, hasExpandedPanel }) {CODE
LOWsrc/rightRailPolicy.js36export function shouldExpandGlobalContextPanel({CODE
LOWsrc/worldFocus.js40export function registerWorldFocusRequestListener(eventTarget, listener) {CODE
LOWsrc/loadingFeedback.js43function terminalFromParticipantStats(summary, participantIds) {CODE
LOWsrc/loadingFeedback.js71export function createLoadingFeedbackState() {CODE
LOWsrc/loadingFeedback.js107export function presentGlobalStatusNotice(notice, nowMs = 0) {CODE
LOWsrc/loadingFeedback.js124export function canPresentDeferredStatusNotice(expectedGeneration, currentGeneration, disposed = false) {CODE
LOWsrc/loadingFeedback.js135export function presentGlobalLoadingStatus(notice, loadingState, summary, nowMs = 0) {CODE
LOWsrc/loadingFeedback.js142export function createTrafficSyncFeedbackState() {CODE
LOWsrc/loadingFeedback.js156export function reduceTrafficSyncFeedback(previous, {CODE
LOWsrc/cockpitMath.js25export function cockpitAnchorCorrectionStep(distanceM, speedMps, dtSec) {CODE
LOWsrc/cockpitMath.js43export function cockpitSurfaceWaitExpired(nowMs, startedMs, timeoutMs = 5000) {CODE
LOWsrc/cockpitMath.js69export function formatCockpitContextScope(subjectLabel, radiusM, installationCoverage = null) {CODE
LOWsrc/cockpitMath.js189export function bearingBetweenCoordinates(fromLat, fromLon, toLat, toLon) {CODE
LOWsrc/cockpitMath.js221export function resolveTrackedAircraftInfo({CODE
LOWsrc/cockpitMath.js254export function resolveCockpitContextReadout({ snapshot = null, info = null } = {}) {CODE
LOWsrc/contactsDetectionPolicy.js54export function contactsDetectionEnterPlan(current, restore) {CODE
311 more matches not shown…
Decorative Section Separators66 hits · 220 pts
SeverityFileLineSnippetContext
MEDIUMsrc/ui.js7769 // ── Public control facade ──────────────────────────────────────────────COMMENT
MEDIUMsrc/ui.js8890 // ── Parameter Sliders ─────────────────────────COMMENT
MEDIUMsrc/ui.js8968 // ── Style switching ───────────────────────────COMMENT
MEDIUMsrc/ui.js9045 // ── Shader transitions ────────────────────────COMMENT
MEDIUMsrc/ui.js9238 // ── Location Bar ─────────────────────────────COMMENT
MEDIUMsrc/ui.js9557 // ── Orbit Mode ──────────────────────────────COMMENT
MEDIUMsrc/ui.js9753 // ── Share Button ─────────────────────────────COMMENT
MEDIUMsrc/ui.js9780 // ── HUD Toggle ───────────────────────────────COMMENT
MEDIUMsrc/hud.js715 // ── Public API ──────────────────────────COMMENT
MEDIUMsrc/styles/thermal.js35 // ── Ironbow "Predator" thermal palette ────────────────COMMENT
MEDIUMsrc/styles/thermal.js56 // ── Value noise (coherent, smooth, drifting) ──────────COMMENT
MEDIUMsrc/styles/thermal.js87 // ── 7-segment digit renderer ──────────────────────────COMMENT
MEDIUMsrc/styles/thermal.js123 // ── Crosshair ─────────────────────────────────────────COMMENT
MEDIUMsrc/styles/thermal.js133 // ── Scale bar (right edge) ────────────────────────────COMMENT
MEDIUMsrc/styles/thermal.js184 // ── Luminance → temperature mapping ─────────────────COMMENT
MEDIUMsrc/styles/thermal.js191 // ── Temperature banding (contour lines) ─────────────COMMENT
MEDIUMsrc/styles/thermal.js197 // ── White-Hot / Black-Hot mode ──────────────────────COMMENT
MEDIUMsrc/styles/thermal.js208 // ── Hot-spot bloom/bleed ────────────────────────────COMMENT
MEDIUMsrc/styles/thermal.js235 // ── Subtle motion blur feel (slight blur) ───────────COMMENT
MEDIUMsrc/styles/thermal.js238 // ── HUD Overlay ─────────────────────────────────────COMMENT
MEDIUMsrc/styles/thermal.js326 // ── Lens shading + vignette ───────────────────COMMENT
MEDIUMsrc/styles/surveillance.js31 // ── Noise functions ───────────────────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js49 // ── Barrel distortion (NVG lens) ──────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js58 // ── Honeycomb pattern (fiber optic plate texture) ─────COMMENT
MEDIUMsrc/styles/surveillance.js73 // ── 7-segment digit renderer ──────────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js129 // ── Crosshair (thin, subtle NVG reticle) ──────────────COMMENT
MEDIUMsrc/styles/surveillance.js144 // ── Barrel distortion (NVG lens distortion) ─────────COMMENT
MEDIUMsrc/styles/surveillance.js170 // ── Intensifier tube resolution pixelation ────────────COMMENT
MEDIUMsrc/styles/surveillance.js177 // ── Luminance ───────────────────────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js180 // ── Auto-gain response ──────────────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js188 // ── Intensifier tube bloom (THE key NVG visual) ─────COMMENT
MEDIUMsrc/styles/surveillance.js207 // ── P43 phosphor green (530nm) ──────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js222 // ── Honeycomb fiber optic plate ─────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js226 // ── Scanlines (subtle, from the display) ────────────COMMENT
MEDIUMsrc/styles/surveillance.js237 // ── HUD Overlay ─────────────────────────────────────COMMENT
MEDIUMsrc/styles/surveillance.js270 // ── Final composite ─────────────────────────────────COMMENT
MEDIUMsrc/styles/retro.js29 // ── Hash for noise/randomness ─────────────────────────COMMENT
MEDIUMsrc/styles/retro.js67 // ── Barrel distortion (CRT monitor bulge) ───────────COMMENT
MEDIUMsrc/styles/retro.js94 // ── Pixelation: snap UV to grid ─────────────────────COMMENT
MEDIUMsrc/styles/retro.js102 // ── Bayer dithering before posterization ────────────COMMENT
MEDIUMsrc/styles/retro.js108 // ── Posterize: reduce color levels ──────────────────COMMENT
MEDIUMsrc/styles/retro.js112 // ── Slight saturation boost ─────────────────────────COMMENT
MEDIUMsrc/styles/retro.js116 // ── RGB shadow mask subpixel pattern ────────────────COMMENT
MEDIUMsrc/styles/retro.js128 // ── Block edge darkening ────────────────────────────COMMENT
MEDIUMsrc/styles/retro.js136 // ── Horizontal scanlines — rolling CRT refresh ──────COMMENT
MEDIUMsrc/styles/retro.js143 // ── Phosphor persistence / ghosting ─────────────────COMMENT
MEDIUMsrc/styles/retro.js155 // ── Glitch lines (rare horizontal bright bars) ──────COMMENT
MEDIUMsrc/styles/retro.js165 // ── Warm phosphor tint (P1 green-amber) ─────────────COMMENT
MEDIUMsrc/data/tomtomTiles.js112// ─── Daily budget accounting ───────────────────────────────COMMENT
MEDIUMsrc/data/cctvCards.js41// ─── Card geometry / style constants ───────────────────────────────────────COMMENT
MEDIUMsrc/data/cctvCards.js62// ─── Altitude scaling (field test finding 5, 2026-07-29) ──────────────COMMENT
MEDIUMsrc/data/cctvCards.js74// ─── Frame-fetch pacing (field test finding 3, 2026-07-29) ────────────COMMENT
MEDIUMsrc/data/cctvCards.js98// ─── Pure helpers (exported for unit tests — no Cesium, no DOM) ────────────COMMENT
MEDIUMsrc/data/dataCredits.js29 // ── Live sources ────────────────────────────────────────────────COMMENT
MEDIUMsrc/data/dataCredits.js148 // ── Bundled snapshots ───────────────────────────────────────────COMMENT
MEDIUMsrc/data/traffic.js115// ─── Jam-viz prototype (live mode only — see 2026-07-21 design doc) ────────COMMENT
MEDIUMsrc/data/traffic.js148// ─── Module State ──────────────────────────────────────────COMMENT
MEDIUMsrc/data/traffic.js428// ─── Overpass API ──────────────────────────────────────────COMMENT
MEDIUMsrc/data/traffic.js611// ─── Road Length Estimation ────────────────────────────────COMMENT
MEDIUMsrc/data/traffic.js634// ─── Dot Spawning ──────────────────────────────────────────COMMENT
6 more matches not shown…
Over-Commented Block82 hits · 78 pts
SeverityFileLineSnippetContext
LOWvite.config.js81/** @type {number} Epoch-ms when the response was cached. */COMMENT
LOWvite.config.js5141 'When a request requires a tool call, do not speak in the same response as the tool call. Call the tool firsCOMMENT
LOWstyle.css6661 visibility: visible;COMMENT
LOWstyle.css6681#scene-panel.collapsed .scene-shot-list,COMMENT
LOWstyle.css6701#radio-panel.collapsed .panel-title,COMMENT
LOWstyle.css6941 #right-context-rail #cctv-panel.collapsed,COMMENT
LOWscripts/dev-fresh.sh1#!/usr/bin/env bashCOMMENT
LOWsrc/ui.js4121 // Focus inside the tray defers the unpinned auto-dismiss, but only for theCOMMENT
LOWsrc/mapStackChips.js1// MAP STACK source chips — the always-visible replacement for the `<select>`COMMENT
LOWsrc/contactsDetectionPolicy.js1// src/contactsDetectionPolicy.js — Contacts-scoped detection policy.COMMENT
LOWsrc/firstRunExperience.js1// First-run mission launcher.COMMENT
LOWsrc/firstRunExperience.js101 kind: 'globe',COMMENT
LOWsrc/firstRunExperience.js501 // AND THE BELT FOR THE COOPERATIVE HALF. A surface that owns this key marksCOMMENT
LOWsrc/main.js121 webgl: {COMMENT
LOWsrc/mapStackController.js221 this.viewer.scene.globe.show = false;COMMENT
LOWsrc/sharelink.js201 // `ko`, and such a link was authored when 5 was what its author saw. EveryCOMMENT
LOWsrc/scenes/scenePolicy.js1// src/scenes/scenePolicy.js — pure decisions for cinematic scene playback.COMMENT
LOWsrc/overlays/worldOverlay.js1661 // a HARD VETO for chrome that composites below it.COMMENT
LOWsrc/annotations/screenAnnotationRenderer.js461 // the tracked entity's screen footprint is faded toward FULLY HIDDEN (target 0, not aCOMMENT
LOWsrc/annotations/annotationEngine.js21let _seq = 0;COMMENT
LOWsrc/annotations/annotationEngine.js261 // annotations now accumulate by default — so without this, "Presidio" / "Marina"COMMENT
LOWsrc/annotations/annotationEngine.js641 for (const ex of annotations.values()) {COMMENT
LOWsrc/annotations/annotationResolver.js221 }COMMENT
LOWsrc/annotations/annotationResolver.js261 // Thompson-Austin bug, field test 7). A POI's canonical name can be a bare street number,COMMENT
LOWsrc/annotations/annotationResolver.js301 // curated region (exact/alias match, no fuzzy stealing — "Zilker Park"COMMENT
LOWsrc/annotations/annotationResolver.js341 fp = await fetchAdminArea(lat, lon, matchName, scope, signal);COMMENT
LOWsrc/annotations/annotationResolver.js381 }COMMENT
LOWsrc/annotations/annotationResolver.js401 // real enclosing polygon (e.g. "Capitol Square", leisure=park) IS in OSM but only surfaces via aCOMMENT
LOWsrc/voice/gevRealtime.js1101 // its results could never be sent back anyway (the data channel is closed).COMMENT
LOWsrc/voice/gevActions.js3401 if (viewportScoped && result.coverage) {COMMENT
LOWsrc/data/satellites.js881 selectTrackedSubjectContext(metadata);COMMENT
LOWsrc/data/meshFloorSampler.js1// src/data/meshFloorSampler.js — rendered-surface (mesh) floor samplingCOMMENT
LOWsrc/data/meshFloorSampler.js141 // waiting costs one poll, not correctness.COMMENT
LOWsrc/data/geoid.js1// src/data/geoid.js — bundled EGM96 geoid-undulation lookup.COMMENT
LOWsrc/data/detection.js1081 const sampledCount = objects.length;COMMENT
LOWsrc/data/detection.js1121 // VACUOUSLY complete — settle it here rather than carrying the dirty flagCOMMENT
LOWsrc/data/renderAltitude.js1// src/data/renderAltitude.js — pure priority-chain helper for aircraft renderCOMMENT
LOWsrc/data/flights.js101const MIL_TINT = Cesium.Color.fromCssColorString('#FFB800');COMMENT
LOWsrc/data/flights.js601const MISSING_POLL_LIMIT = 3;COMMENT
LOWsrc/data/flights.js661 // contacts now ride the normal MISSING_POLL_LIMIT grace and keep theirCOMMENT
LOWsrc/data/flights.js861// requested this session are enqueued NEAREST-TO-CAMERA FIRST, bounded by:COMMENT
LOWsrc/data/flights.js1161 // Warm-up: renderTime predates ALL history (freshly seen / just-started-trackingCOMMENT
LOWsrc/data/flights.js2101 const floor = cachedGroundFloor(cell.lat, cell.lon);COMMENT
LOWsrc/data/flights.js2721 // The dead-reckoned point drifts away from the fix whose cell supplied theCOMMENT
LOWsrc/data/flights.js2861 * Build a public descriptor for one aircraft using its best current positionCOMMENT
LOWsrc/data/flights.js2981 }COMMENT
LOWsrc/data/flights.js3081 // sits ON the surface when the floor is known.COMMENT
LOWsrc/data/flights.js3561 // Dead-reckoning position property — smooth continuous motion between API updates.COMMENT
LOWsrc/data/flights.js4221 // aircraft it still positions — hold last-known-good instead ofCOMMENT
LOWsrc/data/flights.js4241 let geoidN = _geoidNCache.get(icao24);COMMENT
LOWsrc/data/flights.js4261 // (warmed by last poll's batch; aprons are flat across adjacentCOMMENT
LOWsrc/data/flights.js4301 geoAltM: geoAltitudeM,COMMENT
LOWsrc/data/flights.js4321 } else if (Number.isFinite(prevMeta?.renderAltitudeM)) {COMMENT
LOWsrc/data/flights.js4581 // through. Add those too, so the display clamp has data where the contactCOMMENT
LOWsrc/data/flights.js5281 _clickHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);COMMENT
LOWsrc/data/cctv.js141// re-fill a 1080p canvas on every frame while a feed image is still loading.COMMENT
LOWsrc/data/cctv.js321// Calibration ADJUST mode (viewshed/gizmo design §3c): while true, the activeCOMMENT
LOWsrc/data/cctv.js3721 // the range clamp lands in the same rewrite. A FIRST-EVER activation (noCOMMENT
LOWsrc/data/cctv.js4261 coverageEntities: [],COMMENT
LOWsrc/data/neighborhoodPolygons.js141 // Old/colloquial names whose DataSF taxonomy equivalent has a longer nameCOMMENT
22 more matches not shown…
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMsrc/orbit.js41 // Start from the camera's current heading for seamless transitionCOMMENT
MEDIUMsrc/main.js294 // GPU. Holder/data state is untouched, so return is seamless: restoreCOMMENT
MEDIUMsrc/data/cctvLod.js303 // robust distance scale or consume a bounded ambient-card slot.COMMENT