{"version":3,"sources":["webpack:///./node_modules/react-reconciler/cjs/react-reconciler.production.min.js","webpack:///./src/ThreeD/IEimages.js","webpack:///./src/ThreeD/components/particles.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./src/ThreeD/hooks/useImage.js","webpack:///./src/ThreeD/shaders/cloud.vert","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./src/ThreeD/components/terrain/data/terrain1.jpg","webpack:///./src/ThreeD/components/terrain/terrain.js","webpack:///./src/ThreeD/components/particle_effects.js","webpack:///./src/ThreeD/components/foam_new/foam_new.js","webpack:///./src/ThreeD/components/terrain/bufferset.js","webpack:///./src/ThreeD/components/terrain/terramap.js","webpack:///./src/images/soil.jpg","webpack:///./src/ThreeD/components/terrain/player.js","webpack:///./src/images/what.jpg","webpack:///./src/ThreeD/components/terrain/data/height_5.jpg","webpack:///./src/components/DNAloader.js","webpack:///./src/actions/detect-gpu.esm.js","webpack:///./src/ThreeD/components/terrain/world.js","webpack:///./src/images/concrete.jpg","webpack:///./src/images/social_default.jpg","webpack:///./node_modules/react-promise-suspense/node_modules/fast-deep-equal/index.js","webpack:///./src/ThreeD/threed.js","webpack:///./src/images/intro.jpg","webpack:///./src/ThreeD/components/Canvas/Sphere/index.js","webpack:///./node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/react-three-fiber/node_modules/scheduler/index.js","webpack:///./src/ThreeD/shaders/waterpass.frag","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./src/ThreeD/components/Canvas/Environment/Background/index.js","webpack:///./src/ThreeD/shaders/cloud.frag","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/react-promise-suspense/build/index.js","webpack:///./src/ThreeD/components/terrain/water.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./src/ThreeD/components/terrain/data/oVihm.jpg","webpack:///./src/ThreeD/components/terrain/loader.js","webpack:///./src/ThreeD/components/foam_new/assets/233.jpg","webpack:///./node_modules/three/examples/jsm/shaders/CopyShader.js","webpack:///./node_modules/three/examples/jsm/postprocessing/ShaderPass.js","webpack:///./node_modules/three/examples/jsm/postprocessing/MaskPass.js","webpack:///./node_modules/three/examples/jsm/postprocessing/EffectComposer.js","webpack:///./node_modules/three/examples/jsm/postprocessing/RenderPass.js","webpack:///./node_modules/three/examples/jsm/shaders/AfterimageShader.js","webpack:///./node_modules/three/examples/jsm/postprocessing/AfterimagePass.js","webpack:///./node_modules/three/examples/jsm/shaders/FXAAShader.js","webpack:///./node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js","webpack:///./node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js","webpack:///./src/ThreeD/components/water.js","webpack:///./src/ThreeD/images/foam/foam_diffuse.jpg","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/three/examples/jsm/postprocessing/Pass.js","webpack:///./src/images/identify.jpg","webpack:///./src/images/where.jpg","webpack:///./src/ThreeD/components/terrain/vec.js","webpack:///./node_modules/gsap/ScrollTrigger.js","webpack:///./src/ThreeD/hooks/index.js","webpack:///./node_modules/@react-three/drei/useTexture.js","webpack:///./node_modules/@react-three/drei/useNormalTexture.js","webpack:///./src/ThreeD/components/concrete.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./src/ThreeD/hooks/useTexture.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./src/ThreeD/components/foam_new/FresnelShader.js","webpack:///./src/ThreeD/components/terrain/shader/terrain.frag.glsl","webpack:///./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack:///./node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","webpack:///./node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/element.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/global.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","webpack:///./node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/process.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","webpack:///./node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/scheduler.js","webpack:///./node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","webpack:///./node_modules/@juggle/resize-observer/lib/ResizeObservation.js","webpack:///./node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","webpack:///./node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","webpack:///./node_modules/@juggle/resize-observer/lib/ResizeObserver.js","webpack:///./node_modules/react-merge-refs/dist/react-merge-refs.esm.js","webpack:///./node_modules/react-three-fiber/web.js","webpack:///./src/ThreeD/components/waterpass.js","webpack:///./node_modules/react-reconciler/index.js","webpack:///./src/ThreeD/images/foam/foam_normal.jpg","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./src/ThreeD/components/terrain/shader/water.frag.glsl","webpack:///./node_modules/react-three-fiber/node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/react-intersection-observer/react-intersection-observer.m.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./src/ThreeD/shaders/water.vert","webpack:///./src/images/water.jpg","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./src/ThreeD/components/terrain/data/skyenv.jpg","webpack:///./src/ThreeD/components/terrain/data/sky2env.jpg","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/construct.js","webpack:///./src/ThreeD/components/terrain/data/heightmap.jpg","webpack:///./node_modules/@babel/runtime/helpers/esm/get.js","webpack:///./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack:///./src/ThreeD/data/index.js","webpack:///./src/ThreeD/shaders/waterpass.vert","webpack:///./src/scroll/sectionHeader.js","webpack:///./node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./src/ThreeD/components/foam_new/assets/foam_bump.jpg","webpack:///./src/ThreeD/components/terrain/heightfield.js","webpack:///./src/ThreeD/components/terrain/terrain_launcher.js","webpack:///./src/ThreeD/components/terrain/grass.js","webpack:///./src/ThreeD/components/terrain/data/terrain2.jpg","webpack:///./src/ThreeD/components/foam_new/assets/foam_normal.jpg","webpack:///./src/ThreeD/components/Canvas/Camera/index.js","webpack:///./src/ThreeD/components/terrain/data/height_3.jpg","webpack:///./node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./src/images/foam.jpg","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./src/ThreeD/images/clouds/2.jpg","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./src/ThreeD/images/clouds/1.jpg","webpack:///./src/ThreeD/shaders/FresnelShader.js","webpack:///./src/ThreeD/images/pfas_logo.png","webpack:///./src/ThreeD/components/terrain/data/grass.jpg","webpack:///./node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./src/images/why.jpg","webpack:///./src/ThreeD/components/terrain/data/skydome.jpg","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/react-use-measure/dist/web.js","webpack:///./src/ThreeD/components/terrain/shader/terrain.vert.glsl","webpack:///./src/ThreeD/components/terrain/data/height_4.jpg","webpack:///./src/ThreeD/components/terrain/shader/grass.vert.glsl","webpack:///./src/ThreeD/components/foam_new/assets/foam_diffuse.jpg","webpack:///./src/ThreeD/components/Canvas/index.js","webpack:///./src/ThreeD/components/terrain/data/sky2.jpg","webpack:///./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack:///./src/ThreeD/images/Concrete.jpg","webpack:///./src/ThreeD/components/terrain/gmath.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./src/ThreeD/components/terrain/data/noise.jpg","webpack:///./src/ThreeD/shaders/default.vert","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/three/examples/jsm/loaders/GLTFLoader.js","webpack:///./node_modules/three/examples/jsm/loaders/DRACOLoader.js","webpack:///./src/ThreeD/helpers/loadingManager.js","webpack:///./src/ThreeD/shaders/environment.frag","webpack:///./src/ThreeD/shaders/levels.glsl","webpack:///./src/ThreeD/shaders/parallaxshader.js","webpack:///./node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/three/examples/jsm/controls/OrbitControls.js","webpack:///./src/ThreeD/components/Canvas/Camera/Controls.js","webpack:///./node_modules/react-reconciler/node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/debounce/index.js","webpack:///./node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./src/ThreeD/hooks/useRawData.js","webpack:///./src/ThreeD/components/Canvas/Environment/index.js","webpack:///./src/ThreeD/components/terrain/simplex.js","webpack:///./src/ThreeD/components/foam_new/assets/diamond.glb","webpack:///./node_modules/react-reconciler/node_modules/scheduler/index.js","webpack:///./src/ThreeD/components/terrain/shader/water.vert.glsl","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./src/ThreeD/components/Canvas/Environment/Cloud/index.js","webpack:///./src/ThreeD/components/terrain/data/height_2.jpg","webpack:///./src/ThreeD/threedMicro.js","webpack:///./src/ThreeD/images/foam/foam_bump.jpg","webpack:///./src/components/seo.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/ThreeD/components/terrain/skydome.js","webpack:///./src/ThreeD/components/terrain/shader/grass.frag.glsl","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/tiny-emitter/index.js","webpack:///./src/ThreeD sync ^\\.\\/.*$","webpack:///./src/ThreeD/images/pfas_logo.svg","webpack:///./src/ThreeD/hooks/useAssets.js","webpack:///./node_modules/gsap/gsap-core.js","webpack:///./node_modules/gsap/CSSPlugin.js","webpack:///./node_modules/gsap/index.js","webpack:///./src/images/contact.jpg"],"names":["module","exports","$$$reconciler","$$$hostConfig","aa","ba","m","n","a","b","c","arguments","length","encodeURIComponent","p","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","hasOwnProperty","ReactCurrentDispatcher","current","ReactCurrentBatchConfig","suspense","u","Symbol","ca","da","ea","fa","ha","ia","ja","ka","la","ma","na","oa","pa","qa","ra","iterator","sa","ua","displayName","name","$$typeof","render","type","_status","_result","va","alternate","effectTag","tag","wa","Error","xa","d","e","f","child","sibling","g","h","stateNode","ya","Aa","getPublicInstance","Ba","getRootHostContext","Ca","getChildHostContext","Da","prepareForCommit","Ea","resetAfterCommit","Fa","createInstance","Ga","appendInitialChild","Ha","finalizeInitialChildren","Ia","prepareUpdate","Ja","shouldSetTextContent","Ka","shouldDeprioritizeSubtree","La","createTextInstance","Ma","setTimeout","Na","clearTimeout","Oa","noTimeout","Pa","isPrimaryRenderer","Qa","supportsMutation","Ra","supportsPersistence","Sa","supportsHydration","Ta","appendChild","Ua","appendChildToContainer","Va","commitTextUpdate","Wa","commitMount","Xa","commitUpdate","Ya","insertBefore","Za","insertInContainerBefore","$a","removeChild","ab","removeChildFromContainer","bb","resetTextContent","cb","hideInstance","db","hideTextInstance","eb","unhideInstance","fb","unhideTextInstance","gb","cloneInstance","hb","createContainerChildSet","ib","appendChildToContainerChildSet","jb","finalizeContainerChildren","kb","replaceContainerChildren","lb","cloneHiddenInstance","mb","cloneHiddenTextInstance","nb","canHydrateInstance","ob","canHydrateTextInstance","pb","isSuspenseInstancePending","qb","isSuspenseInstanceFallback","rb","getNextHydratableSibling","sb","getFirstHydratableChild","tb","hydrateInstance","ub","hydrateTextInstance","vb","getNextHydratableInstanceAfterSuspenseInstance","wb","commitHydratedContainer","xb","commitHydratedSuspenseInstance","yb","zb","_debugOwner","_debugSource","fileName","replace","lineNumber","Ab","Bb","B","C","Cb","D","E","Db","Eb","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","F","childContextTypes","Fb","Gb","Hb","getChildContext","Ib","__reactInternalMemoizedMergedChildContext","Jb","Kb","unstable_runWithPriority","Lb","unstable_scheduleCallback","Mb","unstable_cancelCallback","Nb","unstable_requestPaint","Ob","unstable_now","Pb","unstable_getCurrentPriorityLevel","Qb","unstable_ImmediatePriority","Rb","unstable_UserBlockingPriority","Sb","unstable_NormalPriority","Tb","unstable_LowPriority","Ub","unstable_IdlePriority","Vb","Wb","unstable_shouldYield","Xb","Yb","Zb","$b","ac","G","bc","cc","dc","ec","fc","gc","push","H","slice","hc","jc","Object","is","kc","prototype","lc","keys","call","mc","defaultProps","nc","oc","pc","qc","rc","sc","_context","_currentValue","_currentValue2","tc","uc","childExpirationTime","vc","dependencies","firstContext","expirationTime","wc","I","context","observedBits","next","responders","xc","yc","updateQueue","baseState","memoizedState","baseQueue","shared","pending","effects","zc","Ac","suspenseConfig","payload","callback","Bc","Cc","Dc","k","l","q","r","w","z","Q","Ec","A","v","Gc","Hc","Ic","Jc","Component","refs","Kc","Oc","isMounted","_reactInternalFiber","enqueueSetState","Lc","Mc","Nc","enqueueReplaceState","enqueueForceUpdate","Pc","shouldComponentUpdate","isPureReactComponent","Qc","contextType","state","updater","Rc","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Sc","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Tc","Array","isArray","Uc","ref","_owner","_stringRef","Vc","toString","join","Wc","lastEffect","nextEffect","firstEffect","Map","key","set","index","Xc","Yc","mode","elementType","Zc","containerInfo","implementation","$c","children","ad","get","t","x","y","forEach","done","value","bd","cd","dd","J","ed","fd","gd","hd","id","jd","kd","K","ld","dehydrated","memoizedProps","revealOrder","md","responder","nd","L","od","M","N","O","pd","P","qd","rd","sd","td","ud","vd","wd","queue","xd","yd","zd","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Ad","Bd","Cd","bind","Dd","create","destroy","deps","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","concat","Md","Nd","Od","Pd","Qd","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useResponder","useDeferredValue","useTransition","Rd","Sd","Td","Ud","Vd","Wd","pendingProps","Xd","Yd","Zd","$d","ae","ReactCurrentOwner","R","be","ce","de","ee","compare","fe","ge","he","ie","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","je","getDerivedStateFromError","le","pendingContext","_se","te","ue","ve","me","retryTime","ne","fallback","unstable_avoidThisFallback","oe","pe","isBackwards","rendering","renderingStartTime","last","tail","tailExpiration","tailMode","qe","re","we","pendingChildren","xe","ye","S","ze","Ae","Be","Ce","T","De","U","Ee","Fe","Ge","source","stack","He","WeakSet","Set","Ie","console","error","Le","Ke","Me","__reactInternalSnapshotBeforeUpdate","Ne","Oe","Pe","Qe","Re","componentWillUnmount","Je","Se","Te","Ue","Ve","We","Xe","Ye","instance","Ze","$e","hydrate","af","bf","cf","df","has","add","then","ef","WeakMap","ff","element","gf","hf","jf","componentDidCatch","kf","this","componentStack","fg","lf","Math","ceil","mf","nf","W","X","uf","vf","wf","xf","yf","Y","Af","Bf","Cf","Df","Ef","Ff","Gf","timeoutMs","Hf","If","Z","Jf","lastExpiredTime","Kf","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Lf","timeout","Mf","Nf","Of","Pf","Qf","Rf","finishedWork","finishedExpirationTime","lastSuspendedTime","Sf","timeoutHandle","Tf","busyMinDurationMs","busyDelayMs","Uf","Xf","Yf","pingCache","ke","cg","$f","Fc","dg","bg","eg","gg","firstSuspendedTime","hg","ig","jg","kg","_ctor","ta","lg","_calculateChangedBits","unstable_observedBits","mg","og","isReactComponent","pg","qg","sg","tg","ug","vg","IsSomeRendererActing","wg","unstable_flushAllWithoutAsserting","xg","yg","random","setImmediate","MessageChannel","port1","onmessage","port2","postMessage","rg","zg","Ag","Bg","__proto__","createContainer","updateContainer","batchedEventUpdates","batchedUpdates","unbatchedUpdates","deferredUpdates","syncUpdates","discreteUpdates","flushDiscreteUpdates","Wf","flushControlled","flushSync","flushPassiveEffects","IsThisRendererActing","getPublicRootInstance","attemptSynchronousHydration","Vf","attemptUserBlockingHydration","attemptContinuousHydration","attemptHydrationAtCurrentPriority","findHostInstance","findHostInstanceWithWarning","findHostInstanceWithNoPortals","za","shouldSuspend","injectIntoDevTools","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","ng","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","act","Cg","$$$renderer","IEImages","sectionnumber","className","style","backgroundImage","Intro","Identify","What","Why","Where","Resolve","Contact","Swarm","count","mouse","mesh","dummy","THREE","particles","temp","i","factor","speed","xFactor","yFactor","zFactor","mx","my","useFrame","particle","cos","sin","s","max","position","scale","updateMatrix","setMatrixAt","matrix","instanceMatrix","needsUpdate","args","attach","color","Dolly","group","percentage","back","tll","gsap","timeline","undefined","fromTo","duration","progress","pause","clock","camera","Particles","scrollsection","fov","intensity","$export","$entries","entries","it","src","image","setImage","Image","onload","_classCallCheck","Constructor","TypeError","_iterableToArray","iter","from","Terrain","Vec3","Color","opts","xCellCount","floor","sqrt","yCellCount","cellSize","heightMapScale","xSize","ySize","createMesh","update","ix","iy","ox","oy","mat","material","uniforms","texs","textures","tex","wrapS","wrapT","anisotropy","htex","heightMap","vtxBufs","xcount","ycount","pos","Float32Array","uv","j","createVtxBuffers","idBuf","idSize","Uint16Array","Uint32Array","createIdBuffer","geo","addAttribute","setIndex","hscale","fragScript","transitionLow","transitionHigh","offset","uvOffset","map1","map2","fogColor","toArray","fogNear","fogFar","grassFogFar","vertexShader","vertScript","fragmentShader","frustumCulled","_load","SMAAImageLoader","load","Post","useThree","gl","scene","size","smaa","useLoader","composer","EffectComposer","addPass","RenderPass","smaaEffect","SMAAEffect","colorEdgesMaterial","setEdgeDetectionThreshold","normalPass","NormalPass","ssaoEffect","SSAOEffect","renderTarget","texture","blendFunction","BlendFunction","MULTIPLY","samples","rings","distanceThreshold","distanceFalloff","rangeThreshold","rangeFalloff","luminanceInfluence","radius","bias","effectPass","EffectPass","renderToScreen","setSize","width","height","_","delta","Foam","animate","frameId","requestAnimationFrame","timer","Date","now","il","spheres","sphere","renderer","stop","cancelAnimationFrame","resize","window","displayWidth","innerWidth","displayHeight","innerHeight","mount","aspect","updateProjectionMatrix","document","setPixelRatio","devicePixelRatio","urls","background","textureCube","geometry","shader","FresnelShader","clone","addEventListener","domElement","removeEventListener","POSITION","NORMAL","COLOR","UV","ALL","BufferSet","numVtx","numId","normal","vertexCount","indexCount","createTexture","lightDir","imgWind","canvas","createElement","canvasWidth","xCount","canvasHeight","yCount","ctx","getContext","imgData","getImageData","buf","vnorms","vtxNormals","tStart","iSrc","iDst","round","heights","maxHeight","ni","light","dot","computeShade","computeData","data","naturalWidth","naturalHeight","ctxSrc","drawImage","windData","addWindData","putImageData","_v","Vec2","hdir","normalize","zstep","qx","pmod","qy","sampleHeight","AnimationSteps","PI","yaw","pitch","to","From","To","pitchDiff","yawDiff","xDiff","yDiff","zDiff","Player","heightField","waterHeight","curT","vel","dir","yawVel","pitchVel","roll","rollVel","floatHeight","_a","_d","_p1","_p2","_p3","diff","abs","autoPos","dt","scrollper","sectionname","time","ft","copy","yaw0","pitch0","groundHeight","HeightFieldFunctions","heightAt","h1","h2","h3","minHeight","floatVel","dyaw","dpitch","updateAuto","scrollpercent","updateAnimation","getMode","nextMode","DNALoader","class","Promise","o","throw","apply","toLowerCase","navigator","userAgent","platform","maxTouchPoints","test","MSStream","isIpad","isMobile","isSafari12","createShader","createProgram","shaderSource","compileShader","attachShader","linkProgram","detachShader","deleteShader","useProgram","createBuffer","bindBuffer","bufferData","getAttribLocation","vertexAttribPointer","enableVertexAttribArray","clearColor","clear","viewport","drawArrays","Uint8Array","readPixels","deleteProgram","deleteBuffer","801621810","8016218135","charCodeAt","LIGHT_DIR","FOG_COLOR","GRASS_COLOR","WATER_COLOR","GLARE_YAW","GLARE_COLOR","World","loading","HInfo","CONFIGS","blades","depth","antialias","GPUTier","cfgId","cfg","numGrassBlades","grassPatchRadius","assets","doFrame","renderScene","updateGlare","onAssetsLoaded","setup","desktopTiers","mobileTiers","override","Boolean","screenSize","screen","loadBenchmarks","glContext","failIfMajorPerformanceCaveat","benchmarksURL","tier","device","fps","gpu","alpha","powerPreference","stencil","getExtension","getParameter","UNMASKED_RENDERER_WEBGL","all","map","fetch","json","shift","indexOf","match","filter","sort","Number","MAX_VALUE","response","log","loadAssets","catch","Loader","text","url","images","require","onAssetsProgress","onAssetsError","setState","_hinfo","clearAlpha","fogDist","grassFogDist","meshes","terrain","grass","sky","water","sunFlare","fade","fog","to24bit","rotation","order","up","camHolder","hfImg","hfCellSize","Heightfield","terraMap","terramap","numBlades","grassColor","windIntensity","renderOrder","terra","skydome","VIEW_DEPTH","envMap","waterLevel","HEIGHTFIELD_HEIGHT","waterColor","transparent","opacity","depthTest","depthWrite","blending","visible","player","prevT","simT","drawPos","scrollpercentage","ppos","pdir","pyaw","ppitch","proll","infoAt","dy","difAngle","dp","sunVisAngle","glare","pow","keyList","hasProp","equal","arrA","arrB","dateA","dateB","getTime","regexpA","RegExp","regexpB","includes","TweenMax","ThreeD","isIE","ConcreteImg","WaterImg","FoamImg","SoilImg","positions","Sphere","sphereMeshes","el","$parseInt","parseInt","_unsupportedIterableToArray","minLen","constructor","colors","colorSteps","useRawData","uTopColor","top","uBottomColor","bottom","uSpot1Color","spot1","uSpot1Position","uSpot2Color","spot2","uSpot2Position","sign","__values","__read","ar","__spread","deepEqual","promiseCaches","promise","inputs","lifespan","e_1","promiseCaches_1","promiseCaches_1_1","promiseCache_1","e_1_1","promiseCache","splice","_time","minFilter","magFilter","generateMipmaps","viewPos","vp","_arrayWithHoles","arr","isObject","meta","onFreeze","$freeze","Assets","isLoading","totalToLoad","numLoaded","numFailed","success_cb","progress_cb","error_cb","done_cb","loadText","req","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","status","responseText","doProgress","doError","open","send","loadImage","img","onerror","tryDone","ok","assetList","success","getAssets","CopyShader","textureID","Pass","defines","assign","fsQuad","FullScreenQuad","writeBuffer","readBuffer","setRenderTarget","autoClearColor","autoClearDepth","autoClearStencil","needsSwap","inverse","writeValue","clearValue","buffers","setMask","setLocked","setTest","setOp","REPLACE","setFunc","ALWAYS","setClear","EQUAL","KEEP","parameters","format","getSize","_pixelRatio","getPixelRatio","_width","_height","renderTarget1","renderTarget2","passes","copyPass","swapBuffers","tmp","pass","insertPass","isLastEnabledPass","passIndex","enabled","deltaTime","getDelta","currentRenderTarget","getRenderTarget","maskActive","NOTEQUAL","reset","dispose","effectiveWidth","effectiveHeight","pixelRatio","_mesh","defineProperty","overrideMaterial","clearDepth","oldClearColor","oldClearAlpha","oldOverrideMaterial","oldAutoClear","autoClear","getClearColor","getHex","getClearAlpha","setClearColor","AfterimageShader","damp","textureComp","textureOld","shaderMaterial","compFsQuad","copyFsQuad","FXAAShader","LuminosityHighPassShader","shaderID","resolution","strength","threshold","pars","renderTargetsHorizontal","renderTargetsVertical","nMips","resx","resy","renderTargetBright","renderTargetHorizonal","renderTargetVertical","highPassShader","highPassUniforms","materialHighPassFilter","separableBlurMaterials","kernelSizeArray","getSeperableBlurMaterial","compositeMaterial","getCompositeMaterial","bloomTintColors","copyShader","copyUniforms","materialCopy","basic","inputRenderTarget","BlurDirectionX","BlurDirectionY","kernelRadius","distance","penumbra","Effect","attachArray","uniforms-damp-value","uniforms-resolution-value","getElapsedTime","extend","ShaderPass","WaterPass","AfterimagePass","UnrealBloomPass","onMouseMove","clientX","clientY","init","byteOffset","out","setLength","dist","v0","v1","dx","det","rotate","rotateCS","reflect","dz","cross","ax","ay","az","bx","by","bz","_coreInitted","_win","_doc","_docEl","_body","_root","_resizeDelay","_raf","_request","_toArray","_clamp","_time2","_syncInterval","_refreshing","_pointerIsDown","_transformProp","_i","_prevWidth","_prevHeight","_autoRefresh","_sort","_limitCallbacks","_creatingMedia","_lastMediaTick","_startup","_proxies","_scrollers","_getTime","_time1","_lastScrollTime","_enabled","_passThrough","_windowExists","_getGSAP","registerPlugin","_isViewport","_getProxyProp","property","_getScrollFunc","_ref","_vertical","_getBoundsFunc","_winOffsets","_getBounds","_maxScroll","_ref3","d2","_iterateAutoRefresh","func","events","_isString","_isFunction","_isNumber","_isObject","_callIfFunc","_combineFunc","f1","f2","result1","result2","_abs","_padding","_px","_horizontal","p2","os","os2","scrollTo","pageXOffset","op","pageYOffset","_getComputedStyle","getComputedStyle","_setDefaults","obj","defaults","withoutTransforms","tween","xPercent","yPercent","rotationX","rotationY","skewX","skewY","bounds","getBoundingClientRect","kill","_getSize","_ref4","_multiListener","types","split","_addListener","passive","_removeListener","_markerDefaults","startColor","endColor","indent","fontSize","fontWeight","_defaults","toggleActions","anticipatePin","_keywords","left","center","right","_offsetToPx","eqIndex","relative","charAt","parseFloat","substr","_createMarker","container","direction","_ref5","matchWidthEl","useFixedPosition","isScroller","parent","isStart","css","offsetWidth","_isStart","setAttribute","cssText","innerText","_offset","_positionMarker","marker","start","flipped","vars","display","side","oppositeSide","_isFlipped","_triggers","_ids","_sync","_updateAll","_onScroll","_dispatch","_onResize","restart","_listeners","_emptyArray","_media","_onMediaChange","tick","ticker","frame","matches","_revertAll","matchMedia","_revertRecorded","_refreshAll","_softRefresh","ScrollTrigger","_savedStyles","media","uncache","trigger","scroll","rec","revert","force","skipRevert","refreshInits","refresh","result","_lastScroll","_direction","recordVelocity","_propNamesToCopy","_margin","_stateProps","_swapPinIn","pin","spacer","cs","spacerState","parentNode","spacerStyle","pinStyle","overflow","boxSizing","_setState","_capsExp","removeProperty","_getState","_parsePosition","scrollerSize","markerScroller","self","scrollerBounds","borderWidth","scrollerMax","localOffset","globalOffset","offsets","_prefixExp","_reparent","_stOrig","core","getCache","_getTweenCreator","scroller","lastScroll1","lastScroll2","getScroll","prop","getTween","initialValue","change1","change2","onComplete","modifiers","ratio","animation","register","warn","tweenTo","pinCache","snapFunc","isReverted","scroll1","scroll2","end","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","change","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","markerEndSetter","snap1","snap2","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevProgress","prevScroll","prevAnimProgress","nodeType","horizontal","_vars","onUpdate","toggleClass","onToggle","onRefresh","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","once","snap","pinReparent","isToggle","scrollerCache","isViewport","pinType","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","_ref2","_getSizeFunc","getScrollerOffsets","_getOffsetsFunc","tweenScroll","lazy","_initted","immediateRender","scrollTrigger","ease","snapTo","scrollBehavior","labels","utils","_getLabels","min","delayedCall","delay","getVelocity","totalProgress","velocity","naturalEnd","endValue","endScroll","isActive","targets","force3D","getProperty","quickSetter","prevRefreshing","_swapPinOut","soft","invalidate","isVertical","curTrigger","curPin","oppositeScroll","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","parsedStart","triggerIndex","_pinPush","omitOffsets","_copyState","_pinOffset","toggleState","stateChanged","toggled","clipped","classList","enable","disable","allowAnimation","documentElement","body","clamp","globals","bodyStyle","border","borderTop","setInterval","checkPrefix","hidden","config","limitCallbacks","ms","syncInterval","clearInterval","autoRefreshEvents","scrollerProxy","target","unshift","mq","addListener","clearMatchMedia","query","version","saveStyles","safe","maxScroll","getScrollFunc","getById","getAll","isScrolling","batch","varsCopy","interval","batchMax","proxyCallback","elements","triggers","refreshPriority","useTexture","preload","normalsList","NORMAL_ROOT","DEFAULT_NORMAL","Box","setHover","active","setActive","src1","useAssets","t1","normalTexture","_ref$repeat","repeat","_ref$anisotropy","_ref$offset","numTot","imageName","useNormalTexture","onClick","onPointerOver","onPointerOut","roughness","metalness","normalScale","normalMap","mapScale","Concrete","Canvas","castShadow","ABV","DataView","_inherits","subClass","superClass","writable","configurable","Texture","setTexture","loadTexture","_toConsumableArray","arrayLikeToArray","iterableToArray","unsupportedIterableToArray","EPSILON","arrayWithHoles","nonIterableRest","ResizeObserverBoxOptions","resizeObservers","msg","DOMRectReadOnly","freeze","toJSON","fromRect","rectangle","isSVG","SVGElement","isHidden","getBBox","_b","offsetHeight","getClientRects","isElement","scope","ownerDocument","defaultView","Element","global","cache","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","inlineSize","blockSize","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","forceRecalculation","svg","ownerSVGElement","removePadding","writingMode","canScrollVertically","overflowY","canScrollHorizontally","overflowX","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","horizontalPadding","verticalPadding","horizontalBorderArea","borderLeftWidth","verticalBorderArea","horizontalScrollbarThickness","clientHeight","verticalScrollbarThickness","clientWidth","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","node","Infinity","shallowestDepth","ro","activeTargets","ot","entry","targetDepth","lastReportedSize","observer","callbacks_1","skippedTargets","observationTargets","event","some","ErrorEvent","message","createEvent","initEvent","dispatchEvent","queueMicroTask","toggle_1","el_1","createTextNode","MutationObserver","observe","characterData","textContent","watching","observerConfig","attributes","childList","subtree","scheduled","Scheduler","_this","stopped","listener","schedule","run","until","elementsHaveResized","disconnect","updateCount","ResizeObservation","CONTENT_BOX","tagName","isReplacedElement","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","ResizeObserverController","connect","detail","options","firstObservation","box","unobserve","lastObservation","ResizeObserver","_createForOfIteratorHelper","allowArrayLike","_arrayLikeToArray","_e","err","normalCompletion","didErr","step","_e2","len","arr2","_toPropertyKey","arg","input","hint","prim","toPrimitive","res","String","_toPrimitive","roots","emptyObject","fun","str","num","und","equ","globalEffects","globalAfterEffects","globalTailEffects","renderGl","timestamp","runGlobalEffects","effect","subscribers","sub","frames","invalidateFrameloop","manual","running","renderLoop","root","__state","ready","_invalidate","vr","catalogue","objects","applyProps","newProps","oldProps","accumulative","__container","sameProps","handlers","startsWith","leftOvers","toFilter","__instance","filteredProps","reduce","acc","_instance$__container","_entries$reverse2","reverse","_target","isColorManagement","colorManagement","convertSRGBToLinear","encoding","invalidateInstance","raycast","__handlers","__interaction","updateInstance","hostContext","internalInstanceHandle","_ref$args","toUpperCase","object","fn","__objects","parentInstance","isObject3D","attachObject","beforeChild","restSiblings","removeRecursive","array","remove","switchInstance","fiber","newInstance","Renderer","warnsIfNotActing","scheduleTimeout","cancelTimeout","updatePayload","_newProps$args","argsNew","restNew","_oldProps$args","argsOld","restOld","_ref6","isOrthographicCamera","def","makeId","eventObject","uuid","bundleType","rendererPackageName","stateContext","orthographic","raycaster","_props$vr","_props$concurrent","concurrent","_props$shadowMap","shadowMap","_props$sRGB","sRGB","_props$colorManagemen","_props$invalidateFram","_props$updateDefaultC","updateDefaultCamera","_props$noEvents","noEvents","onCreated","onPointerMissed","_useState","_useState2","setReady","_useState3","_useState5","ray","defaultRaycaster","_useState7","defaultScene","_useState9","cam","lookAt","_useState10","defaultCam","_setDefaultCamera","_useState11","initialClick","initialHits","pointer","captured","subscribe","priority","setDefaultCamera","intersect","prepare","handlePointerMove","distanceTo","tan","updateMatrixWorld","prepareRay","_ref7","_state$current$size","setFromCamera","seen","hits","eventsObjects","intersects","intersectObjects","item","sharedState","_step","_iterator","_intersect","calculateDistance","hovered","handleIntersects","intersections","find","hit","_step2","unprojectedPoint","unproject","releasePointerCapture","localState","_iterator2","_loop","setPointerCapture","raycastEvent","stopPropagation","cap","currentTarget","sourceEvent","values","handlePointerCancel","emit","pointerMove","pointerOver","pointerEnter","pointerOut","pointerLeave","hoveredItem","handlePointer","onContextMenu","onDoubleClick","onWheel","onPointerDown","onPointerUp","onPointerLeave","onPointerMove","onGotPointerCaptureLegacy","onLostPointerCapture","_state$current","toneMapping","outputEncoding","activate","newRoot","Provider","xr","setAnimationLoop","forceContextLoss","renderPriority","_useContext","unsubscribe","blackList","Proto","extensions","loader","results","urlArray","__$","nodes","materials","traverse","prune","reducedProps","defaultStyles","Content","setEvents","_useState15","memo","preRender","restSpread","containerRef","_useState17","_useState18","_useMeasure","debounce","polyfill","_useMeasure2","readyFlag","canvasRef","params","gl2","WaterShader","byp","dt_size","UniformsUtils","Vector2","ShaderMaterial","OrthographicCamera","Scene","quad","Mesh","PlaneBufferGeometry","_slicedToArray","_arr","_n","_s","unstable_forceFrameRate","performance","pop","sortIndex","V","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","_extends","ObserverMap","RootIds","rootId","optionsToId","_createObserver","IntersectionObserver","_elements$get","inView","isIntersecting","thresholds","intersectionRatio","trackVisibility","isVisible","createObserver","isPlainChildren","InView","_React$Component","_unobserveCb","handleNode","triggerOnce","skip","initialInView","observeNode","handleChange","onChange","_proto","prevProps","rootMargin","_this$props","_this$state","_this$props2","as","excluded","sourceKeys","_objectWithoutPropertiesLoose","$trim","trim","ws","hex","radix","string","_nonIterableRest","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Parent","Class","Function","setPrototypeOf","receiver","base","getPrototypeOf","desc","getOwnPropertyDescriptor","Reveal2","pagenav","pinspace","section","controller","title","scrollProgress","scrollref","fullview","setScrollPos","scrubspeed","anticipate","revealRef","TitleRef","React","createRef","TextRef","ScrollPos","tl","addLabel","percent","totalDuration","Title","escapeHtml","linkTarget","info","faceNormals","HeightfieldInternal","genFromImg","calcFaceNormals","wrap","hi","csz","normals","ih","px","py","getPlaneZ","_hi","z0","heightRange","calcVertexNormals","hxc","computeVertexNormal","vx","vy","fnorms","pct","vindex","BLADE_VERTS","shape","BLADE_SEGS","vc1","vc2","seg","initBladeIndices","patchRadius","nrand","initBladeOffsetVerts","noise","simplex","initBladeShapeVerts","initBladeIndexVerts","boundingSphere","toFixed","camDir","camPos","createHTML","isInteger","_getPrototypeOf","MAX_SAFE_INTEGER","trunc","useMeasure","debounce$1","scrollContainers","lastBounds","scrollDebounce","resizeDebounce","_useMemo","_state$current$elemen","areBoundsEqual","_useMemo2","forceRefresh","resizeChange","scrollChange","removeListeners","addListeners","scrollContainer","capture","findScrollContainers","useOnWindowScroll","useOnWindowResize","onWindowResize","onScroll","_window$getComputedSt","parentElement","every","_cache","Wrapper","enumerable","PI2","roundFrac","places","angle","atan2","a0","a1","x0","y0","x1","y1","_typeof","_possibleConstructorReturn","assertThisInitialized","isFinite","GLTFLoader","manager","dracoLoader","ddsLoader","ktx2Loader","pluginCallbacks","parser","GLTFMaterialsClearcoatExtension","GLTFTextureBasisUExtension","GLTFMaterialsTransmissionExtension","GLTFRegistry","removeAll","onLoad","onProgress","onError","resourcePath","path","extractUrlBase","itemStart","_onError","itemError","itemEnd","setPath","setResponseType","setRequestHeader","requestHeader","crossOrigin","setWithCredentials","parse","gltf","setDRACOLoader","setDDSLoader","setKTX2Loader","unregister","content","plugins","decodeText","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","JSON","asset","GLTFParser","fileLoader","plugin","extensionsUsed","extensionName","extensionsRequired","KHR_LIGHTS_PUNCTUAL","GLTFLightsExtension","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","MSFT_TEXTURE_DDS","GLTFTextureDDSExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","setPlugins","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_TRANSMISSION","KHR_TEXTURE_BASISU","extension","lightDefs","lights","loadLight","lightIndex","lightNode","lightDef","fromArray","range","spot","innerConeAngle","outerConeAngle","decay","resolve","getMaterialType","extendParams","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","materialIndex","extendMaterialParams","clearcoatFactor","clearcoat","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughness","clearcoatRoughnessTexture","clearcoatNormalTexture","clearcoatNormalScale","transmissionFactor","transmission","transmissionTexture","textureIndex","textureDef","loadTextureImage","BINARY_EXTENSION_CHUNK_TYPES","headerView","header","magic","getUint32","chunkView","chunkIndex","byteLength","chunkLength","chunkType","contentArray","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","specular","setHex","glossiness","specularMap","glossinessMap","_extraUniforms","onBeforeCompile","uniformName","defineProperties","USE_GLOSSINESSMAP","USE_ROUGHNESSMAP","metalnessMap","roughnessMap","setValues","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","emissive","glossinessFactor","specularFactor","specularGlossinessTexture","specGlossMapDef","createMaterial","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMapType","displacementMap","displacementScale","displacementBias","alphaMap","envMapIntensity","refractionRatio","GLTFCubicSplineInterpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","decodePrimitive","primitive","bufferViewIndex","bufferView","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","normalized","getDependency","decodeDracoFile","attribute","extendTexture","transform","texCoord","copySampleValue_","valueSize","beforeStart_","afterEnd_","interpolate_","i1","t0","stride","stride2","stride3","pp","ppp","offset1","offset0","s2","s3","s0","s1","p0","m0","p1","m1","WEBGL_CONSTANTS","5120","Int8Array","5121","5122","Int16Array","5123","5125","5126","WEBGL_FILTERS","9728","9729","9984","9985","9986","9987","WEBGL_WRAPPINGS","33071","33648","10497","WEBGL_TYPE_SIZES","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","weights","INTERPOLATION","CUBICSPLINE","LINEAR","STEP","ALPHA_MODES","resolveURL","addUnknownExtensionsToUserData","knownExtensions","objectDef","userData","gltfExtensions","assignExtrasToUserData","gltfDef","extras","updateMorphTargets","meshDef","morphTargetInfluences","targetNames","morphTargetDictionary","createAttributesKey","attributesKey","associations","primitiveCache","meshCache","uses","cameraCache","lightCache","createImageBitmap","textureLoader","setCrossOrigin","addPrimitiveAttributes","primitiveDef","assignAttributeAccessor","accessorIndex","accessor","gltfAttributeName","indices","maxDisplacement","vector","setX","setY","setZ","expandByVector","boundingBox","getCenter","computeBounds","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","morphNormals","morphAttributes","morphTargetsRelative","addMorphTargets","toTrianglesDrawMode","drawMode","getIndex","getAttribute","numberOfTriangles","newIndices","getX","newGeometry","_markDefs","getDependencies","scenes","animations","cameras","nodeDefs","skinDefs","skins","meshDefs","skinIndex","skinLength","joints","isBone","nodeIndex","nodeLength","nodeDef","_addNodeRef","skin","isSkinnedMesh","_getNodeRef","_invokeOne","_invokeAll","cacheKey","dependency","loadScene","loadNode","ext","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","bufferIndex","bufferDef","uri","reject","bufferViewDef","bufferViews","buffer","sparse","pendingBufferViews","bufferAttribute","itemSize","TypedArray","elementBytes","BYTES_PER_ELEMENT","itemBytes","byteStride","ibSlice","ibCacheKey","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setW","textureExtensions","getHandler","URL","webkitURL","sourceURI","isObjectURL","hasAlpha","mimeType","getUint8","blob","Blob","createObjectURL","isImageBitmapLoader","imageBitmap","revokeObjectURL","flipY","sampler","samplers","mapName","mapDef","gltfReference","assignFinalMaterial","useVertexTangents","tangent","useVertexColors","useFlatShading","useSkinning","useMorphTargets","useMorphNormals","isPoints","pointsMaterial","sizeAttenuation","isLine","lineMaterial","cachedMaterial","skinning","vertexTangents","vertexColors","flatShading","morphTargets","uv2","materialType","materialExtensions","sgExtension","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","doubleSided","alphaMode","alphaTest","alphaCutoff","occlusionTexture","emissiveFactor","emissiveTexture","loadGeometries","primitives","createDracoPrimitive","dracoExtension","geometryPromise","cached","meshIndex","geometries","skinWeight","normalizeSkinWeights","cameraIndex","cameraDef","radToDeg","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","channel","output","inputAccessors","outputAccessors","tracks","inputAccessor","outputAccessor","TypedKeyframeTrack","matrixAutoUpdate","targetName","interpolation","isMesh","outputArray","scaled","jl","track","createInterpolant","times","getValueSize","isInterpolantFactoryMethodGLTFCubicSpline","sanitizeNodeName","applyMatrix4","quaternion","buildNodeHierachy","nodeId","parentObject","pendingJoints","jointNodes","bones","boneInverses","jointNode","matrixWorld","sceneIndex","sceneDef","nodeIds","decoderPath","decoderConfig","decoderBinary","decoderPending","workerLimit","workerPool","workerNextTaskID","workerSourceURL","defaultAttributeIDs","defaultAttributeTypes","setDecoderPath","setDecoderConfig","setWorkerLimit","setVerbosity","setDrawMode","setSkipDequantization","taskConfig","attributeIDs","attributeTypes","useUniqueIDs","decodeGeometry","_this2","worker","taskKey","stringify","taskCache","cachedTask","taskID","taskCost","geometryPending","_getWorker","_worker","_callbacks","_createGeometry","_releaseTask","geometryData","_loadLibrary","responseType","_initDecoder","_this3","useJS","WebAssembly","librariesPending","libraries","jsContent","wasmBinary","DRACOWorker","substring","lastIndexOf","_this4","Worker","_taskCosts","_taskLoad","debug","terminate","decodeAttribute","draco","decoder","dracoGeometry","attributeType","dracoArray","numComponents","num_components","numValues","num_points","DracoFloat32Array","GetAttributeFloatForAllPoints","DracoInt8Array","GetAttributeInt8ForAllPoints","DracoInt16Array","GetAttributeInt16ForAllPoints","Int32Array","DracoInt32Array","GetAttributeInt32ForAllPoints","DracoUInt8Array","GetAttributeUInt8ForAllPoints","DracoUInt16Array","GetAttributeUInt16ForAllPoints","DracoUInt32Array","GetAttributeUInt32ForAllPoints","GetValue","onModuleLoaded","DracoDecoderModule","Decoder","decoderBuffer","DecoderBuffer","Init","decodingStatus","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","POINT_CLOUD","PointCloud","DecodeBufferToPointCloud","ptr","error_msg","attributeID","GetAttributeByUniqueId","GetAttributeId","GetAttribute","numFaces","num_faces","indexArray","GetFaceFromMesh","attr","releaseDecoderModule","getDecoderModule","loadingManager","LoadingManager","TextureLoader","gltfLoader","DRACOLoader","onLoadCallbacks","onProgressCallbacks","loaded","total","_onProgressCallbacks","RepeatWrapping","loadModelGLTF","resources","loadGLTF","modelSrc","diffuseSrc","normalSrc","aoSrc","diffuseMap","ParallaxShader","modes","none","steep","occlusion","relief","parallaxScale","parallaxMinLayers","parallaxMaxLayers","log2","LN2","quat","quatInverse","lastPosition","lastQuaternion","twoPI","minDistance","maxDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","LEFT","UP","RIGHT","BOTTOM","mouseButtons","ROTATE","MIDDLE","DOLLY","PAN","touches","ONE","TWO","DOLLY_PAN","target0","position0","zoom0","zoom","getPolarAngle","spherical","phi","getAzimuthalAngle","theta","saveState","changeEvent","STATE","NONE","setFromUnitVectors","applyQuaternion","setFromVector3","rotateLeft","sphericalDelta","makeSafe","addScaledVector","panOffset","setFromSpherical","multiplyScalar","zoomChanged","distanceToSquared","EPS","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onKeyDown","startEvent","endEvent","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","rotateUp","panLeft","objectMatrix","setFromMatrixColumn","panUp","crossVectors","pan","deltaX","deltaY","isPerspectiveCamera","targetDistance","dollyOut","dollyScale","dollyIn","handleMouseDownRotate","handleMouseDownPan","handleTouchStartRotate","pageX","pageY","handleTouchStartPan","handleTouchStartDolly","handleTouchMoveRotate","subVectors","handleTouchMovePan","handleTouchMoveDolly","pointerType","mouseAction","preventDefault","focus","button","handleMouseDownDolly","ctrlKey","metaKey","shiftKey","onMouseDown","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","onMouseUp","handleMouseWheel","keyCode","handleKeyDown","handleTouchStartDollyPan","DOLLY_ROTATE","handleTouchStartDollyRotate","handleTouchMoveDollyPan","handleTouchMoveDollyRotate","tabIndex","OrbitControls","_defineProperty","_setPrototypeOf","wait","immediate","later","debounced","callNow","flush","uniformProps","Grad","dot2","dot3","F2","G2","perm","gradP","grad3","xin","yin","j1","x2","y2","gi0","gi1","gi2","t2","seed","scaleFactor1","timefactor1","strength1","scaleFactor2","timefactor2","strength2","src2","myUniforms","uTime","uTxtShape","uTxtCloudNoise","uFac1","uFac2","uTimeFactor1","uTimeFactor2","uDisplStrenght1","uDisplStrenght2","ShaderLib","sprite","vertex","fragment","SEO","description","lang","metaImage","site","metaDescription","siteMetadata","DefaultImg","htmlAttributes","titleTemplate","author","_defineProperties","descriptor","_createClass","protoProps","staticProps","lats","lngs","rotateX","rotateZ","weak","validate","on","off","evtArr","evts","liveEvents","TinyEmitter","webpackContext","webpackContextResolve","__webpack_require__","code","_assertThisInitialized","ReferenceError","_inheritsLoose","_globalTimeline","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","_id","_req","_self","_delta","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_tick","n1","easeOut","_config","autoSleep","nullTargetWarn","units","lineHeight","overwrite","_bigNum","_2PI","_HALF_PI","_gsID","_sqrt","_cos","_sin","_isUndefined","_isNotFalse","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_globals","_installScope","_install","_merge","_missingPlugin","_warn","suppress","_addGlobal","_emptyFunc","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","harnessPlugin","_gsap","harness","targetTest","GSCache","_getCache","_getProperty","_forEachName","names","_round","_arrayContainsAny","toSearch","toFind","_parseVars","irVars","isLegacy","varsIndex","inherit","runBackwards","startAt","_lazyRender","_lazy","_lazySafeRender","suppressEvents","_numericIfPossible","_setKeyframeDefaults","toMerge","_mergeDeep","_copyExcluding","excluding","_inheritDefaults","keyframes","_dp","_removeLinkedListItem","firstProp","lastProp","prev","_prev","_next","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","_act","_uncache","_end","_dur","_start","_dirty","_recacheAncestors","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","_parentToChildTotalTime","parentTime","_ts","_tDur","_setEnd","_rts","_alignPlayhead","totalTime","smoothChildTiming","_postAddChecks","rawTime","_zTime","_addToTimeline","skipChecks","_delay","timeScale","sortBy","_addLinkedListItem","_recent","_scrollTrigger","_attemptInitTween","_initTween","_pt","_ticker","_setDuration","skipUncache","leavePlayhead","dur","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","recent","clippedDuration","isNaN","_conditionalReturn","getUnit","_slice","_isArrayLike","nonEmpty","_flatten","leaveStrings","accumulator","_accumulator","_wake","querySelectorAll","shuffle","distribute","each","_parseEase","isDecimal","ratios","axis","ratioX","ratioY","edges","originX","originY","wrapAt","distances","grid","amount","_invertEase","_roundModifier","raw","is2D","increment","closest","roundingIncrement","returnFunction","_wrapArray","wrapper","_replaceRandom","nums","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","label","_callback","executeLazyFirst","callbackScope","_interrupt","_createPlugin","isFunc","Plugin","_props","instanceDefaults","_renderPropTweens","_addPropTween","_killPropTweensOf","modifier","_addPluginModifier","rawVars","statics","getSetter","_getSetter","aliases","PropTween","_colorLookup","aqua","lime","silver","black","maroon","teal","blue","navy","white","olive","yellow","orange","gray","purple","green","red","pink","cyan","_hue","m2","splitColor","toHSL","forceAlpha","wasHSL","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","_hslExp","_colorStringFilter","combined","lastIndex","overlap","elapsed","deltaRatio","wake","gsapVersions","GreenSockGlobals","sleep","lagSmoothing","adjustedLag","_fps","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","val","parsedVal","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","close","nested","_CE","_configEaseFromString","_insertEase","easeIn","easeInOut","lowercaseName","_easeInOutFromOut","_configElastic","amplitude","period","p3","asin","_configBack","overshoot","power","Linear","easeNone","SteppedEase","steps","immediateStart","Animation","repeatDelay","yoyo","reversed","paused","_totalTime","_ptLookup","_pTime","iteration","_ps","includeRepeats","wrapRepeats","globalTime","seek","includeDelay","play","atTime","resume","eventCallback","_onUpdate","onFulfilled","_resolve","_then","_prom","_Animation","sortChildren","_proto2","Tween","fromVars","toVars","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","_lock","rewinding","doesWrap","repeatRefresh","_hasPause","_forcing","_last","_findNextPauseTween","adjustedTime","getChildren","tweens","timelines","ignoreBeforeTime","removeLabel","killTweensOf","_totalTime2","addPause","removePause","onlyActive","getTweensOf","_overwritingTween","parsedTargets","isGlobalTime","_targets","_onStart","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","includeLabels","updateRoot","_addComplexStringPropTween","setter","stringFilter","funcParam","startNums","endNum","chunk","startNum","hasRandom","pt","_renderComplexString","matchIndex","exec","fp","currentValue","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","ptLookup","_parseFuncOrString","_processVars","cleanVars","hasPriority","gsData","harnessVars","overwritten","onUpdateParams","autoRevert","prevStartAt","_startAt","fullTargets","autoOverwrite","_overwrite","_op","_sortPropTweensByPriority","_onInit","_from","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","_hasNoPausedAncestors","_proto3","onRepeat","prevRatio","_renderZeroDurationTween","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","a2","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","hasNonDependentRemaining","dep","_setterWithModifier","mSet","mt","pt2","first","pr","TweenLite","TimelineLite","TimelineMax","_len2","_key2","unit","getter","setters","isTweening","registerEffect","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","wrapYoyo","pipe","_len","functions","_key","unitize","interpolate","mutate","interpolators","isString","master","install","globalTimeline","_getPluginPropTween","_buildModifierPlugin","_addModifiers","Power0","Power1","Power2","Power3","Power4","Quad","Cubic","Quart","Quint","Strong","Elastic","Back","Bounce","Sine","Expo","Circ","_docElement","_pluginInitted","_tempDiv","_tempDivStyler","_recentSetterPlugin","_supports3D","_transformProps","_RAD2DEG","_DEG2RAD","_atan2","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","_renderCSSProp","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","_setterCSSProp","setProperty","_setterTransform","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_transformOriginProp","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","getPropertyValue","_checkPropPrefix","_prefixes","preferPrefix","_initCore","_getBBoxHack","swapIfPossible","bbox","oldParent","oldSibling","nextSibling","oldCSS","_gsapBBox","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","_isSVG","getCTM","_removeProperty","removeAttribute","beginning","onlySetAtEnd","_nonConvertibleUnits","deg","rad","turn","_convertToUnit","curValue","curUnit","isRootSVG","measureProperty","toPixels","toPercent","_firstTwoOnly","zOrigin","_specialProps","startValues","startValue","endUnit","startUnit","_keywordToPercent","_renderClearProps","clearTransforms","clearProps","_identity2DMatrix","_rotationalProperties","_isNullTransform","matrixString","force2D","addedToDOM","baseVal","consolidate","offsetParent","_applySVGOrigin","origin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","perspective","a12","a22","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","forceCSS","transformPerspective","_renderCSSTransforms","_renderNon3DTransforms","transforms","use3D","a11","a21","finalValue","endCache","startCache","CSSPlugin","specialProp","isTransformRelated","transformPropTween","smoothOrigin","autoRound","_getMatrix","positionAndScale","gsapWithCSS","TweenMaxWithCSS"],"mappings":"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,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,mCAAoC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,mCAAoC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,mCAAoC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,mCAAoC,SAAU,GAAI,iFAAkF,yDAA0D,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,gCAAiC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,iCAAkC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,SAAU,iFAAkF,kCAAmC,iCAAkC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,mCAAoC,SAAU,iFAAkF,kCAAmC,iCAAkC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,mCAAoC,mCAAoC,SAAU,GAAI,iFAAkF,sDAAuD,iFAAkF,kCAAmC,iCAAkC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC,kCAAmC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","file":"d5caeb7d5f95c99a1f60e02f5d86a4a40967678d-ed8a969554c5bc58f713.js","sourcesContent":["require(\"core-js/modules/es6.weak-map\");\n\nrequire(\"core-js/modules/es6.set\");\n\nrequire(\"core-js/modules/es6.weak-set\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\n\nrequire(\"core-js/modules/es6.map\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.object.is\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\n/** @license React v0.25.1\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n 'use strict';\n\n var aa = require(\"object-assign\"),\n ba = require(\"react\"),\n m = require(\"scheduler\");\n\n function n(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) {\n b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n }\n\n return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n }\n\n var p = ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n p.hasOwnProperty(\"ReactCurrentDispatcher\") || (p.ReactCurrentDispatcher = {\n current: null\n });\n p.hasOwnProperty(\"ReactCurrentBatchConfig\") || (p.ReactCurrentBatchConfig = {\n suspense: null\n });\n var u = \"function\" === typeof Symbol && Symbol[\"for\"],\n ca = u ? Symbol[\"for\"](\"react.element\") : 60103,\n da = u ? Symbol[\"for\"](\"react.portal\") : 60106,\n ea = u ? Symbol[\"for\"](\"react.fragment\") : 60107,\n fa = u ? Symbol[\"for\"](\"react.strict_mode\") : 60108,\n ha = u ? Symbol[\"for\"](\"react.profiler\") : 60114,\n ia = u ? Symbol[\"for\"](\"react.provider\") : 60109,\n ja = u ? Symbol[\"for\"](\"react.context\") : 60110,\n ka = u ? Symbol[\"for\"](\"react.concurrent_mode\") : 60111,\n la = u ? Symbol[\"for\"](\"react.forward_ref\") : 60112,\n ma = u ? Symbol[\"for\"](\"react.suspense\") : 60113,\n na = u ? Symbol[\"for\"](\"react.suspense_list\") : 60120,\n oa = u ? Symbol[\"for\"](\"react.memo\") : 60115,\n pa = u ? Symbol[\"for\"](\"react.lazy\") : 60116,\n qa = u ? Symbol[\"for\"](\"react.block\") : 60121,\n ra = \"function\" === typeof Symbol && Symbol.iterator;\n\n function sa(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = ra && a[ra] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n }\n\n function ta(a) {\n if (-1 === a._status) {\n a._status = 0;\n var b = a._ctor;\n b = b();\n a._result = b;\n b.then(function (b) {\n 0 === a._status && (b = b[\"default\"], a._status = 1, a._result = b);\n }, function (b) {\n 0 === a._status && (a._status = 2, a._result = b);\n });\n }\n }\n\n function ua(a) {\n if (null == a) return null;\n if (\"function\" === typeof a) return a.displayName || a.name || null;\n if (\"string\" === typeof a) return a;\n\n switch (a) {\n case ea:\n return \"Fragment\";\n\n case da:\n return \"Portal\";\n\n case ha:\n return \"Profiler\";\n\n case fa:\n return \"StrictMode\";\n\n case ma:\n return \"Suspense\";\n\n case na:\n return \"SuspenseList\";\n }\n\n if (\"object\" === typeof a) switch (a.$$typeof) {\n case ja:\n return \"Context.Consumer\";\n\n case ia:\n return \"Context.Provider\";\n\n case la:\n var b = a.render;\n b = b.displayName || b.name || \"\";\n return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n\n case oa:\n return ua(a.type);\n\n case qa:\n return ua(a.render);\n\n case pa:\n if (a = 1 === a._status ? a._result : null) return ua(a);\n }\n return null;\n }\n\n function va(a) {\n var b = a,\n c = a;\n if (a.alternate) for (; b[\"return\"];) {\n b = b[\"return\"];\n } else {\n a = b;\n\n do {\n b = a, 0 !== (b.effectTag & 1026) && (c = b[\"return\"]), a = b[\"return\"];\n } while (a);\n }\n return 3 === b.tag ? c : null;\n }\n\n function wa(a) {\n if (va(a) !== a) throw Error(n(188));\n }\n\n function xa(a) {\n var b = a.alternate;\n\n if (!b) {\n b = va(a);\n if (null === b) throw Error(n(188));\n return b !== a ? null : a;\n }\n\n for (var c = a, d = b;;) {\n var e = c[\"return\"];\n if (null === e) break;\n var f = e.alternate;\n\n if (null === f) {\n d = e[\"return\"];\n\n if (null !== d) {\n c = d;\n continue;\n }\n\n break;\n }\n\n if (e.child === f.child) {\n for (f = e.child; f;) {\n if (f === c) return wa(e), a;\n if (f === d) return wa(e), b;\n f = f.sibling;\n }\n\n throw Error(n(188));\n }\n\n if (c[\"return\"] !== d[\"return\"]) c = e, d = f;else {\n for (var g = !1, h = e.child; h;) {\n if (h === c) {\n g = !0;\n c = e;\n d = f;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = e;\n c = f;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) {\n for (h = f.child; h;) {\n if (h === c) {\n g = !0;\n c = f;\n d = e;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = f;\n c = e;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) throw Error(n(189));\n }\n }\n if (c.alternate !== d) throw Error(n(190));\n }\n\n if (3 !== c.tag) throw Error(n(188));\n return c.stateNode.current === c ? a : b;\n }\n\n function ya(a) {\n a = xa(a);\n if (!a) return null;\n\n for (var b = a;;) {\n if (5 === b.tag || 6 === b.tag) return b;\n if (b.child) b.child[\"return\"] = b, b = b.child;else {\n if (b === a) break;\n\n for (; !b.sibling;) {\n if (!b[\"return\"] || b[\"return\"] === a) return null;\n b = b[\"return\"];\n }\n\n b.sibling[\"return\"] = b[\"return\"];\n b = b.sibling;\n }\n }\n\n return null;\n }\n\n function za(a) {\n a = xa(a);\n if (!a) return null;\n\n for (var b = a;;) {\n if (5 === b.tag || 6 === b.tag) return b;\n if (b.child && 4 !== b.tag) b.child[\"return\"] = b, b = b.child;else {\n if (b === a) break;\n\n for (; !b.sibling;) {\n if (!b[\"return\"] || b[\"return\"] === a) return null;\n b = b[\"return\"];\n }\n\n b.sibling[\"return\"] = b[\"return\"];\n b = b.sibling;\n }\n }\n\n return null;\n }\n\n var Aa = $$$hostConfig.getPublicInstance,\n Ba = $$$hostConfig.getRootHostContext,\n Ca = $$$hostConfig.getChildHostContext,\n Da = $$$hostConfig.prepareForCommit,\n Ea = $$$hostConfig.resetAfterCommit,\n Fa = $$$hostConfig.createInstance,\n Ga = $$$hostConfig.appendInitialChild,\n Ha = $$$hostConfig.finalizeInitialChildren,\n Ia = $$$hostConfig.prepareUpdate,\n Ja = $$$hostConfig.shouldSetTextContent,\n Ka = $$$hostConfig.shouldDeprioritizeSubtree,\n La = $$$hostConfig.createTextInstance,\n Ma = $$$hostConfig.setTimeout,\n Na = $$$hostConfig.clearTimeout,\n Oa = $$$hostConfig.noTimeout,\n Pa = $$$hostConfig.isPrimaryRenderer,\n Qa = $$$hostConfig.supportsMutation,\n Ra = $$$hostConfig.supportsPersistence,\n Sa = $$$hostConfig.supportsHydration,\n Ta = $$$hostConfig.appendChild,\n Ua = $$$hostConfig.appendChildToContainer,\n Va = $$$hostConfig.commitTextUpdate,\n Wa = $$$hostConfig.commitMount,\n Xa = $$$hostConfig.commitUpdate,\n Ya = $$$hostConfig.insertBefore,\n Za = $$$hostConfig.insertInContainerBefore,\n $a = $$$hostConfig.removeChild,\n ab = $$$hostConfig.removeChildFromContainer,\n bb = $$$hostConfig.resetTextContent,\n cb = $$$hostConfig.hideInstance,\n db = $$$hostConfig.hideTextInstance,\n eb = $$$hostConfig.unhideInstance,\n fb = $$$hostConfig.unhideTextInstance,\n gb = $$$hostConfig.cloneInstance,\n hb = $$$hostConfig.createContainerChildSet,\n ib = $$$hostConfig.appendChildToContainerChildSet,\n jb = $$$hostConfig.finalizeContainerChildren,\n kb = $$$hostConfig.replaceContainerChildren,\n lb = $$$hostConfig.cloneHiddenInstance,\n mb = $$$hostConfig.cloneHiddenTextInstance,\n nb = $$$hostConfig.canHydrateInstance,\n ob = $$$hostConfig.canHydrateTextInstance,\n pb = $$$hostConfig.isSuspenseInstancePending,\n qb = $$$hostConfig.isSuspenseInstanceFallback,\n rb = $$$hostConfig.getNextHydratableSibling,\n sb = $$$hostConfig.getFirstHydratableChild,\n tb = $$$hostConfig.hydrateInstance,\n ub = $$$hostConfig.hydrateTextInstance,\n vb = $$$hostConfig.getNextHydratableInstanceAfterSuspenseInstance,\n wb = $$$hostConfig.commitHydratedContainer,\n xb = $$$hostConfig.commitHydratedSuspenseInstance,\n yb = /^(.*)[\\\\\\/]/;\n\n function zb(a) {\n var b = \"\";\n\n do {\n a: switch (a.tag) {\n case 3:\n case 4:\n case 6:\n case 7:\n case 10:\n case 9:\n var c = \"\";\n break a;\n\n default:\n var d = a._debugOwner,\n e = a._debugSource,\n f = ua(a.type);\n c = null;\n d && (c = ua(d.type));\n d = f;\n f = \"\";\n e ? f = \" (at \" + e.fileName.replace(yb, \"\") + \":\" + e.lineNumber + \")\" : c && (f = \" (created by \" + c + \")\");\n c = \"\\n in \" + (d || \"Unknown\") + f;\n }\n\n b += c;\n a = a[\"return\"];\n } while (a);\n\n return b;\n }\n\n var Ab = [],\n Bb = -1;\n\n function B(a) {\n 0 > Bb || (a.current = Ab[Bb], Ab[Bb] = null, Bb--);\n }\n\n function C(a, b) {\n Bb++;\n Ab[Bb] = a.current;\n a.current = b;\n }\n\n var Cb = {},\n D = {\n current: Cb\n },\n E = {\n current: !1\n },\n Db = Cb;\n\n function Eb(a, b) {\n var c = a.type.contextTypes;\n if (!c) return Cb;\n var d = a.stateNode;\n if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n var e = {},\n f;\n\n for (f in c) {\n e[f] = b[f];\n }\n\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n return e;\n }\n\n function F(a) {\n a = a.childContextTypes;\n return null !== a && void 0 !== a;\n }\n\n function Fb() {\n B(E);\n B(D);\n }\n\n function Gb(a, b, c) {\n if (D.current !== Cb) throw Error(n(168));\n C(D, b);\n C(E, c);\n }\n\n function Hb(a, b, c) {\n var d = a.stateNode;\n a = b.childContextTypes;\n if (\"function\" !== typeof d.getChildContext) return c;\n d = d.getChildContext();\n\n for (var e in d) {\n if (!(e in a)) throw Error(n(108, ua(b) || \"Unknown\", e));\n }\n\n return aa({}, c, {}, d);\n }\n\n function Ib(a) {\n a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || Cb;\n Db = D.current;\n C(D, a);\n C(E, E.current);\n return !0;\n }\n\n function Jb(a, b, c) {\n var d = a.stateNode;\n if (!d) throw Error(n(169));\n c ? (a = Hb(a, b, Db), d.__reactInternalMemoizedMergedChildContext = a, B(E), B(D), C(D, a)) : B(E);\n C(E, c);\n }\n\n var Kb = m.unstable_runWithPriority,\n Lb = m.unstable_scheduleCallback,\n Mb = m.unstable_cancelCallback,\n Nb = m.unstable_requestPaint,\n Ob = m.unstable_now,\n Pb = m.unstable_getCurrentPriorityLevel,\n Qb = m.unstable_ImmediatePriority,\n Rb = m.unstable_UserBlockingPriority,\n Sb = m.unstable_NormalPriority,\n Tb = m.unstable_LowPriority,\n Ub = m.unstable_IdlePriority,\n Vb = {},\n Wb = m.unstable_shouldYield,\n Xb = void 0 !== Nb ? Nb : function () {},\n Yb = null,\n Zb = null,\n $b = !1,\n ac = Ob(),\n G = 1E4 > ac ? Ob : function () {\n return Ob() - ac;\n };\n\n function bc() {\n switch (Pb()) {\n case Qb:\n return 99;\n\n case Rb:\n return 98;\n\n case Sb:\n return 97;\n\n case Tb:\n return 96;\n\n case Ub:\n return 95;\n\n default:\n throw Error(n(332));\n }\n }\n\n function cc(a) {\n switch (a) {\n case 99:\n return Qb;\n\n case 98:\n return Rb;\n\n case 97:\n return Sb;\n\n case 96:\n return Tb;\n\n case 95:\n return Ub;\n\n default:\n throw Error(n(332));\n }\n }\n\n function dc(a, b) {\n a = cc(a);\n return Kb(a, b);\n }\n\n function ec(a, b, c) {\n a = cc(a);\n return Lb(a, b, c);\n }\n\n function fc(a) {\n null === Yb ? (Yb = [a], Zb = Lb(Qb, gc)) : Yb.push(a);\n return Vb;\n }\n\n function H() {\n if (null !== Zb) {\n var a = Zb;\n Zb = null;\n Mb(a);\n }\n\n gc();\n }\n\n function gc() {\n if (!$b && null !== Yb) {\n $b = !0;\n var a = 0;\n\n try {\n var b = Yb;\n dc(99, function () {\n for (; a < b.length; a++) {\n var c = b[a];\n\n do {\n c = c(!0);\n } while (null !== c);\n }\n });\n Yb = null;\n } catch (c) {\n throw null !== Yb && (Yb = Yb.slice(a + 1)), Lb(Qb, H), c;\n } finally {\n $b = !1;\n }\n }\n }\n\n function hc(a, b, c) {\n c /= 10;\n return 1073741821 - (((1073741821 - a + b / 10) / c | 0) + 1) * c;\n }\n\n function ic(a, b) {\n return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n }\n\n var jc = \"function\" === typeof Object.is ? Object.is : ic,\n kc = Object.prototype.hasOwnProperty;\n\n function lc(a, b) {\n if (jc(a, b)) return !0;\n if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n var c = Object.keys(a),\n d = Object.keys(b);\n if (c.length !== d.length) return !1;\n\n for (d = 0; d < c.length; d++) {\n if (!kc.call(b, c[d]) || !jc(a[c[d]], b[c[d]])) return !1;\n }\n\n return !0;\n }\n\n function mc(a, b) {\n if (a && a.defaultProps) {\n b = aa({}, b);\n a = a.defaultProps;\n\n for (var c in a) {\n void 0 === b[c] && (b[c] = a[c]);\n }\n }\n\n return b;\n }\n\n var nc = {\n current: null\n },\n oc = null,\n pc = null,\n qc = null;\n\n function rc() {\n qc = pc = oc = null;\n }\n\n function sc(a, b) {\n a = a.type._context;\n Pa ? (C(nc, a._currentValue), a._currentValue = b) : (C(nc, a._currentValue2), a._currentValue2 = b);\n }\n\n function tc(a) {\n var b = nc.current;\n B(nc);\n a = a.type._context;\n Pa ? a._currentValue = b : a._currentValue2 = b;\n }\n\n function uc(a, b) {\n for (; null !== a;) {\n var c = a.alternate;\n if (a.childExpirationTime < b) a.childExpirationTime = b, null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);else if (null !== c && c.childExpirationTime < b) c.childExpirationTime = b;else break;\n a = a[\"return\"];\n }\n }\n\n function vc(a, b) {\n oc = a;\n qc = pc = null;\n a = a.dependencies;\n null !== a && null !== a.firstContext && (a.expirationTime >= b && (wc = !0), a.firstContext = null);\n }\n\n function I(a, b) {\n if (qc !== a && !1 !== b && 0 !== b) {\n if (\"number\" !== typeof b || 1073741823 === b) qc = a, b = 1073741823;\n b = {\n context: a,\n observedBits: b,\n next: null\n };\n\n if (null === pc) {\n if (null === oc) throw Error(n(308));\n pc = b;\n oc.dependencies = {\n expirationTime: 0,\n firstContext: b,\n responders: null\n };\n } else pc = pc.next = b;\n }\n\n return Pa ? a._currentValue : a._currentValue2;\n }\n\n var xc = !1;\n\n function yc(a) {\n a.updateQueue = {\n baseState: a.memoizedState,\n baseQueue: null,\n shared: {\n pending: null\n },\n effects: null\n };\n }\n\n function zc(a, b) {\n a = a.updateQueue;\n b.updateQueue === a && (b.updateQueue = {\n baseState: a.baseState,\n baseQueue: a.baseQueue,\n shared: a.shared,\n effects: a.effects\n });\n }\n\n function Ac(a, b) {\n a = {\n expirationTime: a,\n suspenseConfig: b,\n tag: 0,\n payload: null,\n callback: null,\n next: null\n };\n return a.next = a;\n }\n\n function Bc(a, b) {\n a = a.updateQueue;\n\n if (null !== a) {\n a = a.shared;\n var c = a.pending;\n null === c ? b.next = b : (b.next = c.next, c.next = b);\n a.pending = b;\n }\n }\n\n function Cc(a, b) {\n var c = a.alternate;\n null !== c && zc(c, a);\n a = a.updateQueue;\n c = a.baseQueue;\n null === c ? (a.baseQueue = b.next = b, b.next = b) : (b.next = c.next, c.next = b);\n }\n\n function Dc(a, b, c, d) {\n var e = a.updateQueue;\n xc = !1;\n var f = e.baseQueue,\n g = e.shared.pending;\n\n if (null !== g) {\n if (null !== f) {\n var h = f.next;\n f.next = g.next;\n g.next = h;\n }\n\n f = g;\n e.shared.pending = null;\n h = a.alternate;\n null !== h && (h = h.updateQueue, null !== h && (h.baseQueue = g));\n }\n\n if (null !== f) {\n h = f.next;\n var k = e.baseState,\n l = 0,\n q = null,\n r = null,\n w = null;\n\n if (null !== h) {\n var z = h;\n\n do {\n g = z.expirationTime;\n\n if (g < d) {\n var Q = {\n expirationTime: z.expirationTime,\n suspenseConfig: z.suspenseConfig,\n tag: z.tag,\n payload: z.payload,\n callback: z.callback,\n next: null\n };\n null === w ? (r = w = Q, q = k) : w = w.next = Q;\n g > l && (l = g);\n } else {\n null !== w && (w = w.next = {\n expirationTime: 1073741823,\n suspenseConfig: z.suspenseConfig,\n tag: z.tag,\n payload: z.payload,\n callback: z.callback,\n next: null\n });\n Ec(g, z.suspenseConfig);\n\n a: {\n var A = a,\n v = z;\n g = b;\n Q = c;\n\n switch (v.tag) {\n case 1:\n A = v.payload;\n\n if (\"function\" === typeof A) {\n k = A.call(Q, k, g);\n break a;\n }\n\n k = A;\n break a;\n\n case 3:\n A.effectTag = A.effectTag & -4097 | 64;\n\n case 0:\n A = v.payload;\n g = \"function\" === typeof A ? A.call(Q, k, g) : A;\n if (null === g || void 0 === g) break a;\n k = aa({}, k, g);\n break a;\n\n case 2:\n xc = !0;\n }\n }\n\n null !== z.callback && (a.effectTag |= 32, g = e.effects, null === g ? e.effects = [z] : g.push(z));\n }\n\n z = z.next;\n if (null === z || z === h) if (g = e.shared.pending, null === g) break;else z = f.next = g.next, g.next = h, e.baseQueue = f = g, e.shared.pending = null;\n } while (1);\n }\n\n null === w ? q = k : w.next = r;\n e.baseState = q;\n e.baseQueue = w;\n Gc(l);\n a.expirationTime = l;\n a.memoizedState = k;\n }\n }\n\n function Hc(a, b, c) {\n a = b.effects;\n b.effects = null;\n if (null !== a) for (b = 0; b < a.length; b++) {\n var d = a[b],\n e = d.callback;\n\n if (null !== e) {\n d.callback = null;\n d = e;\n e = c;\n if (\"function\" !== typeof d) throw Error(n(191, d));\n d.call(e);\n }\n }\n }\n\n var Ic = p.ReactCurrentBatchConfig,\n Jc = new ba.Component().refs;\n\n function Kc(a, b, c, d) {\n b = a.memoizedState;\n c = c(d, b);\n c = null === c || void 0 === c ? b : aa({}, b, c);\n a.memoizedState = c;\n 0 === a.expirationTime && (a.updateQueue.baseState = c);\n }\n\n var Oc = {\n isMounted: function isMounted(a) {\n return (a = a._reactInternalFiber) ? va(a) === a : !1;\n },\n enqueueSetState: function enqueueSetState(a, b, c) {\n a = a._reactInternalFiber;\n var d = Lc(),\n e = Ic.suspense;\n d = Mc(d, a, e);\n e = Ac(d, e);\n e.payload = b;\n void 0 !== c && null !== c && (e.callback = c);\n Bc(a, e);\n Nc(a, d);\n },\n enqueueReplaceState: function enqueueReplaceState(a, b, c) {\n a = a._reactInternalFiber;\n var d = Lc(),\n e = Ic.suspense;\n d = Mc(d, a, e);\n e = Ac(d, e);\n e.tag = 1;\n e.payload = b;\n void 0 !== c && null !== c && (e.callback = c);\n Bc(a, e);\n Nc(a, d);\n },\n enqueueForceUpdate: function enqueueForceUpdate(a, b) {\n a = a._reactInternalFiber;\n var c = Lc(),\n d = Ic.suspense;\n c = Mc(c, a, d);\n d = Ac(c, d);\n d.tag = 2;\n void 0 !== b && null !== b && (d.callback = b);\n Bc(a, d);\n Nc(a, c);\n }\n };\n\n function Pc(a, b, c, d, e, f, g) {\n a = a.stateNode;\n return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !lc(c, d) || !lc(e, f) : !0;\n }\n\n function Qc(a, b, c) {\n var d = !1,\n e = Cb;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? f = I(f) : (e = F(b) ? Db : D.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? Eb(a, e) : Cb);\n b = new b(c, f);\n a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n b.updater = Oc;\n a.stateNode = b;\n b._reactInternalFiber = a;\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n return b;\n }\n\n function Rc(a, b, c, d) {\n a = b.state;\n \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n b.state !== a && Oc.enqueueReplaceState(b, b.state, null);\n }\n\n function Sc(a, b, c, d) {\n var e = a.stateNode;\n e.props = c;\n e.state = a.memoizedState;\n e.refs = Jc;\n yc(a);\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? e.context = I(f) : (f = F(b) ? Db : D.current, e.context = Eb(a, f));\n Dc(a, c, e, d);\n e.state = a.memoizedState;\n f = b.getDerivedStateFromProps;\n \"function\" === typeof f && (Kc(a, b, f, c), e.state = a.memoizedState);\n \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Oc.enqueueReplaceState(e, e.state, null), Dc(a, c, e, d), e.state = a.memoizedState);\n \"function\" === typeof e.componentDidMount && (a.effectTag |= 4);\n }\n\n var Tc = Array.isArray;\n\n function Uc(a, b, c) {\n a = c.ref;\n\n if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n if (c._owner) {\n c = c._owner;\n\n if (c) {\n if (1 !== c.tag) throw Error(n(309));\n var d = c.stateNode;\n }\n\n if (!d) throw Error(n(147, a));\n var e = \"\" + a;\n if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n\n b = function b(a) {\n var b = d.refs;\n b === Jc && (b = d.refs = {});\n null === a ? delete b[e] : b[e] = a;\n };\n\n b._stringRef = e;\n return b;\n }\n\n if (\"string\" !== typeof a) throw Error(n(284));\n if (!c._owner) throw Error(n(290, a));\n }\n\n return a;\n }\n\n function Vc(a, b) {\n if (\"textarea\" !== a.type) throw Error(n(31, \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b, \"\"));\n }\n\n function Wc(a) {\n function b(b, c) {\n if (a) {\n var d = b.lastEffect;\n null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n c.nextEffect = null;\n c.effectTag = 8;\n }\n }\n\n function c(c, d) {\n if (!a) return null;\n\n for (; null !== d;) {\n b(c, d), d = d.sibling;\n }\n\n return null;\n }\n\n function d(b, a) {\n for (b = new Map(); null !== a;) {\n null !== a.key ? b.set(a.key, a) : b.set(a.index, a), a = a.sibling;\n }\n\n return b;\n }\n\n function e(a, b) {\n a = Xc(a, b);\n a.index = 0;\n a.sibling = null;\n return a;\n }\n\n function f(b, c, d) {\n b.index = d;\n if (!a) return c;\n d = b.alternate;\n if (null !== d) return d = d.index, d < c ? (b.effectTag = 2, c) : d;\n b.effectTag = 2;\n return c;\n }\n\n function g(b) {\n a && null === b.alternate && (b.effectTag = 2);\n return b;\n }\n\n function h(b, a, c, d) {\n if (null === a || 6 !== a.tag) return a = Yc(c, b.mode, d), a[\"return\"] = b, a;\n a = e(a, c);\n a[\"return\"] = b;\n return a;\n }\n\n function k(a, b, c, d) {\n if (null !== b && b.elementType === c.type) return d = e(b, c.props), d.ref = Uc(a, b, c), d[\"return\"] = a, d;\n d = Zc(c.type, c.key, c.props, null, a.mode, d);\n d.ref = Uc(a, b, c);\n d[\"return\"] = a;\n return d;\n }\n\n function l(a, b, c, d) {\n if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = $c(c, a.mode, d), b[\"return\"] = a, b;\n b = e(b, c.children || []);\n b[\"return\"] = a;\n return b;\n }\n\n function q(b, a, c, d, f) {\n if (null === a || 7 !== a.tag) return a = ad(c, b.mode, d, f), a[\"return\"] = b, a;\n a = e(a, c);\n a[\"return\"] = b;\n return a;\n }\n\n function r(a, b, c) {\n if (\"string\" === typeof b || \"number\" === typeof b) return b = Yc(\"\" + b, a.mode, c), b[\"return\"] = a, b;\n\n if (\"object\" === typeof b && null !== b) {\n switch (b.$$typeof) {\n case ca:\n return c = Zc(b.type, b.key, b.props, null, a.mode, c), c.ref = Uc(a, null, b), c[\"return\"] = a, c;\n\n case da:\n return b = $c(b, a.mode, c), b[\"return\"] = a, b;\n }\n\n if (Tc(b) || sa(b)) return b = ad(b, a.mode, c, null), b[\"return\"] = a, b;\n Vc(a, b);\n }\n\n return null;\n }\n\n function w(b, a, c, d) {\n var e = null !== a ? a.key : null;\n if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(b, a, \"\" + c, d);\n\n if (\"object\" === typeof c && null !== c) {\n switch (c.$$typeof) {\n case ca:\n return c.key === e ? c.type === ea ? q(b, a, c.props.children, d, e) : k(b, a, c, d) : null;\n\n case da:\n return c.key === e ? l(b, a, c, d) : null;\n }\n\n if (Tc(c) || sa(c)) return null !== e ? null : q(b, a, c, d, null);\n Vc(b, c);\n }\n\n return null;\n }\n\n function z(b, a, c, d, e) {\n if (\"string\" === typeof d || \"number\" === typeof d) return b = b.get(c) || null, h(a, b, \"\" + d, e);\n\n if (\"object\" === typeof d && null !== d) {\n switch (d.$$typeof) {\n case ca:\n return b = b.get(null === d.key ? c : d.key) || null, d.type === ea ? q(a, b, d.props.children, e, d.key) : k(a, b, d, e);\n\n case da:\n return b = b.get(null === d.key ? c : d.key) || null, l(a, b, d, e);\n }\n\n if (Tc(d) || sa(d)) return b = b.get(c) || null, q(a, b, d, e, null);\n Vc(a, d);\n }\n\n return null;\n }\n\n function Q(e, g, h, k) {\n for (var l = null, v = null, t = g, x = g = 0, q = null; null !== t && x < h.length; x++) {\n t.index > x ? (q = t, t = null) : q = t.sibling;\n var y = w(e, t, h[x], k);\n\n if (null === y) {\n null === t && (t = q);\n break;\n }\n\n a && t && null === y.alternate && b(e, t);\n g = f(y, g, x);\n null === v ? l = y : v.sibling = y;\n v = y;\n t = q;\n }\n\n if (x === h.length) return c(e, t), l;\n\n if (null === t) {\n for (; x < h.length; x++) {\n t = r(e, h[x], k), null !== t && (g = f(t, g, x), null === v ? l = t : v.sibling = t, v = t);\n }\n\n return l;\n }\n\n for (t = d(e, t); x < h.length; x++) {\n q = z(t, e, x, h[x], k), null !== q && (a && null !== q.alternate && t[\"delete\"](null === q.key ? x : q.key), g = f(q, g, x), null === v ? l = q : v.sibling = q, v = q);\n }\n\n a && t.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n function A(e, g, h, k) {\n var t = sa(h);\n if (\"function\" !== typeof t) throw Error(n(150));\n h = t.call(h);\n if (null == h) throw Error(n(151));\n\n for (var l = t = null, v = g, x = g = 0, q = null, y = h.next(); null !== v && !y.done; x++, y = h.next()) {\n v.index > x ? (q = v, v = null) : q = v.sibling;\n var A = w(e, v, y.value, k);\n\n if (null === A) {\n null === v && (v = q);\n break;\n }\n\n a && v && null === A.alternate && b(e, v);\n g = f(A, g, x);\n null === l ? t = A : l.sibling = A;\n l = A;\n v = q;\n }\n\n if (y.done) return c(e, v), t;\n\n if (null === v) {\n for (; !y.done; x++, y = h.next()) {\n y = r(e, y.value, k), null !== y && (g = f(y, g, x), null === l ? t = y : l.sibling = y, l = y);\n }\n\n return t;\n }\n\n for (v = d(e, v); !y.done; x++, y = h.next()) {\n y = z(v, e, x, y.value, k), null !== y && (a && null !== y.alternate && v[\"delete\"](null === y.key ? x : y.key), g = f(y, g, x), null === l ? t = y : l.sibling = y, l = y);\n }\n\n a && v.forEach(function (a) {\n return b(e, a);\n });\n return t;\n }\n\n return function (a, d, f, h) {\n var k = \"object\" === typeof f && null !== f && f.type === ea && null === f.key;\n k && (f = f.props.children);\n var l = \"object\" === typeof f && null !== f;\n if (l) switch (f.$$typeof) {\n case ca:\n a: {\n l = f.key;\n\n for (k = d; null !== k;) {\n if (k.key === l) {\n switch (k.tag) {\n case 7:\n if (f.type === ea) {\n c(a, k.sibling);\n d = e(k, f.props.children);\n d[\"return\"] = a;\n a = d;\n break a;\n }\n\n break;\n\n default:\n if (k.elementType === f.type) {\n c(a, k.sibling);\n d = e(k, f.props);\n d.ref = Uc(a, k, f);\n d[\"return\"] = a;\n a = d;\n break a;\n }\n\n }\n\n c(a, k);\n break;\n } else b(a, k);\n\n k = k.sibling;\n }\n\n f.type === ea ? (d = ad(f.props.children, a.mode, h, f.key), d[\"return\"] = a, a = d) : (h = Zc(f.type, f.key, f.props, null, a.mode, h), h.ref = Uc(a, d, f), h[\"return\"] = a, a = h);\n }\n\n return g(a);\n\n case da:\n a: {\n for (k = f.key; null !== d;) {\n if (d.key === k) {\n if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n c(a, d.sibling);\n d = e(d, f.children || []);\n d[\"return\"] = a;\n a = d;\n break a;\n } else {\n c(a, d);\n break;\n }\n } else b(a, d);\n d = d.sibling;\n }\n\n d = $c(f, a.mode, h);\n d[\"return\"] = a;\n a = d;\n }\n\n return g(a);\n }\n if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f), d[\"return\"] = a, a = d) : (c(a, d), d = Yc(f, a.mode, h), d[\"return\"] = a, a = d), g(a);\n if (Tc(f)) return Q(a, d, f, h);\n if (sa(f)) return A(a, d, f, h);\n l && Vc(a, f);\n if (\"undefined\" === typeof f && !k) switch (a.tag) {\n case 1:\n case 0:\n throw a = a.type, Error(n(152, a.displayName || a.name || \"Component\"));\n }\n return c(a, d);\n };\n }\n\n var bd = Wc(!0),\n cd = Wc(!1),\n dd = {},\n J = {\n current: dd\n },\n ed = {\n current: dd\n },\n fd = {\n current: dd\n };\n\n function gd(a) {\n if (a === dd) throw Error(n(174));\n return a;\n }\n\n function hd(a, b) {\n C(fd, b);\n C(ed, a);\n C(J, dd);\n a = Ba(b);\n B(J);\n C(J, a);\n }\n\n function id() {\n B(J);\n B(ed);\n B(fd);\n }\n\n function jd(a) {\n var b = gd(fd.current),\n c = gd(J.current);\n b = Ca(c, a.type, b);\n c !== b && (C(ed, a), C(J, b));\n }\n\n function kd(a) {\n ed.current === a && (B(J), B(ed));\n }\n\n var K = {\n current: 0\n };\n\n function ld(a) {\n for (var b = a; null !== b;) {\n if (13 === b.tag) {\n var c = b.memoizedState;\n if (null !== c && (c = c.dehydrated, null === c || pb(c) || qb(c))) return b;\n } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n if (0 !== (b.effectTag & 64)) return b;\n } else if (null !== b.child) {\n b.child[\"return\"] = b;\n b = b.child;\n continue;\n }\n\n if (b === a) break;\n\n for (; null === b.sibling;) {\n if (null === b[\"return\"] || b[\"return\"] === a) return null;\n b = b[\"return\"];\n }\n\n b.sibling[\"return\"] = b[\"return\"];\n b = b.sibling;\n }\n\n return null;\n }\n\n function md(a, b) {\n return {\n responder: a,\n props: b\n };\n }\n\n var nd = p.ReactCurrentDispatcher,\n L = p.ReactCurrentBatchConfig,\n od = 0,\n M = null,\n N = null,\n O = null,\n pd = !1;\n\n function P() {\n throw Error(n(321));\n }\n\n function qd(a, b) {\n if (null === b) return !1;\n\n for (var c = 0; c < b.length && c < a.length; c++) {\n if (!jc(a[c], b[c])) return !1;\n }\n\n return !0;\n }\n\n function rd(a, b, c, d, e, f) {\n od = f;\n M = b;\n b.memoizedState = null;\n b.updateQueue = null;\n b.expirationTime = 0;\n nd.current = null === a || null === a.memoizedState ? sd : td;\n a = c(d, e);\n\n if (b.expirationTime === od) {\n f = 0;\n\n do {\n b.expirationTime = 0;\n if (!(25 > f)) throw Error(n(301));\n f += 1;\n O = N = null;\n b.updateQueue = null;\n nd.current = ud;\n a = c(d, e);\n } while (b.expirationTime === od);\n }\n\n nd.current = vd;\n b = null !== N && null !== N.next;\n od = 0;\n O = N = M = null;\n pd = !1;\n if (b) throw Error(n(300));\n return a;\n }\n\n function wd() {\n var a = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === O ? M.memoizedState = O = a : O = O.next = a;\n return O;\n }\n\n function xd() {\n if (null === N) {\n var a = M.alternate;\n a = null !== a ? a.memoizedState : null;\n } else a = N.next;\n\n var b = null === O ? M.memoizedState : O.next;\n if (null !== b) O = b, N = a;else {\n if (null === a) throw Error(n(310));\n N = a;\n a = {\n memoizedState: N.memoizedState,\n baseState: N.baseState,\n baseQueue: N.baseQueue,\n queue: N.queue,\n next: null\n };\n null === O ? M.memoizedState = O = a : O = O.next = a;\n }\n return O;\n }\n\n function yd(a, b) {\n return \"function\" === typeof b ? b(a) : b;\n }\n\n function zd(a) {\n var b = xd(),\n c = b.queue;\n if (null === c) throw Error(n(311));\n c.lastRenderedReducer = a;\n var d = N,\n e = d.baseQueue,\n f = c.pending;\n\n if (null !== f) {\n if (null !== e) {\n var g = e.next;\n e.next = f.next;\n f.next = g;\n }\n\n d.baseQueue = e = f;\n c.pending = null;\n }\n\n if (null !== e) {\n e = e.next;\n d = d.baseState;\n var h = g = f = null,\n k = e;\n\n do {\n var l = k.expirationTime;\n\n if (l < od) {\n var q = {\n expirationTime: k.expirationTime,\n suspenseConfig: k.suspenseConfig,\n action: k.action,\n eagerReducer: k.eagerReducer,\n eagerState: k.eagerState,\n next: null\n };\n null === h ? (g = h = q, f = d) : h = h.next = q;\n l > M.expirationTime && (M.expirationTime = l, Gc(l));\n } else null !== h && (h = h.next = {\n expirationTime: 1073741823,\n suspenseConfig: k.suspenseConfig,\n action: k.action,\n eagerReducer: k.eagerReducer,\n eagerState: k.eagerState,\n next: null\n }), Ec(l, k.suspenseConfig), d = k.eagerReducer === a ? k.eagerState : a(d, k.action);\n\n k = k.next;\n } while (null !== k && k !== e);\n\n null === h ? f = d : h.next = g;\n jc(d, b.memoizedState) || (wc = !0);\n b.memoizedState = d;\n b.baseState = f;\n b.baseQueue = h;\n c.lastRenderedState = d;\n }\n\n return [b.memoizedState, c.dispatch];\n }\n\n function Ad(a) {\n var b = xd(),\n c = b.queue;\n if (null === c) throw Error(n(311));\n c.lastRenderedReducer = a;\n var d = c.dispatch,\n e = c.pending,\n f = b.memoizedState;\n\n if (null !== e) {\n c.pending = null;\n var g = e = e.next;\n\n do {\n f = a(f, g.action), g = g.next;\n } while (g !== e);\n\n jc(f, b.memoizedState) || (wc = !0);\n b.memoizedState = f;\n null === b.baseQueue && (b.baseState = f);\n c.lastRenderedState = f;\n }\n\n return [f, d];\n }\n\n function Bd(a) {\n var b = wd();\n \"function\" === typeof a && (a = a());\n b.memoizedState = b.baseState = a;\n a = b.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: yd,\n lastRenderedState: a\n };\n a = a.dispatch = Cd.bind(null, M, a);\n return [b.memoizedState, a];\n }\n\n function Dd(a, b, c, d) {\n a = {\n tag: a,\n create: b,\n destroy: c,\n deps: d,\n next: null\n };\n b = M.updateQueue;\n null === b ? (b = {\n lastEffect: null\n }, M.updateQueue = b, b.lastEffect = a.next = a) : (c = b.lastEffect, null === c ? b.lastEffect = a.next = a : (d = c.next, c.next = a, a.next = d, b.lastEffect = a));\n return a;\n }\n\n function Ed() {\n return xd().memoizedState;\n }\n\n function Fd(a, b, c, d) {\n var e = wd();\n M.effectTag |= a;\n e.memoizedState = Dd(1 | b, c, void 0, void 0 === d ? null : d);\n }\n\n function Gd(a, b, c, d) {\n var e = xd();\n d = void 0 === d ? null : d;\n var f = void 0;\n\n if (null !== N) {\n var g = N.memoizedState;\n f = g.destroy;\n\n if (null !== d && qd(d, g.deps)) {\n Dd(b, c, f, d);\n return;\n }\n }\n\n M.effectTag |= a;\n e.memoizedState = Dd(1 | b, c, f, d);\n }\n\n function Hd(a, b) {\n return Fd(516, 4, a, b);\n }\n\n function Id(a, b) {\n return Gd(516, 4, a, b);\n }\n\n function Jd(a, b) {\n return Gd(4, 2, a, b);\n }\n\n function Kd(a, b) {\n if (\"function\" === typeof b) return a = a(), b(a), function () {\n b(null);\n };\n if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n b.current = null;\n };\n }\n\n function Ld(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Gd(4, 2, Kd.bind(null, b, a), c);\n }\n\n function Md() {}\n\n function Nd(a, b) {\n wd().memoizedState = [a, void 0 === b ? null : b];\n return a;\n }\n\n function Od(a, b) {\n var c = xd();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && qd(b, d[1])) return d[0];\n c.memoizedState = [a, b];\n return a;\n }\n\n function Pd(a, b) {\n var c = xd();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && qd(b, d[1])) return d[0];\n a = a();\n c.memoizedState = [a, b];\n return a;\n }\n\n function Qd(a, b, c) {\n var d = bc();\n dc(98 > d ? 98 : d, function () {\n a(!0);\n });\n dc(97 < d ? 97 : d, function () {\n var d = L.suspense;\n L.suspense = void 0 === b ? null : b;\n\n try {\n a(!1), c();\n } finally {\n L.suspense = d;\n }\n });\n }\n\n function Cd(a, b, c) {\n var d = Lc(),\n e = Ic.suspense;\n d = Mc(d, a, e);\n e = {\n expirationTime: d,\n suspenseConfig: e,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n };\n var f = b.pending;\n null === f ? e.next = e : (e.next = f.next, f.next = e);\n b.pending = e;\n f = a.alternate;\n if (a === M || null !== f && f === M) pd = !0, e.expirationTime = od, M.expirationTime = od;else {\n if (0 === a.expirationTime && (null === f || 0 === f.expirationTime) && (f = b.lastRenderedReducer, null !== f)) try {\n var g = b.lastRenderedState,\n h = f(g, c);\n e.eagerReducer = f;\n e.eagerState = h;\n if (jc(h, g)) return;\n } catch (k) {} finally {}\n Nc(a, d);\n }\n }\n\n var vd = {\n readContext: I,\n useCallback: P,\n useContext: P,\n useEffect: P,\n useImperativeHandle: P,\n useLayoutEffect: P,\n useMemo: P,\n useReducer: P,\n useRef: P,\n useState: P,\n useDebugValue: P,\n useResponder: P,\n useDeferredValue: P,\n useTransition: P\n },\n sd = {\n readContext: I,\n useCallback: Nd,\n useContext: I,\n useEffect: Hd,\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Fd(4, 2, Kd.bind(null, b, a), c);\n },\n useLayoutEffect: function useLayoutEffect(a, b) {\n return Fd(4, 2, a, b);\n },\n useMemo: function useMemo(a, b) {\n var c = wd();\n b = void 0 === b ? null : b;\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: function useReducer(a, b, c) {\n var d = wd();\n b = void 0 !== c ? c(b) : b;\n d.memoizedState = d.baseState = b;\n a = d.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: a,\n lastRenderedState: b\n };\n a = a.dispatch = Cd.bind(null, M, a);\n return [d.memoizedState, a];\n },\n useRef: function useRef(a) {\n var b = wd();\n a = {\n current: a\n };\n return b.memoizedState = a;\n },\n useState: Bd,\n useDebugValue: Md,\n useResponder: md,\n useDeferredValue: function useDeferredValue(a, b) {\n var c = Bd(a),\n d = c[0],\n e = c[1];\n Hd(function () {\n var c = L.suspense;\n L.suspense = void 0 === b ? null : b;\n\n try {\n e(a);\n } finally {\n L.suspense = c;\n }\n }, [a, b]);\n return d;\n },\n useTransition: function useTransition(a) {\n var b = Bd(!1),\n c = b[0];\n b = b[1];\n return [Nd(Qd.bind(null, b, a), [b, a]), c];\n }\n },\n td = {\n readContext: I,\n useCallback: Od,\n useContext: I,\n useEffect: Id,\n useImperativeHandle: Ld,\n useLayoutEffect: Jd,\n useMemo: Pd,\n useReducer: zd,\n useRef: Ed,\n useState: function useState() {\n return zd(yd);\n },\n useDebugValue: Md,\n useResponder: md,\n useDeferredValue: function useDeferredValue(a, b) {\n var c = zd(yd),\n d = c[0],\n e = c[1];\n Id(function () {\n var c = L.suspense;\n L.suspense = void 0 === b ? null : b;\n\n try {\n e(a);\n } finally {\n L.suspense = c;\n }\n }, [a, b]);\n return d;\n },\n useTransition: function useTransition(a) {\n var b = zd(yd),\n c = b[0];\n b = b[1];\n return [Od(Qd.bind(null, b, a), [b, a]), c];\n }\n },\n ud = {\n readContext: I,\n useCallback: Od,\n useContext: I,\n useEffect: Id,\n useImperativeHandle: Ld,\n useLayoutEffect: Jd,\n useMemo: Pd,\n useReducer: Ad,\n useRef: Ed,\n useState: function useState() {\n return Ad(yd);\n },\n useDebugValue: Md,\n useResponder: md,\n useDeferredValue: function useDeferredValue(a, b) {\n var c = Ad(yd),\n d = c[0],\n e = c[1];\n Id(function () {\n var c = L.suspense;\n L.suspense = void 0 === b ? null : b;\n\n try {\n e(a);\n } finally {\n L.suspense = c;\n }\n }, [a, b]);\n return d;\n },\n useTransition: function useTransition(a) {\n var b = Ad(yd),\n c = b[0];\n b = b[1];\n return [Od(Qd.bind(null, b, a), [b, a]), c];\n }\n },\n Rd = null,\n Sd = null,\n Td = !1;\n\n function Ud(a, b) {\n var c = Vd(5, null, null, 0);\n c.elementType = \"DELETED\";\n c.type = \"DELETED\";\n c.stateNode = b;\n c[\"return\"] = a;\n c.effectTag = 8;\n null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n }\n\n function Wd(a, b) {\n switch (a.tag) {\n case 5:\n return b = nb(b, a.type, a.pendingProps), null !== b ? (a.stateNode = b, !0) : !1;\n\n case 6:\n return b = ob(b, a.pendingProps), null !== b ? (a.stateNode = b, !0) : !1;\n\n case 13:\n return !1;\n\n default:\n return !1;\n }\n }\n\n function Xd(a) {\n if (Td) {\n var b = Sd;\n\n if (b) {\n var c = b;\n\n if (!Wd(a, b)) {\n b = rb(c);\n\n if (!b || !Wd(a, b)) {\n a.effectTag = a.effectTag & -1025 | 2;\n Td = !1;\n Rd = a;\n return;\n }\n\n Ud(Rd, c);\n }\n\n Rd = a;\n Sd = sb(b);\n } else a.effectTag = a.effectTag & -1025 | 2, Td = !1, Rd = a;\n }\n }\n\n function Yd(a) {\n for (a = a[\"return\"]; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) {\n a = a[\"return\"];\n }\n\n Rd = a;\n }\n\n function Zd(a) {\n if (!Sa || a !== Rd) return !1;\n if (!Td) return Yd(a), Td = !0, !1;\n var b = a.type;\n if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !Ja(b, a.memoizedProps)) for (b = Sd; b;) {\n Ud(a, b), b = rb(b);\n }\n Yd(a);\n\n if (13 === a.tag) {\n if (!Sa) throw Error(n(316));\n a = a.memoizedState;\n a = null !== a ? a.dehydrated : null;\n if (!a) throw Error(n(317));\n Sd = vb(a);\n } else Sd = Rd ? rb(a.stateNode) : null;\n\n return !0;\n }\n\n function $d() {\n Sa && (Sd = Rd = null, Td = !1);\n }\n\n var ae = p.ReactCurrentOwner,\n wc = !1;\n\n function R(a, b, c, d) {\n b.child = null === a ? cd(b, null, c, d) : bd(b, a.child, c, d);\n }\n\n function be(a, b, c, d, e) {\n c = c.render;\n var f = b.ref;\n vc(b, e);\n d = rd(a, b, c, d, f, e);\n if (null !== a && !wc) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), ce(a, b, e);\n b.effectTag |= 1;\n R(a, b, d, e);\n return b.child;\n }\n\n function de(a, b, c, d, e, f) {\n if (null === a) {\n var g = c.type;\n if (\"function\" === typeof g && !ee(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, fe(a, b, g, d, e, f);\n a = Zc(c.type, null, d, null, b.mode, f);\n a.ref = b.ref;\n a[\"return\"] = b;\n return b.child = a;\n }\n\n g = a.child;\n if (e < f && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : lc, c(e, d) && a.ref === b.ref)) return ce(a, b, f);\n b.effectTag |= 1;\n a = Xc(g, d);\n a.ref = b.ref;\n a[\"return\"] = b;\n return b.child = a;\n }\n\n function fe(a, b, c, d, e, f) {\n return null !== a && lc(a.memoizedProps, d) && a.ref === b.ref && (wc = !1, e < f) ? (b.expirationTime = a.expirationTime, ce(a, b, f)) : ge(a, b, c, d, f);\n }\n\n function he(a, b) {\n var c = b.ref;\n if (null === a && null !== c || null !== a && a.ref !== c) b.effectTag |= 128;\n }\n\n function ge(a, b, c, d, e) {\n var f = F(c) ? Db : D.current;\n f = Eb(b, f);\n vc(b, e);\n c = rd(a, b, c, d, f, e);\n if (null !== a && !wc) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), ce(a, b, e);\n b.effectTag |= 1;\n R(a, b, c, e);\n return b.child;\n }\n\n function ie(a, b, c, d, e) {\n if (F(c)) {\n var f = !0;\n Ib(b);\n } else f = !1;\n\n vc(b, e);\n if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), Qc(b, c, d), Sc(b, c, d, e), d = !0;else if (null === a) {\n var g = b.stateNode,\n h = b.memoizedProps;\n g.props = h;\n var k = g.context,\n l = c.contextType;\n \"object\" === typeof l && null !== l ? l = I(l) : (l = F(c) ? Db : D.current, l = Eb(b, l));\n var q = c.getDerivedStateFromProps,\n r = \"function\" === typeof q || \"function\" === typeof g.getSnapshotBeforeUpdate;\n r || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Rc(b, g, d, l);\n xc = !1;\n var w = b.memoizedState;\n g.state = w;\n Dc(b, d, g, e);\n k = b.memoizedState;\n h !== d || w !== k || E.current || xc ? (\"function\" === typeof q && (Kc(b, c, q, d), k = b.memoizedState), (h = xc || Pc(b, c, h, d, w, k, l)) ? (r || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.effectTag |= 4)) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), d = !1);\n } else g = b.stateNode, zc(a, b), h = b.memoizedProps, g.props = b.type === b.elementType ? h : mc(b.type, h), k = g.context, l = c.contextType, \"object\" === typeof l && null !== l ? l = I(l) : (l = F(c) ? Db : D.current, l = Eb(b, l)), q = c.getDerivedStateFromProps, (r = \"function\" === typeof q || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Rc(b, g, d, l), xc = !1, k = b.memoizedState, g.state = k, Dc(b, d, g, e), w = b.memoizedState, h !== d || k !== w || E.current || xc ? (\"function\" === typeof q && (Kc(b, c, q, d), w = b.memoizedState), (q = xc || Pc(b, c, h, d, k, w, l)) ? (r || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, w, l), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, w, l)), \"function\" === typeof g.componentDidUpdate && (b.effectTag |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.effectTag |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), b.memoizedProps = d, b.memoizedState = w), g.props = d, g.state = w, g.context = l, d = q) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), d = !1);\n return je(a, b, c, d, f, e);\n }\n\n function je(a, b, c, d, e, f) {\n he(a, b);\n var g = 0 !== (b.effectTag & 64);\n if (!d && !g) return e && Jb(b, c, !1), ce(a, b, f);\n d = b.stateNode;\n ae.current = b;\n var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n b.effectTag |= 1;\n null !== a && g ? (b.child = bd(b, a.child, null, f), b.child = bd(b, null, h, f)) : R(a, b, h, f);\n b.memoizedState = d.state;\n e && Jb(b, c, !0);\n return b.child;\n }\n\n function le(a) {\n var b = a.stateNode;\n b.pendingContext ? Gb(a, b.pendingContext, b.pendingContext !== b.context) : b.context && Gb(a, b.context, !1);\n hd(a, b.containerInfo);\n }\n\n var me = {\n dehydrated: null,\n retryTime: 0\n };\n\n function ne(a, b, c) {\n var d = b.mode,\n e = b.pendingProps,\n f = K.current,\n g = !1,\n h;\n (h = 0 !== (b.effectTag & 64)) || (h = 0 !== (f & 2) && (null === a || null !== a.memoizedState));\n h ? (g = !0, b.effectTag &= -65) : null !== a && null === a.memoizedState || void 0 === e.fallback || !0 === e.unstable_avoidThisFallback || (f |= 1);\n C(K, f & 1);\n\n if (null === a) {\n void 0 !== e.fallback && Xd(b);\n\n if (g) {\n g = e.fallback;\n e = ad(null, d, 0, null);\n e[\"return\"] = b;\n if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n a[\"return\"] = e, a = a.sibling;\n }\n c = ad(g, d, c, null);\n c[\"return\"] = b;\n e.sibling = c;\n b.memoizedState = me;\n b.child = e;\n return c;\n }\n\n d = e.children;\n b.memoizedState = null;\n return b.child = cd(b, null, d, c);\n }\n\n if (null !== a.memoizedState) {\n a = a.child;\n d = a.sibling;\n\n if (g) {\n e = e.fallback;\n c = Xc(a, a.pendingProps);\n c[\"return\"] = b;\n if (0 === (b.mode & 2) && (g = null !== b.memoizedState ? b.child.child : b.child, g !== a.child)) for (c.child = g; null !== g;) {\n g[\"return\"] = c, g = g.sibling;\n }\n d = Xc(d, e);\n d[\"return\"] = b;\n c.sibling = d;\n c.childExpirationTime = 0;\n b.memoizedState = me;\n b.child = c;\n return d;\n }\n\n c = bd(b, a.child, e.children, c);\n b.memoizedState = null;\n return b.child = c;\n }\n\n a = a.child;\n\n if (g) {\n g = e.fallback;\n e = ad(null, d, 0, null);\n e[\"return\"] = b;\n e.child = a;\n null !== a && (a[\"return\"] = e);\n if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n a[\"return\"] = e, a = a.sibling;\n }\n c = ad(g, d, c, null);\n c[\"return\"] = b;\n e.sibling = c;\n c.effectTag |= 2;\n e.childExpirationTime = 0;\n b.memoizedState = me;\n b.child = e;\n return c;\n }\n\n b.memoizedState = null;\n return b.child = bd(b, a, e.children, c);\n }\n\n function oe(a, b) {\n a.expirationTime < b && (a.expirationTime = b);\n var c = a.alternate;\n null !== c && c.expirationTime < b && (c.expirationTime = b);\n uc(a[\"return\"], b);\n }\n\n function pe(a, b, c, d, e, f) {\n var g = a.memoizedState;\n null === g ? a.memoizedState = {\n isBackwards: b,\n rendering: null,\n renderingStartTime: 0,\n last: d,\n tail: c,\n tailExpiration: 0,\n tailMode: e,\n lastEffect: f\n } : (g.isBackwards = b, g.rendering = null, g.renderingStartTime = 0, g.last = d, g.tail = c, g.tailExpiration = 0, g.tailMode = e, g.lastEffect = f);\n }\n\n function qe(a, b, c) {\n var d = b.pendingProps,\n e = d.revealOrder,\n f = d.tail;\n R(a, b, d.children, c);\n d = K.current;\n if (0 !== (d & 2)) d = d & 1 | 2, b.effectTag |= 64;else {\n if (null !== a && 0 !== (a.effectTag & 64)) a: for (a = b.child; null !== a;) {\n if (13 === a.tag) null !== a.memoizedState && oe(a, c);else if (19 === a.tag) oe(a, c);else if (null !== a.child) {\n a.child[\"return\"] = a;\n a = a.child;\n continue;\n }\n if (a === b) break a;\n\n for (; null === a.sibling;) {\n if (null === a[\"return\"] || a[\"return\"] === b) break a;\n a = a[\"return\"];\n }\n\n a.sibling[\"return\"] = a[\"return\"];\n a = a.sibling;\n }\n d &= 1;\n }\n C(K, d);\n if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n case \"forwards\":\n c = b.child;\n\n for (e = null; null !== c;) {\n a = c.alternate, null !== a && null === ld(a) && (e = c), c = c.sibling;\n }\n\n c = e;\n null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n pe(b, !1, e, c, f, b.lastEffect);\n break;\n\n case \"backwards\":\n c = null;\n e = b.child;\n\n for (b.child = null; null !== e;) {\n a = e.alternate;\n\n if (null !== a && null === ld(a)) {\n b.child = e;\n break;\n }\n\n a = e.sibling;\n e.sibling = c;\n c = e;\n e = a;\n }\n\n pe(b, !0, c, null, f, b.lastEffect);\n break;\n\n case \"together\":\n pe(b, !1, null, null, void 0, b.lastEffect);\n break;\n\n default:\n b.memoizedState = null;\n }\n return b.child;\n }\n\n function ce(a, b, c) {\n null !== a && (b.dependencies = a.dependencies);\n var d = b.expirationTime;\n 0 !== d && Gc(d);\n if (b.childExpirationTime < c) return null;\n if (null !== a && b.child !== a.child) throw Error(n(153));\n\n if (null !== b.child) {\n a = b.child;\n c = Xc(a, a.pendingProps);\n b.child = c;\n\n for (c[\"return\"] = b; null !== a.sibling;) {\n a = a.sibling, c = c.sibling = Xc(a, a.pendingProps), c[\"return\"] = b;\n }\n\n c.sibling = null;\n }\n\n return b.child;\n }\n\n function re(a) {\n a.effectTag |= 4;\n }\n\n var _se, te, ue, ve;\n\n if (Qa) _se = function se(a, b) {\n for (var c = b.child; null !== c;) {\n if (5 === c.tag || 6 === c.tag) Ga(a, c.stateNode);else if (4 !== c.tag && null !== c.child) {\n c.child[\"return\"] = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n\n for (; null === c.sibling;) {\n if (null === c[\"return\"] || c[\"return\"] === b) return;\n c = c[\"return\"];\n }\n\n c.sibling[\"return\"] = c[\"return\"];\n c = c.sibling;\n }\n }, te = function te() {}, ue = function ue(a, b, c, d, e) {\n a = a.memoizedProps;\n\n if (a !== d) {\n var f = b.stateNode,\n g = gd(J.current);\n c = Ia(f, c, a, d, e, g);\n (b.updateQueue = c) && re(b);\n }\n }, ve = function ve(a, b, c, d) {\n c !== d && re(b);\n };else if (Ra) {\n _se = function se(a, b, c, d) {\n for (var e = b.child; null !== e;) {\n if (5 === e.tag) {\n var f = e.stateNode;\n c && d && (f = lb(f, e.type, e.memoizedProps, e));\n Ga(a, f);\n } else if (6 === e.tag) f = e.stateNode, c && d && (f = mb(f, e.memoizedProps, e)), Ga(a, f);else if (4 !== e.tag) {\n if (13 === e.tag && 0 !== (e.effectTag & 4) && (f = null !== e.memoizedState)) {\n var g = e.child;\n\n if (null !== g && (null !== g.child && (g.child[\"return\"] = g, _se(a, g, !0, f)), f = g.sibling, null !== f)) {\n f[\"return\"] = e;\n e = f;\n continue;\n }\n }\n\n if (null !== e.child) {\n e.child[\"return\"] = e;\n e = e.child;\n continue;\n }\n }\n\n if (e === b) break;\n\n for (; null === e.sibling;) {\n if (null === e[\"return\"] || e[\"return\"] === b) return;\n e = e[\"return\"];\n }\n\n e.sibling[\"return\"] = e[\"return\"];\n e = e.sibling;\n }\n };\n\n var we = function we(a, b, c, d) {\n for (var e = b.child; null !== e;) {\n if (5 === e.tag) {\n var f = e.stateNode;\n c && d && (f = lb(f, e.type, e.memoizedProps, e));\n ib(a, f);\n } else if (6 === e.tag) f = e.stateNode, c && d && (f = mb(f, e.memoizedProps, e)), ib(a, f);else if (4 !== e.tag) {\n if (13 === e.tag && 0 !== (e.effectTag & 4) && (f = null !== e.memoizedState)) {\n var g = e.child;\n\n if (null !== g && (null !== g.child && (g.child[\"return\"] = g, we(a, g, !0, f)), f = g.sibling, null !== f)) {\n f[\"return\"] = e;\n e = f;\n continue;\n }\n }\n\n if (null !== e.child) {\n e.child[\"return\"] = e;\n e = e.child;\n continue;\n }\n }\n\n if (e === b) break;\n\n for (; null === e.sibling;) {\n if (null === e[\"return\"] || e[\"return\"] === b) return;\n e = e[\"return\"];\n }\n\n e.sibling[\"return\"] = e[\"return\"];\n e = e.sibling;\n }\n };\n\n te = function te(a) {\n var b = a.stateNode;\n\n if (null !== a.firstEffect) {\n var c = b.containerInfo,\n d = hb(c);\n we(d, a, !1, !1);\n b.pendingChildren = d;\n re(a);\n jb(c, d);\n }\n };\n\n ue = function ue(a, b, c, d, e) {\n var f = a.stateNode,\n g = a.memoizedProps;\n if ((a = null === b.firstEffect) && g === d) b.stateNode = f;else {\n var h = b.stateNode,\n k = gd(J.current),\n l = null;\n g !== d && (l = Ia(h, c, g, d, e, k));\n a && null === l ? b.stateNode = f : (f = gb(f, l, c, g, d, b, a, h), Ha(f, c, d, e, k) && re(b), b.stateNode = f, a ? re(b) : _se(f, b, !1, !1));\n }\n };\n\n ve = function ve(a, b, c, d) {\n c !== d ? (a = gd(fd.current), c = gd(J.current), b.stateNode = La(d, a, c, b), re(b)) : b.stateNode = a.stateNode;\n };\n } else te = function te() {}, ue = function ue() {}, ve = function ve() {};\n\n function xe(a, b) {\n switch (a.tailMode) {\n case \"hidden\":\n b = a.tail;\n\n for (var c = null; null !== b;) {\n null !== b.alternate && (c = b), b = b.sibling;\n }\n\n null === c ? a.tail = null : c.sibling = null;\n break;\n\n case \"collapsed\":\n c = a.tail;\n\n for (var d = null; null !== c;) {\n null !== c.alternate && (d = c), c = c.sibling;\n }\n\n null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n }\n }\n\n function ye(a, b, c) {\n var d = b.pendingProps;\n\n switch (b.tag) {\n case 2:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return null;\n\n case 1:\n return F(b.type) && Fb(), null;\n\n case 3:\n return id(), B(E), B(D), d = b.stateNode, d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null), (null === a || null === a.child) && Zd(b) && re(b), te(b), null;\n\n case 5:\n kd(b);\n var e = gd(fd.current);\n c = b.type;\n if (null !== a && null != b.stateNode) ue(a, b, c, d, e), a.ref !== b.ref && (b.effectTag |= 128);else {\n if (!d) {\n if (null === b.stateNode) throw Error(n(166));\n return null;\n }\n\n a = gd(J.current);\n\n if (Zd(b)) {\n if (!Sa) throw Error(n(175));\n a = tb(b.stateNode, b.type, b.memoizedProps, e, a, b);\n b.updateQueue = a;\n null !== a && re(b);\n } else {\n var f = Fa(c, d, e, a, b);\n\n _se(f, b, !1, !1);\n\n b.stateNode = f;\n Ha(f, c, d, e, a) && re(b);\n }\n\n null !== b.ref && (b.effectTag |= 128);\n }\n return null;\n\n case 6:\n if (a && null != b.stateNode) ve(a, b, a.memoizedProps, d);else {\n if (\"string\" !== typeof d && null === b.stateNode) throw Error(n(166));\n a = gd(fd.current);\n e = gd(J.current);\n\n if (Zd(b)) {\n if (!Sa) throw Error(n(176));\n ub(b.stateNode, b.memoizedProps, b) && re(b);\n } else b.stateNode = La(d, a, e, b);\n }\n return null;\n\n case 13:\n B(K);\n d = b.memoizedState;\n if (0 !== (b.effectTag & 64)) return b.expirationTime = c, b;\n d = null !== d;\n e = !1;\n null === a ? void 0 !== b.memoizedProps.fallback && Zd(b) : (c = a.memoizedState, e = null !== c, d || null === c || (c = a.child.sibling, null !== c && (f = b.firstEffect, null !== f ? (b.firstEffect = c, c.nextEffect = f) : (b.firstEffect = b.lastEffect = c, c.nextEffect = null), c.effectTag = 8)));\n if (d && !e && 0 !== (b.mode & 2)) if (null === a && !0 !== b.memoizedProps.unstable_avoidThisFallback || 0 !== (K.current & 1)) S === ze && (S = Ae);else {\n if (S === ze || S === Ae) S = Be;\n 0 !== Ce && null !== T && (De(T, U), Ee(T, Ce));\n }\n Ra && d && (b.effectTag |= 4);\n Qa && (d || e) && (b.effectTag |= 4);\n return null;\n\n case 4:\n return id(), te(b), null;\n\n case 10:\n return tc(b), null;\n\n case 17:\n return F(b.type) && Fb(), null;\n\n case 19:\n B(K);\n d = b.memoizedState;\n if (null === d) return null;\n e = 0 !== (b.effectTag & 64);\n f = d.rendering;\n if (null === f) {\n if (e) xe(d, !1);else {\n if (S !== ze || null !== a && 0 !== (a.effectTag & 64)) for (a = b.child; null !== a;) {\n f = ld(a);\n\n if (null !== f) {\n b.effectTag |= 64;\n xe(d, !1);\n a = f.updateQueue;\n null !== a && (b.updateQueue = a, b.effectTag |= 4);\n null === d.lastEffect && (b.firstEffect = null);\n b.lastEffect = d.lastEffect;\n a = c;\n\n for (d = b.child; null !== d;) {\n e = d, c = a, e.effectTag &= 2, e.nextEffect = null, e.firstEffect = null, e.lastEffect = null, f = e.alternate, null === f ? (e.childExpirationTime = 0, e.expirationTime = c, e.child = null, e.memoizedProps = null, e.memoizedState = null, e.updateQueue = null, e.dependencies = null) : (e.childExpirationTime = f.childExpirationTime, e.expirationTime = f.expirationTime, e.child = f.child, e.memoizedProps = f.memoizedProps, e.memoizedState = f.memoizedState, e.updateQueue = f.updateQueue, c = f.dependencies, e.dependencies = null === c ? null : {\n expirationTime: c.expirationTime,\n firstContext: c.firstContext,\n responders: c.responders\n }), d = d.sibling;\n }\n\n C(K, K.current & 1 | 2);\n return b.child;\n }\n\n a = a.sibling;\n }\n }\n } else {\n if (!e) if (a = ld(f), null !== a) {\n if (b.effectTag |= 64, e = !0, a = a.updateQueue, null !== a && (b.updateQueue = a, b.effectTag |= 4), xe(d, !0), null === d.tail && \"hidden\" === d.tailMode && !f.alternate) return b = b.lastEffect = d.lastEffect, null !== b && (b.nextEffect = null), null;\n } else 2 * G() - d.renderingStartTime > d.tailExpiration && 1 < c && (b.effectTag |= 64, e = !0, xe(d, !1), b.expirationTime = b.childExpirationTime = c - 1);\n d.isBackwards ? (f.sibling = b.child, b.child = f) : (a = d.last, null !== a ? a.sibling = f : b.child = f, d.last = f);\n }\n return null !== d.tail ? (0 === d.tailExpiration && (d.tailExpiration = G() + 500), a = d.tail, d.rendering = a, d.tail = a.sibling, d.lastEffect = b.lastEffect, d.renderingStartTime = G(), a.sibling = null, b = K.current, C(K, e ? b & 1 | 2 : b & 1), a) : null;\n }\n\n throw Error(n(156, b.tag));\n }\n\n function Fe(a) {\n switch (a.tag) {\n case 1:\n F(a.type) && Fb();\n var b = a.effectTag;\n return b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n case 3:\n id();\n B(E);\n B(D);\n b = a.effectTag;\n if (0 !== (b & 64)) throw Error(n(285));\n a.effectTag = b & -4097 | 64;\n return a;\n\n case 5:\n return kd(a), null;\n\n case 13:\n return B(K), b = a.effectTag, b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n case 19:\n return B(K), null;\n\n case 4:\n return id(), null;\n\n case 10:\n return tc(a), null;\n\n default:\n return null;\n }\n }\n\n function Ge(a, b) {\n return {\n value: a,\n source: b,\n stack: zb(b)\n };\n }\n\n var He = \"function\" === typeof WeakSet ? WeakSet : Set;\n\n function Ie(a, b) {\n var c = b.source,\n d = b.stack;\n null === d && null !== c && (d = zb(c));\n null !== c && ua(c.type);\n b = b.value;\n null !== a && 1 === a.tag && ua(a.type);\n\n try {\n console.error(b);\n } catch (e) {\n setTimeout(function () {\n throw e;\n });\n }\n }\n\n function Je(a, b) {\n try {\n b.props = a.memoizedProps, b.state = a.memoizedState, b.componentWillUnmount();\n } catch (c) {\n Ke(a, c);\n }\n }\n\n function Le(a) {\n var b = a.ref;\n if (null !== b) if (\"function\" === typeof b) try {\n b(null);\n } catch (c) {\n Ke(a, c);\n } else b.current = null;\n }\n\n function Me(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 15:\n case 22:\n return;\n\n case 1:\n if (b.effectTag & 256 && null !== a) {\n var c = a.memoizedProps,\n d = a.memoizedState;\n a = b.stateNode;\n b = a.getSnapshotBeforeUpdate(b.elementType === b.type ? c : mc(b.type, c), d);\n a.__reactInternalSnapshotBeforeUpdate = b;\n }\n\n return;\n\n case 3:\n case 5:\n case 6:\n case 4:\n case 17:\n return;\n }\n\n throw Error(n(163));\n }\n\n function Ne(a, b) {\n b = b.updateQueue;\n b = null !== b ? b.lastEffect : null;\n\n if (null !== b) {\n var c = b = b.next;\n\n do {\n if ((c.tag & a) === a) {\n var d = c.destroy;\n c.destroy = void 0;\n void 0 !== d && d();\n }\n\n c = c.next;\n } while (c !== b);\n }\n }\n\n function Oe(a, b) {\n b = b.updateQueue;\n b = null !== b ? b.lastEffect : null;\n\n if (null !== b) {\n var c = b = b.next;\n\n do {\n if ((c.tag & a) === a) {\n var d = c.create;\n c.destroy = d();\n }\n\n c = c.next;\n } while (c !== b);\n }\n }\n\n function Pe(a, b, c) {\n switch (c.tag) {\n case 0:\n case 11:\n case 15:\n case 22:\n Oe(3, c);\n return;\n\n case 1:\n a = c.stateNode;\n if (c.effectTag & 4) if (null === b) a.componentDidMount();else {\n var d = c.elementType === c.type ? b.memoizedProps : mc(c.type, b.memoizedProps);\n a.componentDidUpdate(d, b.memoizedState, a.__reactInternalSnapshotBeforeUpdate);\n }\n b = c.updateQueue;\n null !== b && Hc(c, b, a);\n return;\n\n case 3:\n b = c.updateQueue;\n\n if (null !== b) {\n a = null;\n if (null !== c.child) switch (c.child.tag) {\n case 5:\n a = Aa(c.child.stateNode);\n break;\n\n case 1:\n a = c.child.stateNode;\n }\n Hc(c, b, a);\n }\n\n return;\n\n case 5:\n a = c.stateNode;\n null === b && c.effectTag & 4 && Wa(a, c.type, c.memoizedProps, c);\n return;\n\n case 6:\n return;\n\n case 4:\n return;\n\n case 12:\n return;\n\n case 13:\n Sa && null === c.memoizedState && (c = c.alternate, null !== c && (c = c.memoizedState, null !== c && (c = c.dehydrated, null !== c && xb(c))));\n return;\n\n case 19:\n case 17:\n case 20:\n case 21:\n return;\n }\n\n throw Error(n(163));\n }\n\n function Qe(a, b, c) {\n \"function\" === typeof Re && Re(b);\n\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n case 22:\n a = b.updateQueue;\n\n if (null !== a && (a = a.lastEffect, null !== a)) {\n var d = a.next;\n dc(97 < c ? 97 : c, function () {\n var a = d;\n\n do {\n var c = a.destroy;\n\n if (void 0 !== c) {\n var g = b;\n\n try {\n c();\n } catch (h) {\n Ke(g, h);\n }\n }\n\n a = a.next;\n } while (a !== d);\n });\n }\n\n break;\n\n case 1:\n Le(b);\n c = b.stateNode;\n \"function\" === typeof c.componentWillUnmount && Je(b, c);\n break;\n\n case 5:\n Le(b);\n break;\n\n case 4:\n Qa ? Se(a, b, c) : Ra && Te(b);\n }\n }\n\n function Ue(a, b, c) {\n for (var d = b;;) {\n if (Qe(a, d, c), null === d.child || Qa && 4 === d.tag) {\n if (d === b) break;\n\n for (; null === d.sibling;) {\n if (null === d[\"return\"] || d[\"return\"] === b) return;\n d = d[\"return\"];\n }\n\n d.sibling[\"return\"] = d[\"return\"];\n d = d.sibling;\n } else d.child[\"return\"] = d, d = d.child;\n }\n }\n\n function Ve(a) {\n var b = a.alternate;\n a[\"return\"] = null;\n a.child = null;\n a.memoizedState = null;\n a.updateQueue = null;\n a.dependencies = null;\n a.alternate = null;\n a.firstEffect = null;\n a.lastEffect = null;\n a.pendingProps = null;\n a.memoizedProps = null;\n a.stateNode = null;\n null !== b && Ve(b);\n }\n\n function Te(a) {\n if (Ra) {\n a = a.stateNode.containerInfo;\n var b = hb(a);\n kb(a, b);\n }\n }\n\n function We(a) {\n return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n }\n\n function Xe(a) {\n if (Qa) {\n a: {\n for (var b = a[\"return\"]; null !== b;) {\n if (We(b)) {\n var c = b;\n break a;\n }\n\n b = b[\"return\"];\n }\n\n throw Error(n(160));\n }\n\n b = c.stateNode;\n\n switch (c.tag) {\n case 5:\n var d = !1;\n break;\n\n case 3:\n b = b.containerInfo;\n d = !0;\n break;\n\n case 4:\n b = b.containerInfo;\n d = !0;\n break;\n\n default:\n throw Error(n(161));\n }\n\n c.effectTag & 16 && (bb(b), c.effectTag &= -17);\n\n a: b: for (c = a;;) {\n for (; null === c.sibling;) {\n if (null === c[\"return\"] || We(c[\"return\"])) {\n c = null;\n break a;\n }\n\n c = c[\"return\"];\n }\n\n c.sibling[\"return\"] = c[\"return\"];\n\n for (c = c.sibling; 5 !== c.tag && 6 !== c.tag && 18 !== c.tag;) {\n if (c.effectTag & 2) continue b;\n if (null === c.child || 4 === c.tag) continue b;else c.child[\"return\"] = c, c = c.child;\n }\n\n if (!(c.effectTag & 2)) {\n c = c.stateNode;\n break a;\n }\n }\n\n d ? Ye(a, c, b) : Ze(a, c, b);\n }\n }\n\n function Ye(a, b, c) {\n var d = a.tag,\n e = 5 === d || 6 === d;\n if (e) a = e ? a.stateNode : a.stateNode.instance, b ? Za(c, a, b) : Ua(c, a);else if (4 !== d && (a = a.child, null !== a)) for (Ye(a, b, c), a = a.sibling; null !== a;) {\n Ye(a, b, c), a = a.sibling;\n }\n }\n\n function Ze(a, b, c) {\n var d = a.tag,\n e = 5 === d || 6 === d;\n if (e) a = e ? a.stateNode : a.stateNode.instance, b ? Ya(c, a, b) : Ta(c, a);else if (4 !== d && (a = a.child, null !== a)) for (Ze(a, b, c), a = a.sibling; null !== a;) {\n Ze(a, b, c), a = a.sibling;\n }\n }\n\n function Se(a, b, c) {\n for (var d = b, e = !1, f, g;;) {\n if (!e) {\n e = d[\"return\"];\n\n a: for (;;) {\n if (null === e) throw Error(n(160));\n f = e.stateNode;\n\n switch (e.tag) {\n case 5:\n g = !1;\n break a;\n\n case 3:\n f = f.containerInfo;\n g = !0;\n break a;\n\n case 4:\n f = f.containerInfo;\n g = !0;\n break a;\n }\n\n e = e[\"return\"];\n }\n\n e = !0;\n }\n\n if (5 === d.tag || 6 === d.tag) Ue(a, d, c), g ? ab(f, d.stateNode) : $a(f, d.stateNode);else if (4 === d.tag) {\n if (null !== d.child) {\n f = d.stateNode.containerInfo;\n g = !0;\n d.child[\"return\"] = d;\n d = d.child;\n continue;\n }\n } else if (Qe(a, d, c), null !== d.child) {\n d.child[\"return\"] = d;\n d = d.child;\n continue;\n }\n if (d === b) break;\n\n for (; null === d.sibling;) {\n if (null === d[\"return\"] || d[\"return\"] === b) return;\n d = d[\"return\"];\n 4 === d.tag && (e = !1);\n }\n\n d.sibling[\"return\"] = d[\"return\"];\n d = d.sibling;\n }\n }\n\n function $e(a, b) {\n if (Qa) {\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n case 22:\n Ne(3, b);\n return;\n\n case 1:\n return;\n\n case 5:\n var c = b.stateNode;\n\n if (null != c) {\n var d = b.memoizedProps;\n a = null !== a ? a.memoizedProps : d;\n var e = b.type,\n f = b.updateQueue;\n b.updateQueue = null;\n null !== f && Xa(c, f, e, a, d, b);\n }\n\n return;\n\n case 6:\n if (null === b.stateNode) throw Error(n(162));\n c = b.memoizedProps;\n Va(b.stateNode, null !== a ? a.memoizedProps : c, c);\n return;\n\n case 3:\n Sa && (b = b.stateNode, b.hydrate && (b.hydrate = !1, wb(b.containerInfo)));\n return;\n\n case 12:\n return;\n\n case 13:\n af(b);\n bf(b);\n return;\n\n case 19:\n bf(b);\n return;\n\n case 17:\n return;\n }\n\n throw Error(n(163));\n }\n\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n case 22:\n Ne(3, b);\n return;\n\n case 12:\n return;\n\n case 13:\n af(b);\n bf(b);\n return;\n\n case 19:\n bf(b);\n return;\n\n case 3:\n Sa && (c = b.stateNode, c.hydrate && (c.hydrate = !1, wb(c.containerInfo)));\n }\n\n a: if (Ra) {\n switch (b.tag) {\n case 1:\n case 5:\n case 6:\n case 20:\n break a;\n\n case 3:\n case 4:\n b = b.stateNode;\n kb(b.containerInfo, b.pendingChildren);\n break a;\n }\n\n throw Error(n(163));\n }\n }\n\n function af(a) {\n var b = a;\n if (null === a.memoizedState) var c = !1;else c = !0, b = a.child, cf = G();\n if (Qa && null !== b) a: if (a = b, Qa) for (b = a;;) {\n if (5 === b.tag) {\n var d = b.stateNode;\n c ? cb(d) : eb(b.stateNode, b.memoizedProps);\n } else if (6 === b.tag) d = b.stateNode, c ? db(d) : fb(d, b.memoizedProps);else if (13 === b.tag && null !== b.memoizedState && null === b.memoizedState.dehydrated) {\n d = b.child.sibling;\n d[\"return\"] = b;\n b = d;\n continue;\n } else if (null !== b.child) {\n b.child[\"return\"] = b;\n b = b.child;\n continue;\n }\n\n if (b === a) break a;\n\n for (; null === b.sibling;) {\n if (null === b[\"return\"] || b[\"return\"] === a) break a;\n b = b[\"return\"];\n }\n\n b.sibling[\"return\"] = b[\"return\"];\n b = b.sibling;\n }\n }\n\n function bf(a) {\n var b = a.updateQueue;\n\n if (null !== b) {\n a.updateQueue = null;\n var c = a.stateNode;\n null === c && (c = a.stateNode = new He());\n b.forEach(function (b) {\n var d = df.bind(null, a, b);\n c.has(b) || (c.add(b), b.then(d, d));\n });\n }\n }\n\n var ef = \"function\" === typeof WeakMap ? WeakMap : Map;\n\n function ff(a, b, c) {\n c = Ac(c, null);\n c.tag = 3;\n c.payload = {\n element: null\n };\n var d = b.value;\n\n c.callback = function () {\n gf || (gf = !0, hf = d);\n Ie(a, b);\n };\n\n return c;\n }\n\n function jf(a, b, c) {\n c = Ac(c, null);\n c.tag = 3;\n var d = a.type.getDerivedStateFromError;\n\n if (\"function\" === typeof d) {\n var e = b.value;\n\n c.payload = function () {\n Ie(a, b);\n return d(e);\n };\n }\n\n var f = a.stateNode;\n null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function () {\n \"function\" !== typeof d && (null === kf ? kf = new Set([this]) : kf.add(this), Ie(a, b));\n var c = b.stack;\n this.componentDidCatch(b.value, {\n componentStack: null !== c ? c : \"\"\n });\n });\n return c;\n }\n\n var lf = Math.ceil,\n mf = p.ReactCurrentDispatcher,\n nf = p.ReactCurrentOwner,\n V = 0,\n of = 8,\n pf = 16,\n qf = 32,\n ze = 0,\n rf = 1,\n sf = 2,\n Ae = 3,\n Be = 4,\n tf = 5,\n W = V,\n T = null,\n X = null,\n U = 0,\n S = ze,\n uf = null,\n vf = 1073741823,\n wf = 1073741823,\n xf = null,\n Ce = 0,\n yf = !1,\n cf = 0,\n zf = 500,\n Y = null,\n gf = !1,\n hf = null,\n kf = null,\n Af = !1,\n Bf = null,\n Cf = 90,\n Df = null,\n Ef = 0,\n Ff = null,\n Gf = 0;\n\n function Lc() {\n return (W & (pf | qf)) !== V ? 1073741821 - (G() / 10 | 0) : 0 !== Gf ? Gf : Gf = 1073741821 - (G() / 10 | 0);\n }\n\n function Mc(a, b, c) {\n b = b.mode;\n if (0 === (b & 2)) return 1073741823;\n var d = bc();\n if (0 === (b & 4)) return 99 === d ? 1073741823 : 1073741822;\n if ((W & pf) !== V) return U;\n if (null !== c) a = hc(a, c.timeoutMs | 0 || 5E3, 250);else switch (d) {\n case 99:\n a = 1073741823;\n break;\n\n case 98:\n a = hc(a, 150, 100);\n break;\n\n case 97:\n case 96:\n a = hc(a, 5E3, 250);\n break;\n\n case 95:\n a = 2;\n break;\n\n default:\n throw Error(n(326));\n }\n null !== T && a === U && --a;\n return a;\n }\n\n function Nc(a, b) {\n if (50 < Ef) throw Ef = 0, Ff = null, Error(n(185));\n a = Hf(a, b);\n\n if (null !== a) {\n var c = bc();\n 1073741823 === b ? (W & of) !== V && (W & (pf | qf)) === V ? If(a) : (Z(a), W === V && H()) : Z(a);\n (W & 4) === V || 98 !== c && 99 !== c || (null === Df ? Df = new Map([[a, b]]) : (c = Df.get(a), (void 0 === c || c > b) && Df.set(a, b)));\n }\n }\n\n function Hf(a, b) {\n a.expirationTime < b && (a.expirationTime = b);\n var c = a.alternate;\n null !== c && c.expirationTime < b && (c.expirationTime = b);\n var d = a[\"return\"],\n e = null;\n if (null === d && 3 === a.tag) e = a.stateNode;else for (; null !== d;) {\n c = d.alternate;\n d.childExpirationTime < b && (d.childExpirationTime = b);\n null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);\n\n if (null === d[\"return\"] && 3 === d.tag) {\n e = d.stateNode;\n break;\n }\n\n d = d[\"return\"];\n }\n null !== e && (T === e && (Gc(b), S === Be && De(e, U)), Ee(e, b));\n return e;\n }\n\n function Jf(a) {\n var b = a.lastExpiredTime;\n if (0 !== b) return b;\n b = a.firstPendingTime;\n if (!Kf(a, b)) return b;\n var c = a.lastPingedTime;\n a = a.nextKnownPendingLevel;\n a = c > a ? c : a;\n return 2 >= a && b !== a ? 0 : a;\n }\n\n function Z(a) {\n if (0 !== a.lastExpiredTime) a.callbackExpirationTime = 1073741823, a.callbackPriority = 99, a.callbackNode = fc(If.bind(null, a));else {\n var b = Jf(a),\n c = a.callbackNode;\n if (0 === b) null !== c && (a.callbackNode = null, a.callbackExpirationTime = 0, a.callbackPriority = 90);else {\n var d = Lc();\n 1073741823 === b ? d = 99 : 1 === b || 2 === b ? d = 95 : (d = 10 * (1073741821 - b) - 10 * (1073741821 - d), d = 0 >= d ? 99 : 250 >= d ? 98 : 5250 >= d ? 97 : 95);\n\n if (null !== c) {\n var e = a.callbackPriority;\n if (a.callbackExpirationTime === b && e >= d) return;\n c !== Vb && Mb(c);\n }\n\n a.callbackExpirationTime = b;\n a.callbackPriority = d;\n b = 1073741823 === b ? fc(If.bind(null, a)) : ec(d, Lf.bind(null, a), {\n timeout: 10 * (1073741821 - b) - G()\n });\n a.callbackNode = b;\n }\n }\n }\n\n function Lf(a, b) {\n Gf = 0;\n if (b) return b = Lc(), Mf(a, b), Z(a), null;\n var c = Jf(a);\n\n if (0 !== c) {\n b = a.callbackNode;\n if ((W & (pf | qf)) !== V) throw Error(n(327));\n Nf();\n a === T && c === U || Of(a, c);\n\n if (null !== X) {\n var d = W;\n W |= pf;\n var e = Pf();\n\n do {\n try {\n Qf();\n break;\n } catch (h) {\n Rf(a, h);\n }\n } while (1);\n\n rc();\n W = d;\n mf.current = e;\n if (S === rf) throw b = uf, Of(a, c), De(a, c), Z(a), b;\n if (null === X) switch (e = a.finishedWork = a.current.alternate, a.finishedExpirationTime = c, d = S, T = null, d) {\n case ze:\n case rf:\n throw Error(n(345));\n\n case sf:\n Mf(a, 2 < c ? 2 : c);\n break;\n\n case Ae:\n De(a, c);\n d = a.lastSuspendedTime;\n c === d && (a.nextKnownPendingLevel = Sf(e));\n\n if (1073741823 === vf && (e = cf + zf - G(), 10 < e)) {\n if (yf) {\n var f = a.lastPingedTime;\n\n if (0 === f || f >= c) {\n a.lastPingedTime = c;\n Of(a, c);\n break;\n }\n }\n\n f = Jf(a);\n if (0 !== f && f !== c) break;\n\n if (0 !== d && d !== c) {\n a.lastPingedTime = d;\n break;\n }\n\n a.timeoutHandle = Ma(Tf.bind(null, a), e);\n break;\n }\n\n Tf(a);\n break;\n\n case Be:\n De(a, c);\n d = a.lastSuspendedTime;\n c === d && (a.nextKnownPendingLevel = Sf(e));\n\n if (yf && (e = a.lastPingedTime, 0 === e || e >= c)) {\n a.lastPingedTime = c;\n Of(a, c);\n break;\n }\n\n e = Jf(a);\n if (0 !== e && e !== c) break;\n\n if (0 !== d && d !== c) {\n a.lastPingedTime = d;\n break;\n }\n\n 1073741823 !== wf ? d = 10 * (1073741821 - wf) - G() : 1073741823 === vf ? d = 0 : (d = 10 * (1073741821 - vf) - 5E3, e = G(), c = 10 * (1073741821 - c) - e, d = e - d, 0 > d && (d = 0), d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3E3 > d ? 3E3 : 4320 > d ? 4320 : 1960 * lf(d / 1960)) - d, c < d && (d = c));\n\n if (10 < d) {\n a.timeoutHandle = Ma(Tf.bind(null, a), d);\n break;\n }\n\n Tf(a);\n break;\n\n case tf:\n if (1073741823 !== vf && null !== xf) {\n f = vf;\n var g = xf;\n d = g.busyMinDurationMs | 0;\n 0 >= d ? d = 0 : (e = g.busyDelayMs | 0, f = G() - (10 * (1073741821 - f) - (g.timeoutMs | 0 || 5E3)), d = f <= e ? 0 : e + d - f);\n\n if (10 < d) {\n De(a, c);\n a.timeoutHandle = Ma(Tf.bind(null, a), d);\n break;\n }\n }\n\n Tf(a);\n break;\n\n default:\n throw Error(n(329));\n }\n Z(a);\n if (a.callbackNode === b) return Lf.bind(null, a);\n }\n }\n\n return null;\n }\n\n function If(a) {\n var b = a.lastExpiredTime;\n b = 0 !== b ? b : 1073741823;\n if ((W & (pf | qf)) !== V) throw Error(n(327));\n Nf();\n a === T && b === U || Of(a, b);\n\n if (null !== X) {\n var c = W;\n W |= pf;\n var d = Pf();\n\n do {\n try {\n Uf();\n break;\n } catch (e) {\n Rf(a, e);\n }\n } while (1);\n\n rc();\n W = c;\n mf.current = d;\n if (S === rf) throw c = uf, Of(a, b), De(a, b), Z(a), c;\n if (null !== X) throw Error(n(261));\n a.finishedWork = a.current.alternate;\n a.finishedExpirationTime = b;\n T = null;\n Tf(a);\n Z(a);\n }\n\n return null;\n }\n\n function Vf(a, b) {\n Mf(a, b);\n Z(a);\n (W & (pf | qf)) === V && H();\n }\n\n function Wf() {\n if (null !== Df) {\n var a = Df;\n Df = null;\n a.forEach(function (a, c) {\n Mf(c, a);\n Z(c);\n });\n H();\n }\n }\n\n function Xf(a, b) {\n var c = W;\n W |= 1;\n\n try {\n return a(b);\n } finally {\n W = c, W === V && H();\n }\n }\n\n function Yf(a, b) {\n if ((W & (pf | qf)) !== V) throw Error(n(187));\n var c = W;\n W |= 1;\n\n try {\n return dc(99, a.bind(null, b));\n } finally {\n W = c, H();\n }\n }\n\n function Of(a, b) {\n a.finishedWork = null;\n a.finishedExpirationTime = 0;\n var c = a.timeoutHandle;\n c !== Oa && (a.timeoutHandle = Oa, Na(c));\n if (null !== X) for (c = X[\"return\"]; null !== c;) {\n var d = c;\n\n switch (d.tag) {\n case 1:\n d = d.type.childContextTypes;\n null !== d && void 0 !== d && Fb();\n break;\n\n case 3:\n id();\n B(E);\n B(D);\n break;\n\n case 5:\n kd(d);\n break;\n\n case 4:\n id();\n break;\n\n case 13:\n B(K);\n break;\n\n case 19:\n B(K);\n break;\n\n case 10:\n tc(d);\n }\n\n c = c[\"return\"];\n }\n T = a;\n X = Xc(a.current, null);\n U = b;\n S = ze;\n uf = null;\n wf = vf = 1073741823;\n xf = null;\n Ce = 0;\n yf = !1;\n }\n\n function Rf(a, b) {\n do {\n try {\n rc();\n nd.current = vd;\n if (pd) for (var c = M.memoizedState; null !== c;) {\n var d = c.queue;\n null !== d && (d.pending = null);\n c = c.next;\n }\n od = 0;\n O = N = M = null;\n pd = !1;\n if (null === X || null === X[\"return\"]) return S = rf, uf = b, X = null;\n\n a: {\n var e = a,\n f = X[\"return\"],\n g = X,\n h = b;\n b = U;\n g.effectTag |= 2048;\n g.firstEffect = g.lastEffect = null;\n\n if (null !== h && \"object\" === typeof h && \"function\" === typeof h.then) {\n var k = h;\n\n if (0 === (g.mode & 2)) {\n var l = g.alternate;\n l ? (g.updateQueue = l.updateQueue, g.memoizedState = l.memoizedState, g.expirationTime = l.expirationTime) : (g.updateQueue = null, g.memoizedState = null);\n }\n\n var q = 0 !== (K.current & 1),\n r = f;\n\n do {\n var w;\n\n if (w = 13 === r.tag) {\n var z = r.memoizedState;\n if (null !== z) w = null !== z.dehydrated ? !0 : !1;else {\n var Q = r.memoizedProps;\n w = void 0 === Q.fallback ? !1 : !0 !== Q.unstable_avoidThisFallback ? !0 : q ? !1 : !0;\n }\n }\n\n if (w) {\n var A = r.updateQueue;\n\n if (null === A) {\n var v = new Set();\n v.add(k);\n r.updateQueue = v;\n } else A.add(k);\n\n if (0 === (r.mode & 2)) {\n r.effectTag |= 64;\n g.effectTag &= -2981;\n if (1 === g.tag) if (null === g.alternate) g.tag = 17;else {\n var t = Ac(1073741823, null);\n t.tag = 2;\n Bc(g, t);\n }\n g.expirationTime = 1073741823;\n break a;\n }\n\n h = void 0;\n g = b;\n var x = e.pingCache;\n null === x ? (x = e.pingCache = new ef(), h = new Set(), x.set(k, h)) : (h = x.get(k), void 0 === h && (h = new Set(), x.set(k, h)));\n\n if (!h.has(g)) {\n h.add(g);\n var ke = cg.bind(null, e, k, g);\n k.then(ke, ke);\n }\n\n r.effectTag |= 4096;\n r.expirationTime = b;\n break a;\n }\n\n r = r[\"return\"];\n } while (null !== r);\n\n h = Error((ua(g.type) || \"A React component\") + \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\" + zb(g));\n }\n\n S !== tf && (S = sf);\n h = Ge(h, g);\n r = f;\n\n do {\n switch (r.tag) {\n case 3:\n k = h;\n r.effectTag |= 4096;\n r.expirationTime = b;\n var Zf = ff(r, k, b);\n Cc(r, Zf);\n break a;\n\n case 1:\n k = h;\n var $f = r.type,\n Fc = r.stateNode;\n\n if (0 === (r.effectTag & 64) && (\"function\" === typeof $f.getDerivedStateFromError || null !== Fc && \"function\" === typeof Fc.componentDidCatch && (null === kf || !kf.has(Fc)))) {\n r.effectTag |= 4096;\n r.expirationTime = b;\n var ag = jf(r, k, b);\n Cc(r, ag);\n break a;\n }\n\n }\n\n r = r[\"return\"];\n } while (null !== r);\n }\n\n X = dg(X);\n } catch (bg) {\n b = bg;\n continue;\n }\n\n break;\n } while (1);\n }\n\n function Pf() {\n var a = mf.current;\n mf.current = vd;\n return null === a ? vd : a;\n }\n\n function Ec(a, b) {\n a < vf && 2 < a && (vf = a);\n null !== b && a < wf && 2 < a && (wf = a, xf = b);\n }\n\n function Gc(a) {\n a > Ce && (Ce = a);\n }\n\n function Uf() {\n for (; null !== X;) {\n X = eg(X);\n }\n }\n\n function Qf() {\n for (; null !== X && !Wb();) {\n X = eg(X);\n }\n }\n\n function eg(a) {\n var b = fg(a.alternate, a, U);\n a.memoizedProps = a.pendingProps;\n null === b && (b = dg(a));\n nf.current = null;\n return b;\n }\n\n function dg(a) {\n X = a;\n\n do {\n var b = X.alternate;\n a = X[\"return\"];\n\n if (0 === (X.effectTag & 2048)) {\n b = ye(b, X, U);\n\n if (1 === U || 1 !== X.childExpirationTime) {\n for (var c = 0, d = X.child; null !== d;) {\n var e = d.expirationTime,\n f = d.childExpirationTime;\n e > c && (c = e);\n f > c && (c = f);\n d = d.sibling;\n }\n\n X.childExpirationTime = c;\n }\n\n if (null !== b) return b;\n null !== a && 0 === (a.effectTag & 2048) && (null === a.firstEffect && (a.firstEffect = X.firstEffect), null !== X.lastEffect && (null !== a.lastEffect && (a.lastEffect.nextEffect = X.firstEffect), a.lastEffect = X.lastEffect), 1 < X.effectTag && (null !== a.lastEffect ? a.lastEffect.nextEffect = X : a.firstEffect = X, a.lastEffect = X));\n } else {\n b = Fe(X);\n if (null !== b) return b.effectTag &= 2047, b;\n null !== a && (a.firstEffect = a.lastEffect = null, a.effectTag |= 2048);\n }\n\n b = X.sibling;\n if (null !== b) return b;\n X = a;\n } while (null !== X);\n\n S === ze && (S = tf);\n return null;\n }\n\n function Sf(a) {\n var b = a.expirationTime;\n a = a.childExpirationTime;\n return b > a ? b : a;\n }\n\n function Tf(a) {\n var b = bc();\n dc(99, gg.bind(null, a, b));\n return null;\n }\n\n function gg(a, b) {\n do {\n Nf();\n } while (null !== Bf);\n\n if ((W & (pf | qf)) !== V) throw Error(n(327));\n var c = a.finishedWork,\n d = a.finishedExpirationTime;\n if (null === c) return null;\n a.finishedWork = null;\n a.finishedExpirationTime = 0;\n if (c === a.current) throw Error(n(177));\n a.callbackNode = null;\n a.callbackExpirationTime = 0;\n a.callbackPriority = 90;\n a.nextKnownPendingLevel = 0;\n var e = Sf(c);\n a.firstPendingTime = e;\n d <= a.lastSuspendedTime ? a.firstSuspendedTime = a.lastSuspendedTime = a.nextKnownPendingLevel = 0 : d <= a.firstSuspendedTime && (a.firstSuspendedTime = d - 1);\n d <= a.lastPingedTime && (a.lastPingedTime = 0);\n d <= a.lastExpiredTime && (a.lastExpiredTime = 0);\n a === T && (X = T = null, U = 0);\n 1 < c.effectTag ? null !== c.lastEffect ? (c.lastEffect.nextEffect = c, e = c.firstEffect) : e = c : e = c.firstEffect;\n\n if (null !== e) {\n var f = W;\n W |= qf;\n nf.current = null;\n Da(a.containerInfo);\n Y = e;\n\n do {\n try {\n hg();\n } catch (t) {\n if (null === Y) throw Error(n(330));\n Ke(Y, t);\n Y = Y.nextEffect;\n }\n } while (null !== Y);\n\n Y = e;\n\n do {\n try {\n for (var g = a, h = b; null !== Y;) {\n var k = Y.effectTag;\n k & 16 && Qa && bb(Y.stateNode);\n\n if (k & 128) {\n var l = Y.alternate;\n\n if (null !== l) {\n var q = l.ref;\n null !== q && (\"function\" === typeof q ? q(null) : q.current = null);\n }\n }\n\n switch (k & 1038) {\n case 2:\n Xe(Y);\n Y.effectTag &= -3;\n break;\n\n case 6:\n Xe(Y);\n Y.effectTag &= -3;\n $e(Y.alternate, Y);\n break;\n\n case 1024:\n Y.effectTag &= -1025;\n break;\n\n case 1028:\n Y.effectTag &= -1025;\n $e(Y.alternate, Y);\n break;\n\n case 4:\n $e(Y.alternate, Y);\n break;\n\n case 8:\n var r = g,\n w = Y,\n z = h;\n Qa ? Se(r, w, z) : Ue(r, w, z);\n Ve(w);\n }\n\n Y = Y.nextEffect;\n }\n } catch (t) {\n if (null === Y) throw Error(n(330));\n Ke(Y, t);\n Y = Y.nextEffect;\n }\n } while (null !== Y);\n\n Ea(a.containerInfo);\n a.current = c;\n Y = e;\n\n do {\n try {\n for (k = a; null !== Y;) {\n var Q = Y.effectTag;\n Q & 36 && Pe(k, Y.alternate, Y);\n\n if (Q & 128) {\n l = void 0;\n var A = Y.ref;\n\n if (null !== A) {\n var v = Y.stateNode;\n\n switch (Y.tag) {\n case 5:\n l = Aa(v);\n break;\n\n default:\n l = v;\n }\n\n \"function\" === typeof A ? A(l) : A.current = l;\n }\n }\n\n Y = Y.nextEffect;\n }\n } catch (t) {\n if (null === Y) throw Error(n(330));\n Ke(Y, t);\n Y = Y.nextEffect;\n }\n } while (null !== Y);\n\n Y = null;\n Xb();\n W = f;\n } else a.current = c;\n\n if (Af) Af = !1, Bf = a, Cf = b;else for (Y = e; null !== Y;) {\n b = Y.nextEffect, Y.nextEffect = null, Y = b;\n }\n b = a.firstPendingTime;\n 0 === b && (kf = null);\n 1073741823 === b ? a === Ff ? Ef++ : (Ef = 0, Ff = a) : Ef = 0;\n \"function\" === typeof ig && ig(c.stateNode, d);\n Z(a);\n if (gf) throw gf = !1, a = hf, hf = null, a;\n if ((W & of) !== V) return null;\n H();\n return null;\n }\n\n function hg() {\n for (; null !== Y;) {\n var a = Y.effectTag;\n 0 !== (a & 256) && Me(Y.alternate, Y);\n 0 === (a & 512) || Af || (Af = !0, ec(97, function () {\n Nf();\n return null;\n }));\n Y = Y.nextEffect;\n }\n }\n\n function Nf() {\n if (90 !== Cf) {\n var a = 97 < Cf ? 97 : Cf;\n Cf = 90;\n return dc(a, jg);\n }\n }\n\n function jg() {\n if (null === Bf) return !1;\n var a = Bf;\n Bf = null;\n if ((W & (pf | qf)) !== V) throw Error(n(331));\n var b = W;\n W |= qf;\n\n for (a = a.current.firstEffect; null !== a;) {\n try {\n var c = a;\n if (0 !== (c.effectTag & 512)) switch (c.tag) {\n case 0:\n case 11:\n case 15:\n case 22:\n Ne(5, c), Oe(5, c);\n }\n } catch (d) {\n if (null === a) throw Error(n(330));\n Ke(a, d);\n }\n\n c = a.nextEffect;\n a.nextEffect = null;\n a = c;\n }\n\n W = b;\n H();\n return !0;\n }\n\n function kg(a, b, c) {\n b = Ge(c, b);\n b = ff(a, b, 1073741823);\n Bc(a, b);\n a = Hf(a, 1073741823);\n null !== a && Z(a);\n }\n\n function Ke(a, b) {\n if (3 === a.tag) kg(a, a, b);else for (var c = a[\"return\"]; null !== c;) {\n if (3 === c.tag) {\n kg(c, a, b);\n break;\n } else if (1 === c.tag) {\n var d = c.stateNode;\n\n if (\"function\" === typeof c.type.getDerivedStateFromError || \"function\" === typeof d.componentDidCatch && (null === kf || !kf.has(d))) {\n a = Ge(b, a);\n a = jf(c, a, 1073741823);\n Bc(c, a);\n c = Hf(c, 1073741823);\n null !== c && Z(c);\n break;\n }\n }\n\n c = c[\"return\"];\n }\n }\n\n function cg(a, b, c) {\n var d = a.pingCache;\n null !== d && d[\"delete\"](b);\n T === a && U === c ? S === Be || S === Ae && 1073741823 === vf && G() - cf < zf ? Of(a, U) : yf = !0 : Kf(a, c) && (b = a.lastPingedTime, 0 !== b && b < c || (a.lastPingedTime = c, Z(a)));\n }\n\n function df(a, b) {\n var c = a.stateNode;\n null !== c && c[\"delete\"](b);\n b = 0;\n 0 === b && (b = Lc(), b = Mc(b, a, null));\n a = Hf(a, b);\n null !== a && Z(a);\n }\n\n var fg;\n\n fg = function fg(a, b, c) {\n var d = b.expirationTime;\n\n if (null !== a) {\n var e = b.pendingProps;\n if (a.memoizedProps !== e || E.current) wc = !0;else {\n if (d < c) {\n wc = !1;\n\n switch (b.tag) {\n case 3:\n le(b);\n $d();\n break;\n\n case 5:\n jd(b);\n if (b.mode & 4 && 1 !== c && Ka(b.type, e)) return b.expirationTime = b.childExpirationTime = 1, null;\n break;\n\n case 1:\n F(b.type) && Ib(b);\n break;\n\n case 4:\n hd(b, b.stateNode.containerInfo);\n break;\n\n case 10:\n sc(b, b.memoizedProps.value);\n break;\n\n case 13:\n if (null !== b.memoizedState) {\n d = b.child.childExpirationTime;\n if (0 !== d && d >= c) return ne(a, b, c);\n C(K, K.current & 1);\n b = ce(a, b, c);\n return null !== b ? b.sibling : null;\n }\n\n C(K, K.current & 1);\n break;\n\n case 19:\n d = b.childExpirationTime >= c;\n\n if (0 !== (a.effectTag & 64)) {\n if (d) return qe(a, b, c);\n b.effectTag |= 64;\n }\n\n e = b.memoizedState;\n null !== e && (e.rendering = null, e.tail = null);\n C(K, K.current);\n if (!d) return null;\n }\n\n return ce(a, b, c);\n }\n\n wc = !1;\n }\n } else wc = !1;\n\n b.expirationTime = 0;\n\n switch (b.tag) {\n case 2:\n d = b.type;\n null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2);\n a = b.pendingProps;\n e = Eb(b, D.current);\n vc(b, c);\n e = rd(null, b, d, a, e, c);\n b.effectTag |= 1;\n\n if (\"object\" === typeof e && null !== e && \"function\" === typeof e.render && void 0 === e.$$typeof) {\n b.tag = 1;\n b.memoizedState = null;\n b.updateQueue = null;\n\n if (F(d)) {\n var f = !0;\n Ib(b);\n } else f = !1;\n\n b.memoizedState = null !== e.state && void 0 !== e.state ? e.state : null;\n yc(b);\n var g = d.getDerivedStateFromProps;\n \"function\" === typeof g && Kc(b, d, g, a);\n e.updater = Oc;\n b.stateNode = e;\n e._reactInternalFiber = b;\n Sc(b, d, a, c);\n b = je(null, b, d, !0, f, c);\n } else b.tag = 0, R(null, b, e, c), b = b.child;\n\n return b;\n\n case 16:\n a: {\n e = b.elementType;\n null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2);\n a = b.pendingProps;\n ta(e);\n if (1 !== e._status) throw e._result;\n e = e._result;\n b.type = e;\n f = b.tag = lg(e);\n a = mc(e, a);\n\n switch (f) {\n case 0:\n b = ge(null, b, e, a, c);\n break a;\n\n case 1:\n b = ie(null, b, e, a, c);\n break a;\n\n case 11:\n b = be(null, b, e, a, c);\n break a;\n\n case 14:\n b = de(null, b, e, mc(e.type, a), d, c);\n break a;\n }\n\n throw Error(n(306, e, \"\"));\n }\n\n return b;\n\n case 0:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mc(d, e), ge(a, b, d, e, c);\n\n case 1:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mc(d, e), ie(a, b, d, e, c);\n\n case 3:\n le(b);\n d = b.updateQueue;\n if (null === a || null === d) throw Error(n(282));\n d = b.pendingProps;\n e = b.memoizedState;\n e = null !== e ? e.element : null;\n zc(a, b);\n Dc(b, d, null, c);\n d = b.memoizedState.element;\n if (d === e) $d(), b = ce(a, b, c);else {\n if (e = b.stateNode.hydrate) Sa ? (Sd = sb(b.stateNode.containerInfo), Rd = b, e = Td = !0) : e = !1;\n if (e) for (c = cd(b, null, d, c), b.child = c; c;) {\n c.effectTag = c.effectTag & -3 | 1024, c = c.sibling;\n } else R(a, b, d, c), $d();\n b = b.child;\n }\n return b;\n\n case 5:\n return jd(b), null === a && Xd(b), d = b.type, e = b.pendingProps, f = null !== a ? a.memoizedProps : null, g = e.children, Ja(d, e) ? g = null : null !== f && Ja(d, f) && (b.effectTag |= 16), he(a, b), b.mode & 4 && 1 !== c && Ka(d, e) ? (b.expirationTime = b.childExpirationTime = 1, b = null) : (R(a, b, g, c), b = b.child), b;\n\n case 6:\n return null === a && Xd(b), null;\n\n case 13:\n return ne(a, b, c);\n\n case 4:\n return hd(b, b.stateNode.containerInfo), d = b.pendingProps, null === a ? b.child = bd(b, null, d, c) : R(a, b, d, c), b.child;\n\n case 11:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mc(d, e), be(a, b, d, e, c);\n\n case 7:\n return R(a, b, b.pendingProps, c), b.child;\n\n case 8:\n return R(a, b, b.pendingProps.children, c), b.child;\n\n case 12:\n return R(a, b, b.pendingProps.children, c), b.child;\n\n case 10:\n a: {\n d = b.type._context;\n e = b.pendingProps;\n g = b.memoizedProps;\n f = e.value;\n sc(b, f);\n\n if (null !== g) {\n var h = g.value;\n f = jc(h, f) ? 0 : (\"function\" === typeof d._calculateChangedBits ? d._calculateChangedBits(h, f) : 1073741823) | 0;\n\n if (0 === f) {\n if (g.children === e.children && !E.current) {\n b = ce(a, b, c);\n break a;\n }\n } else for (h = b.child, null !== h && (h[\"return\"] = b); null !== h;) {\n var k = h.dependencies;\n\n if (null !== k) {\n g = h.child;\n\n for (var l = k.firstContext; null !== l;) {\n if (l.context === d && 0 !== (l.observedBits & f)) {\n 1 === h.tag && (l = Ac(c, null), l.tag = 2, Bc(h, l));\n h.expirationTime < c && (h.expirationTime = c);\n l = h.alternate;\n null !== l && l.expirationTime < c && (l.expirationTime = c);\n uc(h[\"return\"], c);\n k.expirationTime < c && (k.expirationTime = c);\n break;\n }\n\n l = l.next;\n }\n } else g = 10 === h.tag ? h.type === b.type ? null : h.child : h.child;\n\n if (null !== g) g[\"return\"] = h;else for (g = h; null !== g;) {\n if (g === b) {\n g = null;\n break;\n }\n\n h = g.sibling;\n\n if (null !== h) {\n h[\"return\"] = g[\"return\"];\n g = h;\n break;\n }\n\n g = g[\"return\"];\n }\n h = g;\n }\n }\n\n R(a, b, e.children, c);\n b = b.child;\n }\n\n return b;\n\n case 9:\n return e = b.type, f = b.pendingProps, d = f.children, vc(b, c), e = I(e, f.unstable_observedBits), d = d(e), b.effectTag |= 1, R(a, b, d, c), b.child;\n\n case 14:\n return e = b.type, f = mc(e, b.pendingProps), f = mc(e.type, f), de(a, b, e, f, d, c);\n\n case 15:\n return fe(a, b, b.type, b.pendingProps, d, c);\n\n case 17:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : mc(d, e), null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= 2), b.tag = 1, F(d) ? (a = !0, Ib(b)) : a = !1, vc(b, c), Qc(b, d, e), Sc(b, d, e, c), je(null, b, d, !0, a, c);\n\n case 19:\n return qe(a, b, c);\n }\n\n throw Error(n(156, b.tag));\n };\n\n var mg = {\n current: !1\n },\n ig = null,\n Re = null;\n\n function ng(a) {\n if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n var b = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (b.isDisabled || !b.supportsFiber) return !0;\n\n try {\n var c = b.inject(a);\n\n ig = function ig(a) {\n try {\n b.onCommitFiberRoot(c, a, void 0, 64 === (a.current.effectTag & 64));\n } catch (e) {}\n };\n\n Re = function Re(a) {\n try {\n b.onCommitFiberUnmount(c, a);\n } catch (e) {}\n };\n } catch (d) {}\n\n return !0;\n }\n\n function og(a, b, c, d) {\n this.tag = a;\n this.key = c;\n this.sibling = this.child = this[\"return\"] = this.stateNode = this.type = this.elementType = null;\n this.index = 0;\n this.ref = null;\n this.pendingProps = b;\n this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n this.mode = d;\n this.effectTag = 0;\n this.lastEffect = this.firstEffect = this.nextEffect = null;\n this.childExpirationTime = this.expirationTime = 0;\n this.alternate = null;\n }\n\n function Vd(a, b, c, d) {\n return new og(a, b, c, d);\n }\n\n function ee(a) {\n a = a.prototype;\n return !(!a || !a.isReactComponent);\n }\n\n function lg(a) {\n if (\"function\" === typeof a) return ee(a) ? 1 : 0;\n\n if (void 0 !== a && null !== a) {\n a = a.$$typeof;\n if (a === la) return 11;\n if (a === oa) return 14;\n }\n\n return 2;\n }\n\n function Xc(a, b) {\n var c = a.alternate;\n null === c ? (c = Vd(a.tag, b, a.key, a.mode), c.elementType = a.elementType, c.type = a.type, c.stateNode = a.stateNode, c.alternate = a, a.alternate = c) : (c.pendingProps = b, c.effectTag = 0, c.nextEffect = null, c.firstEffect = null, c.lastEffect = null);\n c.childExpirationTime = a.childExpirationTime;\n c.expirationTime = a.expirationTime;\n c.child = a.child;\n c.memoizedProps = a.memoizedProps;\n c.memoizedState = a.memoizedState;\n c.updateQueue = a.updateQueue;\n b = a.dependencies;\n c.dependencies = null === b ? null : {\n expirationTime: b.expirationTime,\n firstContext: b.firstContext,\n responders: b.responders\n };\n c.sibling = a.sibling;\n c.index = a.index;\n c.ref = a.ref;\n return c;\n }\n\n function Zc(a, b, c, d, e, f) {\n var g = 2;\n d = a;\n if (\"function\" === typeof a) ee(a) && (g = 1);else if (\"string\" === typeof a) g = 5;else a: switch (a) {\n case ea:\n return ad(c.children, e, f, b);\n\n case ka:\n g = 8;\n e |= 7;\n break;\n\n case fa:\n g = 8;\n e |= 1;\n break;\n\n case ha:\n return a = Vd(12, c, b, e | 8), a.elementType = ha, a.type = ha, a.expirationTime = f, a;\n\n case ma:\n return a = Vd(13, c, b, e), a.type = ma, a.elementType = ma, a.expirationTime = f, a;\n\n case na:\n return a = Vd(19, c, b, e), a.elementType = na, a.expirationTime = f, a;\n\n default:\n if (\"object\" === typeof a && null !== a) switch (a.$$typeof) {\n case ia:\n g = 10;\n break a;\n\n case ja:\n g = 9;\n break a;\n\n case la:\n g = 11;\n break a;\n\n case oa:\n g = 14;\n break a;\n\n case pa:\n g = 16;\n d = null;\n break a;\n\n case qa:\n g = 22;\n break a;\n }\n throw Error(n(130, null == a ? a : typeof a, \"\"));\n }\n b = Vd(g, c, b, e);\n b.elementType = a;\n b.type = d;\n b.expirationTime = f;\n return b;\n }\n\n function ad(a, b, c, d) {\n a = Vd(7, a, d, b);\n a.expirationTime = c;\n return a;\n }\n\n function Yc(a, b, c) {\n a = Vd(6, a, null, b);\n a.expirationTime = c;\n return a;\n }\n\n function $c(a, b, c) {\n b = Vd(4, null !== a.children ? a.children : [], a.key, b);\n b.expirationTime = c;\n b.stateNode = {\n containerInfo: a.containerInfo,\n pendingChildren: null,\n implementation: a.implementation\n };\n return b;\n }\n\n function pg(a, b, c) {\n this.tag = b;\n this.current = null;\n this.containerInfo = a;\n this.pingCache = this.pendingChildren = null;\n this.finishedExpirationTime = 0;\n this.finishedWork = null;\n this.timeoutHandle = Oa;\n this.pendingContext = this.context = null;\n this.hydrate = c;\n this.callbackNode = null;\n this.callbackPriority = 90;\n this.lastExpiredTime = this.lastPingedTime = this.nextKnownPendingLevel = this.lastSuspendedTime = this.firstSuspendedTime = this.firstPendingTime = 0;\n }\n\n function Kf(a, b) {\n var c = a.firstSuspendedTime;\n a = a.lastSuspendedTime;\n return 0 !== c && c >= b && a <= b;\n }\n\n function De(a, b) {\n var c = a.firstSuspendedTime,\n d = a.lastSuspendedTime;\n c < b && (a.firstSuspendedTime = b);\n if (d > b || 0 === c) a.lastSuspendedTime = b;\n b <= a.lastPingedTime && (a.lastPingedTime = 0);\n b <= a.lastExpiredTime && (a.lastExpiredTime = 0);\n }\n\n function Ee(a, b) {\n b > a.firstPendingTime && (a.firstPendingTime = b);\n var c = a.firstSuspendedTime;\n 0 !== c && (b >= c ? a.firstSuspendedTime = a.lastSuspendedTime = a.nextKnownPendingLevel = 0 : b >= a.lastSuspendedTime && (a.lastSuspendedTime = b + 1), b > a.nextKnownPendingLevel && (a.nextKnownPendingLevel = b));\n }\n\n function Mf(a, b) {\n var c = a.lastExpiredTime;\n if (0 === c || c > b) a.lastExpiredTime = b;\n }\n\n var qg = null;\n\n function rg(a) {\n if (null === qg) try {\n var b = (\"require\" + Math.random()).slice(0, 7);\n qg = (module && module[b])(\"timers\").setImmediate;\n } catch (c) {\n qg = function qg(a) {\n var b = new MessageChannel();\n b.port1.onmessage = a;\n b.port2.postMessage(void 0);\n };\n }\n return qg(a);\n }\n\n function sg(a) {\n var b = a._reactInternalFiber;\n\n if (void 0 === b) {\n if (\"function\" === typeof a.render) throw Error(n(188));\n throw Error(n(268, Object.keys(a)));\n }\n\n a = ya(b);\n return null === a ? null : a.stateNode;\n }\n\n function tg(a, b) {\n a = a.memoizedState;\n null !== a && null !== a.dehydrated && a.retryTime < b && (a.retryTime = b);\n }\n\n function ug(a, b) {\n tg(a, b);\n (a = a.alternate) && tg(a, b);\n }\n\n var vg = p.IsSomeRendererActing,\n wg = \"function\" === typeof m.unstable_flushAllWithoutAsserting,\n xg = m.unstable_flushAllWithoutAsserting || function () {\n for (var a = !1; Nf();) {\n a = !0;\n }\n\n return a;\n };\n\n function yg(a) {\n try {\n xg(), rg(function () {\n xg() ? yg(a) : a();\n });\n } catch (b) {\n a(b);\n }\n }\n\n var zg = 0,\n Ag = !1,\n Bg = {\n __proto__: null,\n createContainer: function createContainer(a, b, c) {\n a = new pg(a, b, c);\n b = Vd(3, null, null, 2 === b ? 7 : 1 === b ? 3 : 0);\n a.current = b;\n b.stateNode = a;\n yc(b);\n return a;\n },\n updateContainer: function updateContainer(a, b, c, d) {\n var e = b.current,\n f = Lc(),\n g = Ic.suspense;\n f = Mc(f, e, g);\n\n a: if (c) {\n c = c._reactInternalFiber;\n\n b: {\n if (va(c) !== c || 1 !== c.tag) throw Error(n(170));\n var h = c;\n\n do {\n switch (h.tag) {\n case 3:\n h = h.stateNode.context;\n break b;\n\n case 1:\n if (F(h.type)) {\n h = h.stateNode.__reactInternalMemoizedMergedChildContext;\n break b;\n }\n\n }\n\n h = h[\"return\"];\n } while (null !== h);\n\n throw Error(n(171));\n }\n\n if (1 === c.tag) {\n var k = c.type;\n\n if (F(k)) {\n c = Hb(c, k, h);\n break a;\n }\n }\n\n c = h;\n } else c = Cb;\n\n null === b.context ? b.context = c : b.pendingContext = c;\n b = Ac(f, g);\n b.payload = {\n element: a\n };\n d = void 0 === d ? null : d;\n null !== d && (b.callback = d);\n Bc(e, b);\n Nc(e, f);\n return f;\n },\n batchedEventUpdates: function batchedEventUpdates(a, b) {\n var c = W;\n W |= 2;\n\n try {\n return a(b);\n } finally {\n W = c, W === V && H();\n }\n },\n batchedUpdates: Xf,\n unbatchedUpdates: function unbatchedUpdates(a, b) {\n var c = W;\n W &= -2;\n W |= of;\n\n try {\n return a(b);\n } finally {\n W = c, W === V && H();\n }\n },\n deferredUpdates: function deferredUpdates(a) {\n return dc(97, a);\n },\n syncUpdates: function syncUpdates(a, b, c, d) {\n return dc(99, a.bind(null, b, c, d));\n },\n discreteUpdates: function discreteUpdates(a, b, c, d, e) {\n var f = W;\n W |= 4;\n\n try {\n return dc(98, a.bind(null, b, c, d, e));\n } finally {\n W = f, W === V && H();\n }\n },\n flushDiscreteUpdates: function flushDiscreteUpdates() {\n (W & (1 | pf | qf)) === V && (Wf(), Nf());\n },\n flushControlled: function flushControlled(a) {\n var b = W;\n W |= 1;\n\n try {\n dc(99, a);\n } finally {\n W = b, W === V && H();\n }\n },\n flushSync: Yf,\n flushPassiveEffects: Nf,\n IsThisRendererActing: mg,\n getPublicRootInstance: function getPublicRootInstance(a) {\n a = a.current;\n if (!a.child) return null;\n\n switch (a.child.tag) {\n case 5:\n return Aa(a.child.stateNode);\n\n default:\n return a.child.stateNode;\n }\n },\n attemptSynchronousHydration: function attemptSynchronousHydration(a) {\n switch (a.tag) {\n case 3:\n var b = a.stateNode;\n b.hydrate && Vf(b, b.firstPendingTime);\n break;\n\n case 13:\n Yf(function () {\n return Nc(a, 1073741823);\n }), b = hc(Lc(), 150, 100), ug(a, b);\n }\n },\n attemptUserBlockingHydration: function attemptUserBlockingHydration(a) {\n if (13 === a.tag) {\n var b = hc(Lc(), 150, 100);\n Nc(a, b);\n ug(a, b);\n }\n },\n attemptContinuousHydration: function attemptContinuousHydration(a) {\n 13 === a.tag && (Nc(a, 3), ug(a, 3));\n },\n attemptHydrationAtCurrentPriority: function attemptHydrationAtCurrentPriority(a) {\n if (13 === a.tag) {\n var b = Lc();\n b = Mc(b, a, null);\n Nc(a, b);\n ug(a, b);\n }\n },\n findHostInstance: sg,\n findHostInstanceWithWarning: function findHostInstanceWithWarning(a) {\n return sg(a);\n },\n findHostInstanceWithNoPortals: function findHostInstanceWithNoPortals(a) {\n a = za(a);\n return null === a ? null : 20 === a.tag ? a.stateNode.instance : a.stateNode;\n },\n shouldSuspend: function shouldSuspend() {\n return !1;\n },\n injectIntoDevTools: function injectIntoDevTools(a) {\n var b = a.findFiberByHostInstance;\n return ng(aa({}, a, {\n overrideHookState: null,\n overrideProps: null,\n setSuspenseHandler: null,\n scheduleUpdate: null,\n currentDispatcherRef: p.ReactCurrentDispatcher,\n findHostInstanceByFiber: function findHostInstanceByFiber(a) {\n a = ya(a);\n return null === a ? null : a.stateNode;\n },\n findFiberByHostInstance: function findFiberByHostInstance(a) {\n return b ? b(a) : null;\n },\n findHostInstancesForRefresh: null,\n scheduleRefresh: null,\n scheduleRoot: null,\n setRefreshHandler: null,\n getCurrentFiber: null\n }));\n },\n act: function act(a) {\n function b() {\n zg--;\n vg.current = c;\n mg.current = d;\n }\n\n !1 === Ag && (Ag = !0, console.error(\"act(...) is not supported in production builds of React, and might not behave as expected.\"));\n zg++;\n var c = vg.current;\n var d = mg.current;\n vg.current = !0;\n mg.current = !0;\n\n try {\n var e = Xf(a);\n } catch (f) {\n throw b(), f;\n }\n\n if (null !== e && \"object\" === typeof e && \"function\" === typeof e.then) return {\n then: function then(a, d) {\n e.then(function () {\n 1 < zg || !0 === wg && !0 === c ? (b(), a()) : yg(function (c) {\n b();\n c ? d(c) : a();\n });\n }, function (a) {\n b();\n d(a);\n });\n }\n };\n\n try {\n 1 !== zg || !1 !== wg && !1 !== c || xg(), b();\n } catch (f) {\n throw b(), f;\n }\n\n return {\n then: function then(a) {\n a();\n }\n };\n }\n },\n Cg = Bg && Bg[\"default\"] || Bg;\n module.exports = Cg[\"default\"] || Cg;\n var $$$renderer = module.exports;\n module.exports = $$$reconciler;\n return $$$renderer;\n};","import React, {Component} from 'react';\n\nimport Intro from '../images/intro.jpg'\nimport Identify from '../images/identify.jpg'\nimport What from '../images/what.jpg'\nimport Why from '../images/why.jpg'\nimport Where from '../images/where.jpg'\nimport Resolve from '../images/soil.jpg'\nimport Contact from '../images/contact.jpg'\n\nclass IEImages extends Component {\n\n\n constructor(props){\n super(props);\n\n }\n\nrender() {\n if(this.props.sectionnumber === 0){\n return (
)\n }\n if(this.props.sectionnumber === 1){\n return (
)\n }\n if(this.props.sectionnumber === 2){\n return (
)\n }\n if(this.props.sectionnumber === 3){\n return (
)\n }\n if(this.props.sectionnumber === 4){\n return (
)\n }\n if(this.props.sectionnumber === 5){\n return (
)\n }\n if(this.props.sectionnumber === 6){\n return (
)\n }\n}\n\n}\n export default IEImages\n","import * as THREE from 'three'\nimport ReactDOM from 'react-dom'\nimport React, { Suspense, useCallback, useRef, useMemo } from 'react'\nimport { useFrame } from 'react-three-fiber'\nimport Effects from './particle_effects'\nimport Canvas from './Canvas'\nimport Background from './Canvas/Environment/Background'\nimport gsap ,{TweenMax} from 'gsap'\n\n\n\nfunction Swarm({ count, mouse }) {\n const mesh = useRef()\n const dummy = useMemo(() => new THREE.Object3D(), [])\n\n const particles = useMemo(() => {\n const temp = []\n for (let i = 0; i < count; i++) {\n const t = Math.random() * 100\n const factor = 20 + Math.random() * 100\n const speed = 0.001 + Math.random() / 1000\n const xFactor = -20 + Math.random() * 40\n const yFactor = -20 + Math.random() * 40\n const zFactor = -20 + Math.random() * 40\n temp.push({ t, factor, speed, xFactor, yFactor, zFactor, mx: 0, my: 0 })\n }\n return temp\n }, [count])\n\n useFrame(state => {\n particles.forEach((particle, i) => {\n let { t, factor, speed, xFactor, yFactor, zFactor } = particle\n t = particle.t += speed / 2\n const a = Math.cos(t) + Math.sin(t * 1) / 10\n const b = Math.sin(t) + Math.cos(t * 2) / 10\n const s = Math.max(1.5, Math.cos(t) * 5)\n particle.mx += (mouse.current[0] - particle.mx) * 0.02\n particle.my += (-mouse.current[1] - particle.my) * 0.02\n dummy.position.set(\n (particle.mx / 10) * a + xFactor + Math.cos((t / 10) * factor) + (Math.sin(t * 1) * factor) / 10,\n (particle.my / 10) * b + yFactor + Math.sin((t / 10) * factor) + (Math.cos(t * 2) * factor) / 10,\n (particle.my / 10) * b + zFactor + Math.cos((t / 10) * factor) + (Math.sin(t * 3) * factor) / 10\n )\n dummy.scale.set(s, s, s)\n dummy.updateMatrix()\n mesh.current.setMatrixAt(i, dummy.matrix)\n })\n mesh.current.instanceMatrix.needsUpdate = true\n })\n\n return (\n <>\n \n \n \n \n \n )\n}\n\nfunction Dolly({group, particles, back, percentage, sectionnumber}) {\n\n\n let tll = gsap.timeline()\nif(group.current !== undefined){\n\nif(sectionnumber === 2 ){\n\n\n tll.fromTo(group.current.scale, {x: 0.001,y:0.001,z:0.001},{duration:1,x: 0.18,y:0.18,z:0.18 } )\n .fromTo(particles.current.position,{x: 0,y:0,z:0},{duration:2, x: 30,y:0,z:0} )\n\n\n tll.progress(percentage).pause()\n }\n\n\n if( sectionnumber === 3){\n\n\n\n tll.fromTo(particles.current.position,{x: 30,y:0,z:0},{duration:1, x: -25,y:0,z:0})\n .fromTo(group.current.scale,{x: 0.2,y:0.2,z:0.2}, {duration:1, x: 0.001,y:0.001,z:0.001});\n\n tll.progress(percentage).pause()\n }\n\n// if(sectionnumber === 1){\n// tl = gsap.timeline()\n// tl.from(group.current.scale, {x: 0.2,y:0.2,z:0.2})\n// .to(group.current.scale, {x: 0.2,y:0.2,z:0.2})\n// .from( particles.current.position, {x: 25})\n// .to(particles.current.position, {x: -25})\n// .from( group.current.position, {y: 0})\n// .to(group.current.position, {y: -15})\n//\n// }\n}\n\n\n// if(group.current !== undefined){\n// console.log(percentage)\n// if(percentage <= 0.5){\n// From = AnimationSteps[sectionnumber].zero.from\n// To = AnimationSteps[sectionnumber].zero.to\n// }else{\n// From = AnimationSteps[sectionnumber].fifty.from\n// To = AnimationSteps[sectionnumber].fifty.to\n//\n// }\n//\n//\n//\n// }\n\n\n useFrame(({ clock,camera }) => {\n// console.log(sectionnumber, percentage)\n\n\n\n\n\n\n })\n\n\n\n return null\n}\n\nfunction Particles({props, scrollsection,percentage ,sectionnumber}) {\n const mouse = useRef([0, 0])\n const group = useRef()\n const particles = useRef()\n\n return (\n <>\n\n \n \n\n \n\n \n \n \n \n \n \n \n\n \n\n \n\n )\n}\nexport default Particles\n\n // \n// \n// \n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","import {useState, useEffect} from 'react'\n\nexport default (src) => {\n const [image, setImage] = useState(null)\n\n useEffect(() => {\n const image = new Image()\n\n image.src = src\n\n image.onload = () => setImage(image)\n }, [src])\n\n return image\n}\n","export default \"#define GLSLIFY 1\\nuniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\n\\nvarying vec2 vUv;\\n\\nvoid main() {\\n\\t// #include \\n vUv = uv;\\n\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\"","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","module.exports = __webpack_public_path__ + \"static/terrain1-a5c4bf202598ff399925a37badeb8bca.jpg\";","// LICENSE: MIT\n// Copyright (c) 2016 by Mike Linkovich\n\n/// \nimport * as THREE from \"three\";\nimport {Vec3, Color} from './vec'\n\n// Terrain uses a custom shader so that we can apply the same\n// type of fog as is applied to the grass. This way they both\n// blend to green first, then blend to atmosphere color in the\n// distance.\n\n// Uses terrain shaders (see: shader/terrain.*.glsl)\n\nconst MAX_INDICES = 262144 // 65536\nconst TEX_SCALE = 1.0 / 6.0 // texture scale per quad\n\nconst TerrainOptions ={\n\ttextures: THREE.Texture,\n\tvertScript: \"\",\n\tfragScript: \"\",\n\theightMap: THREE.Texture,\n\theightMapScale: Vec3,\n\tfogColor: Color,\n\tfogFar: 0,\n\tgrassFogFar: 0,\n\ttransitionLow: 0,\n\ttransitionHigh: 0\n}\n\n// interface Terrain {\n// \tcellSize: number\n// \txCellCount: number\n// \tyCellCount: number\n// \txSize: number\n// \tySize: number\n// \tmesh: THREE.Mesh\n// }\n//\n// export function Terrain (opts){\n// \t// max square x,y divisions that will fit in max indices\n// \tconst xCellCount = Math.floor(Math.sqrt(MAX_INDICES / (3 * 2)))\n// \tconst yCellCount = xCellCount\n// \tconst cellSize = 1.0 / opts.heightMapScale.x / xCellCount\n//\n// \treturn {\n// \t\tcellSize,\n// \t\txCellCount,\n// \t\tyCellCount,\n// \t\txSize: xCellCount * cellSize,\n// \t\tySize: yCellCount * cellSize,\n// \t\tmesh: createMesh(opts)\n// \t}\n// }\nvar Terrain = {\n\n create:function(opts){\n \t// max square x,y divisions that will fit in max indices\n \tconst xCellCount = Math.floor(Math.sqrt(MAX_INDICES / (3 * 2)))\n \tconst yCellCount = xCellCount\n \tconst cellSize = 1.0 / opts.heightMapScale.x / xCellCount\n\n \treturn {\n \t\tcellSize,\n \t\txCellCount,\n \t\tyCellCount,\n \t\txSize: xCellCount * cellSize,\n \t\tySize: yCellCount * cellSize,\n \t\tmesh: createMesh(opts)\n \t}\n },\n\n\tupdate:function (t, x, y) {\n\t\tconst ix = Math.floor(x / t.cellSize)\n\t\tconst iy = Math.floor(y / t.cellSize)\n\t\tconst ox = ix * t.cellSize\n\t\tconst oy = iy * t.cellSize\n // Tizz erroered\n \t\t// const mat = t.mesh.material as THREE.RawShaderMaterial\n\t\tconst mat = t.mesh.material\n \t\t// let p = mat.uniforms['offset'].value as number[]\n\t\tlet p = mat.uniforms['offset'].value\n\t\tp[0] = ox\n\t\tp[1] = oy\n\t\tp = mat.uniforms['uvOffset'].value\n\t\tp[0] = iy * TEX_SCALE // not sure why x,y need to be swapped here...\n\t\tp[1] = ix * TEX_SCALE\n\t}\n}\n\n\n\n// Internal helpers...\n\n/** Creates a textured plane larger than the viewer will ever travel */\nfunction createMesh (opts) {\n\t// max x,y divisions that will fit 65536 indices\n\tconst xCellCount = Math.floor(Math.sqrt(MAX_INDICES / (3 * 2)))\n\tconst yCellCount = xCellCount\n\tconst cellSize = 1.0 / opts.heightMapScale.x / xCellCount\n\tconst texs = opts.textures\n\ttexs.forEach(tex => {\n\t\ttex.wrapS = tex.wrapT = THREE.RepeatWrapping\n\t\ttex.anisotropy = 9\n\t})\n\tconst htex = opts.heightMap\n\thtex.wrapS = htex.wrapT = THREE.RepeatWrapping\n\tconst vtxBufs = createVtxBuffers(cellSize, xCellCount + 1, yCellCount + 1)\n\tconst idBuf = createIdBuffer(xCellCount + 1, yCellCount + 1)\n\tconst geo = new THREE.BufferGeometry()\n\tgeo.addAttribute('position', new THREE.BufferAttribute(vtxBufs.position, 3))\n\tgeo.addAttribute('uv', new THREE.BufferAttribute(vtxBufs.uv, 2))\n\tgeo.setIndex(new THREE.BufferAttribute(idBuf, 1))\n\tconst hscale = opts.heightMapScale\n\n\tconst fragScript = opts.fragScript.replace(\n\t\t'%%TRANSITION_LOW%%', opts.transitionLow.toString()\n\t).replace(\n\t\t'%%TRANSITION_HIGH%%', opts.transitionHigh.toString()\n\t)\n\n\tconst mat = new THREE.RawShaderMaterial({\n\t\tuniforms: {\n\t\t\toffset: {type: '2f', value: [0.0, 0.0]},\n\t\t\tuvOffset: {type: '2f', value: [0.0, 0.0]},\n\t\t\tmap1: {type: 't', value: texs[0]},\n\t\t\tmap2: {type: 't', value: texs[1]},\n\t\t\theightMap: {type: 't', value: htex},\n\t\t\theightMapScale: {type: '3f', value: [hscale.x, hscale.y, hscale.z]},\n\t\t\tfogColor: {type: '3f', value: Color.toArray(opts.fogColor)},\n\t\t\tfogNear: {type: 'f', value: 1.0},\n\t\t\tfogFar: {type: 'f', value: opts.fogFar},\n\t\t\tgrassFogFar: {type: 'f', value: opts.grassFogFar}\n\t\t},\n\t\tvertexShader: opts.vertScript,\n\t\tfragmentShader: fragScript\n\t})\n\tconst mesh = new THREE.Mesh(geo, mat)\n\tmesh.frustumCulled = false\n\treturn mesh\n}\n\n/**\n * @param cellSize Size of each mesh cell (quad)\n * @param xcount X vertex count\n * @param ycount Y vertex count\n */\nfunction createVtxBuffers (cellSize, xcount, ycount) {\n\tconst pos = new Float32Array(xcount * ycount * 3)\n\tconst uv = new Float32Array(xcount * ycount * 2)\n\t// let ix: number, iy: number\n\t// let x: number, y: number\n\t// let u: number, v: number\n\n\tlet ix = 0\n\tlet iy =0\n\tlet x=0\n\tlet y=0\n\tlet u=0\n\t let v=0\n\n\tlet i = 0\n\tlet j = 0\n\tfor (iy = 0; iy < ycount; ++iy) {\n\t\ty = (iy - ycount / 2.0) * cellSize\n\t\tu = iy\n\t\tfor (ix = 0; ix < xcount; ++ix) {\n\t\t\tx = (ix - xcount / 2.0) * cellSize\n\t\t\tv = ix\n\t\t\tpos[i++] = x\n\t\t\tpos[i++] = y\n\t\t\tpos[i++] = 4.0 * Math.cos(ix * 1.0) + 4.0 * Math.sin(iy * 1.0)\n\t\t\tuv[j++] = u * TEX_SCALE\n\t\t\tuv[j++] = v * TEX_SCALE\n\t\t}\n\t}\n\treturn {position: pos, uv}\n}\n\n/**\n * @param xcount X vertex count\n * @param ycount Y vertex count\n */\nfunction createIdBuffer(xcount, ycount) {\n\tconst idSize = (xcount - 1) * (ycount - 1) * 3 * 2\n\tlet id = Uint16Array | Uint32Array\n\tif (idSize <= 65536) {\n\t\tid = new Uint16Array(idSize)\n\t} else {\n\t\tid = new Uint32Array(idSize)\n\t}\n\tconst xc = xcount - 1\n\tconst yc = ycount - 1\n\tlet x=0\n\tlet y=0\n\tfor (y = 0; y < yc; ++y) {\n\t\tfor (x = 0; x < xc; ++x) {\n\t\t\tconst i = 6 * (y * xc + x)\n\t\t\t// tri 1\n\t\t\tid[i + 0] = (y + 0) * xcount + (x + 0)\n\t\t\tid[i + 1] = (y + 0) * xcount + (x + 1)\n\t\t\tid[i + 2] = (y + 1) * xcount + (x + 1)\n\t\t\t// tri 2\n\t\t\tid[i + 3] = (y + 1) * xcount + (x + 1)\n\t\t\tid[i + 4] = (y + 1) * xcount + (x + 0)\n\t\t\tid[i + 5] = (y + 0) * xcount + (x + 0)\n\t\t}\n\t}\n\treturn id\n}\n\n\nexport default Terrain\n","import { useMemo, useEffect } from 'react'\nimport { useLoader, useThree, useFrame } from 'react-three-fiber'\nimport { SMAAImageLoader, BlendFunction, EffectComposer, EffectPass, RenderPass, SMAAEffect, SSAOEffect, NormalPass } from 'postprocessing'\n\n// Fix smaa loader signature\nconst _load = SMAAImageLoader.prototype.load\nSMAAImageLoader.prototype.load = function(_, set) {\n return _load.bind(this)(set)\n}\n\nexport default function Post() {\n const { gl, scene, camera, size } = useThree()\n const smaa = useLoader(SMAAImageLoader)\n const composer = useMemo(() => {\n const composer = new EffectComposer(gl)\n composer.addPass(new RenderPass(scene, camera))\n const smaaEffect = new SMAAEffect(...smaa)\n smaaEffect.colorEdgesMaterial.setEdgeDetectionThreshold(0.1)\n const normalPass = new NormalPass(scene, camera)\n const ssaoEffect = new SSAOEffect(camera, normalPass.renderTarget.texture, {\n blendFunction: BlendFunction.MULTIPLY,\n samples: 30,\n rings: 4,\n distanceThreshold: 1, // Render distance depends on camera near&far.\n distanceFalloff: 0.0, // No need for falloff.\n rangeThreshold: 0.05, // Larger value works better for this camera frustum.\n rangeFalloff: 0.01,\n luminanceInfluence: 0.6,\n radius: 30,\n scale: 0.55,\n bias: 0.5\n })\n const effectPass = new EffectPass(camera, smaaEffect, ssaoEffect)\n effectPass.renderToScreen = true\n composer.addPass(normalPass)\n composer.addPass(effectPass)\n return composer\n }, [])\n\n useEffect(() => void composer.setSize(size.width, size.height), [size])\n return useFrame((_, delta) => composer.render(delta), 1)\n}\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as THREE from \"three\";\nimport { FresnelShader } from './FresnelShader.js';\nimport background from \"./assets/foam_diffuse.jpg\"\n\n\n\n\nclass Foam extends Component {\n\n constructor(props) {\n super(props)\n\n this.frameId = null\n this.spheres = [];\n this.scene = new THREE.Scene();\n if(typeof window !== \"undefined\"){\n this.camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 100000 );\n }\n this.renderer = typeof document !== `undefined` ? new THREE.WebGLRenderer():null\n }\n\n\n componentDidMount() {\n // var scene = new THREE.Scene();\n // var camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 100000 );\n this.camera.position.z = 3200;\n\n this.spheres = [];\n var mouseX = 0, mouseY = 0;\n if(typeof window !== \"undefined\"){\n var windowHalfX = window.innerWidth / 2;\n var windowHalfY = window.innerHeight / 2;\n\n\n this.renderer.setPixelRatio( window.devicePixelRatio );\n this.renderer.setSize( window.innerWidth, window.innerHeight );\n }\n\n var urls = [background,background,background,background,background,background];\n var textureCube = new THREE.CubeTextureLoader().load( urls );\n this.scene.background = textureCube;\n var geometry = new THREE.SphereBufferGeometry( 100, 32, 16 );\n var shader = FresnelShader;\n\t\t\t\tvar uniforms = THREE.UniformsUtils.clone( shader.uniforms );\n\t\t\t\tuniforms[ \"tCube\" ].value = textureCube;\n\t\t\t\tvar material = new THREE.ShaderMaterial( {\n\t\t\t\t\tuniforms: uniforms,\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t} );\n for ( var i = 0; i < 2500; i ++ ) {\n var mesh = new THREE.Mesh( geometry, material );\n mesh.position.x = Math.random() * 10000 - 5000;\n mesh.position.y = Math.random() * 10000 - 5000;\n mesh.position.z = Math.random() * 10000 - 5000;\n mesh.scale.x = mesh.scale.y = mesh.scale.z = Math.random() * 3 + 1;\n this.scene.add( mesh );\n this.spheres.push( mesh );\n }\n\n\n\n\n\n // document.body.appendChild( renderer.domElement );\n // use ref as a mount point of the Three.js scene instead of the document.body\n if(typeof window !== \"undefined\"){\n window.addEventListener('resize', this.resize, false)\n }\n this.mount.appendChild( this.renderer.domElement );\n // var geometry = new THREE.BoxGeometry( 1, 1, 1 );\n // var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n // var cube = new THREE.Mesh( geometry, material );\n // scene.add( cube );\n // camera.position.z = 5;\n // var animate = function () {\n // this.frameId = requestAnimationFrame( animate );\n //\n //\n // var timer = 0.00001 * Date.now();\n //\n // for ( var i = 0, il = spheres.length; i < il; i ++ ) {\n //\n // \t\t\t\t\tvar sphere = spheres[ i ];\n //\n // \t\t\t\t\tsphere.position.x = 5000 * Math.cos( timer + i );\n // \t\t\t\t\tsphere.position.y = 5000 * Math.sin( timer + i * 1.1 );\n //\n // \t\t\t\t}\n //\n // \t\t\t\trenderer.render( scene, camera );\n //\n //\n //\n // };\n\n this.animate();\n }\n\n\n animate = () => {\n this.frameId = requestAnimationFrame( this.animate );\n\n\n var timer = 0.00001 * Date.now();\n\n for ( var i = 0, il = this.spheres.length; i < il; i ++ ) {\n\n var sphere = this.spheres[ i ];\n\n sphere.position.x = 5000 * Math.cos( timer + i );\n sphere.position.y = 5000 * Math.sin( timer + i * 1.1 );\n\n }\n\n this.renderer.render( this.scene, this.camera );\n\n\n\n };\n\n\n componentWillUnmount(){\n this.stop()\n if(typeof window !== \"undefined\"){\n window.removeEventListener(\"resize\", this.resize);\n }\n this.mount.removeChild(this.renderer.domElement)\n }\n\n stop = () => {\n cancelAnimationFrame(this.frameId)\n }\n\n resize = () => {\n\n if(typeof window !== \"undefined\"){\n \t let displayWidth = window.innerWidth\n \t\tlet displayHeight = window.innerHeight\n this.mount.width = displayWidth\n this.mount.height = displayHeight\n \t\tthis.renderer.setSize(displayWidth, displayHeight)\n \t\tthis.camera.aspect = displayWidth / displayHeight\n \t\tthis.camera.updateProjectionMatrix()\n }\n \t}\n\n\n\n\n\n\n render() {\n return (\n
(this.mount = ref)} />\n )\n }\n}\n\n\nexport default Foam\n","// LICENSE: MIT\n// Copyright (c) 2016 by Mike Linkovich\nexport const POSITION = 0x01;\nexport const NORMAL = 0x02;\nexport const COLOR = 0x04;\nexport const UV = 0x08;\n//export const INDEX = 0x10\nexport const ALL = POSITION | NORMAL | COLOR | UV; // | INDEX\n/**\n * Creates a bufferset\n * @param numVtx Number of vertices\n * @param numId Number of indices\n * @param b Types of buffers to create (bitflags)\n */\nfunction BufferSet(numVtx, numId, b) {\n b = (typeof b === 'number') ? b & ALL : ALL;\n return {\n position: (b & POSITION) ? new Float32Array(numVtx * 3) : undefined,\n normal: (b & NORMAL) ? new Float32Array(numVtx * 3) : undefined,\n color: (b & COLOR) ? new Float32Array(numVtx * 4) : undefined,\n uv: (b & UV) ? new Float32Array(numVtx * 2) : undefined,\n index: new Uint16Array(numId),\n vertexCount: 0,\n indexCount: 0\n };\n}\nexport default BufferSet;\n","// LICENSE: MIT\n// Copyright (c) 2016 by Mike Linkovich\n\n/// \nimport * as THREE from \"three\";\nimport {pmod} from './gmath'\nimport {Vec2, Vec3} from './vec'\nimport Heightfield from './heightfield'\n\n/**\n * Create a texture containing height, lighting, etc. data\n * encoded into RGBA channels.\n */\nexport function createTexture (hf, lightDir, imgWind) {\n\tconst canvas = document.createElement('canvas')\n\tconst canvasWidth = hf.xCount + 1\n\tconst canvasHeight = hf.yCount + 1\n\tcanvas.width = canvasWidth\n\tcanvas.height = canvasHeight\n\tconst ctx = canvas.getContext('2d')\n\tconst imgData = ctx.getImageData(0, 0, canvasWidth, canvasHeight)\n\t// Fill R (height) and G (light) values from heightfield data and computed light\n\tcomputeData(hf, lightDir, imgData.data)\n\t// Add wind intensity to B channel\n\taddWindData(imgWind, imgData.data)\n\tctx.putImageData(imgData, 0, 0)\n\tconst tex = new THREE.Texture(canvas)\n\ttex.wrapS = tex.wrapT = THREE.RepeatWrapping\n\ttex.needsUpdate = true\n\treturn tex\n}\n\n/**\n * Pack heights and lighting into RGBA data\n */\nfunction computeData (hf, lightDir, buf) {\n\tconst vnorms = hf.vtxNormals\n\tconst w = hf.xCount + 1\n\tconst h = hf.yCount + 1\n\tconst n = Vec3.create()\n\tconst tStart = Date.now()\n\tfor (let y = 0; y < h; ++y) {\n\t\tfor (let x = 0; x < w; ++x) {\n\t\t\tconst iSrc = y * w + x\n\t\t\tconst iDst = (h - y - 1) * w + x\n\t\t\t// Get height, scale & store in R component\n\t\t\tbuf[iDst * 4 + 0] = Math.round(hf.heights[iSrc] / hf.maxHeight * 255.0)\n\t\t\t// Get normal at this location to compute light\n\t\t\tlet ni = iSrc * 3\n\t\t\tn.x = vnorms[ni++]\n\t\t\tn.y = vnorms[ni++]\n\t\t\tn.z = vnorms[ni++]\n\t\t\t// Compute light & store in G component\n\t\t\tlet light = Math.max(-Vec3.dot(n, lightDir), 0.0)\n\t\t\tlight *= computeShade(hf, lightDir, x, y)\n\t\t\tbuf[iDst * 4 + 1] = Math.round(light * 255.0)\n\t\t\t//buf[iDst * 4 + 2] = ... // B channel for terrain type?\n\t\t\tbuf[iDst * 4 + 3] = 255 // must set alpha to some value > 0\n\t\t}\n\t}\n\tconst dt = Date.now() - tStart\n\t// console.log(`computed terrain data texture (${w}x${h}) values in ${dt}ms`)\n\treturn buf\n}\n\nconst _v = Vec2.create()\n\nfunction computeShade (hf, lightDir, ix, iy) {\n\t// Make a normalized 2D direction vector we'll use to walk horizontally\n\t// toward the lightsource until z reaches max height\n\tconst shadGradRange = 5.0\n\tconst hdir = _v\n\tconst w = hf.xCount + 1\n\tconst h = hf.yCount + 1\n\tconst i = iy * w + ix\n\tlet height = hf.heights[i] // height at this point\n\thdir.x = -lightDir.x\n\thdir.y = -lightDir.y\n\tVec2.normalize(hdir, hdir)\n\tconst zstep = (Vec2.length(hdir) / Vec2.length(lightDir)) * (-lightDir.z)\n\tlet x = ix\n\tlet y = iy\n\t// Walk along the direction until we discover this point\n\t// is in shade or the light vector is too high to be shaded\n\twhile (height < hf.maxHeight) {\n\t\tx += hdir.x\n\t\ty += hdir.y\n\t\theight += zstep\n\t\tconst qx = pmod(Math.round(x), w)\n\t\tconst qy = pmod(Math.round(y), h)\n\t\tconst sampleHeight = hf.heights[qy * w + qx]\n\t\tif (sampleHeight > height) {\n\t\t\tif (sampleHeight - height > shadGradRange)\n\t\t\t\treturn 0.7 // this point is in shade\n\t\t\telse\n\t\t\t\treturn 0.7 + 0.3 * (shadGradRange - (sampleHeight - height)) / shadGradRange\n\t\t}\n\t}\n\treturn 1.0\n}\n\n/**\n * Put wind data from the wind image to the b channel\n */\nfunction addWindData (imgWind, buf) {\n\tconst canvas = document.createElement('canvas')\n\tconst w = imgWind.naturalWidth\n\tconst h = imgWind.naturalHeight\n\tcanvas.width = w\n\tcanvas.height = h\n\tconst ctxSrc = canvas.getContext('2d')\n\tctxSrc.drawImage(imgWind, 0, 0)\n\tconst windData = ctxSrc.getImageData(0, 0, w, h).data\n\tfor (let y = 0; y < h; ++y) {\n\t\tfor (let x = 0; x < w; ++x) {\n\t\t\tconst i = (y * w + x) * 4\n\t\t\t// Get R channel from src. We only use the single channel\n\t\t\t// because assume src img is grayscale.\n\t\t\tconst p = windData[i]\n\t\t\t// Now set the B channel of the buffer we're writing to\n\t\t\tbuf[i + 2] = p\n\t\t}\n\t}\n}\n","module.exports = __webpack_public_path__ + \"static/soil-602d6b9a5e5dc14a1009ccc2fd69eabb.jpg\";","// Copyright (c) 2016 by Mike Linkovich\n\nimport {clamp, sign} from './gmath'\nimport {Vec2, Vec3} from './vec'\n// import * as input from './input'\n// import notify from './notification'\nimport {Heightfield, HInfo, HeightFieldFunctions} from './heightfield'\n// import * as log from './logger'\n\nconst DEFAULT_HEIGHT = 0.0\nconst MIN_HEIGHT = 2.5\nconst MAX_HEIGHT = 275.0\nconst FLOAT_VEL = 0.75\nconst BOB_RANGE = 16.0\nconst DEFAULT_PITCH = -0.325\n// const MOVE_RANGE = 1500.0\nconst MOVE_RANGE = 200\n\nconst ACCEL = 30.0 // forward accel\nconst DRAG = 0.1\nconst VACCEL = 10.0 // vertical accel\nconst VDRAG = 5.0\nconst YAW_ACCEL = 4.0 // angular accel (yaw)\nconst YAW_DRAG = 2.0\nconst PITCH_ACCEL = 4.0\nconst PITCH_RESIST = 16.0\nconst PITCH_FRIC = 8.0\nconst ROLL_ACCEL = 2.0\nconst ROLL_RESIST = 10.0\nconst ROLL_FRIC = 8.0\n\nconst MAN_VEL = 40.0\nconst MAN_ZVEL = 10.0\nconst MAN_YAWVEL = 0.5\nconst MAN_PITCHVEL = 0.5\nconst MAN_MAXPITCH = Math.PI / 4.0\n\nconst MODE_AUTO = 0\nconst MODE_FLY = 1\nconst MODE_MAN = 2\nconst NUM_MODES = 3\n\n\nconst AnimationSteps = [\n\t{\tname:\"intro\",\n\t\tfrom:{x: 640.4638714515672, y: 1808.9135917748151, z: 353.58883313657526, yaw: 8.008189605602652, pitch:0.7853981633974483},\n\t\tto:{x: 618.3273971881173, y: 1951.3233909712812, z: 353.589883313657526, yaw: 8.008189605602652, pitch: -0.7853981633974483 }\n\t},\n\t{\n\t\tname:\"identify\",from:{x: 618.3273971881173, y: 1951.3233909712812, z: 353.58883313657526, yaw: 8.008189605602652, pitch: -0.7853981633974483 },\n\t\tto:{x: 618.3273971881173, y: 1951.3233909712812, z: 91.2988331365709, yaw:8.731189605602623 , pitch: -0.16789816339744884 }\n\t},\n\t// {\n\t// \tname:\"identify\",from:{x: 618.3273971881173, y: 1951.3233909712812, z: 353.58883313657526, yaw: 8.008189605602652, pitch: -0.7853981633974483 },\n\t// \tto:{x: 618.3273971881173, y: 1951.3233909712812, z: 91.2988331365709, yaw:8.731189605602623 , pitch: -0.16789816339744884 }\n\t// },\n\t// {\n\t// \tname:\"identify\",from:{x: 618.3273971881173, y: 1951.3233909712812, z: 353.58883313657526, yaw: 8.008189605602652, pitch: -0.7853981633974483 },\n\t// \tto:{x: 618.3273971881173, y: 1951.3233909712812, z: 91.2988331365709, yaw:8.731189605602623 , pitch: -0.16789816339744884 }\n\t// },\n\t{\n\t\tfrom:{x: 618.3273971881173, y: 1951.3233909712812, z: 91.2988331365709, yaw:8.731189605602623 , pitch: -0.16789816339744884 },\n\t\tto:{x: 876.2036338260674, y: 2229.573704035695, z: 68.95883313657079, yaw:13.326676092088919 , pitch: -0.27558735258663813 }\n\t},\n\t{\n\t\tfrom:{x: 876.2036338260674, y: 2229.573704035695, z: 68.95883313657079, yaw:13.326676092088919 , pitch: -0.27558735258663813 },\n\t\tto:{x: 797.9225081564222, y: 2421.368066752308, z: 70.42932592929144, yaw:19.50967609208905 , pitch: -0.19358735258663806 }\n\t},\n\t{\n\t\tfrom:{x: 797.9225081564222, y: 2421.368066752308, z: 70.42932592929144, yaw:19.50967609208905 , pitch: -0.19358735258663806 },\n\t\tto:{x: 648.7488967420875, y: 2500.2831783700603, z: 68.25932592929146, yaw:22.324176092089225 , pitch: -0.19358735258663806 }\n\t},\n\t{\n\t\tfrom:{x: 648.7488967420875, y: 2500.2831783700603, z: 68.25932592929146, yaw:22.324176092089225 , pitch: -0.19358735258663806 },\n\t\t\tto:{x: 593.4701069199951, y: 2595.043212250761, z: 83.4093259292915, yaw:26.824176092089434 , pitch: -0.5510873525866383 }\n\t},\n\t{\n\t\t\tfrom:{x: 593.4701069199951, y: 2595.043212250761, z: 83.4093259292915, yaw:26.824176092089434 , pitch: -0.5510873525866383 },\n\t\t\tto:{x: 374.71182814028845, y: 2476.828340129142, z: 129.58932592929207, yaw:29.490176092089577 , pitch: -0.4690873525866383 }\n\t}\n]\n\nlet From = AnimationSteps[0].from\nlet To = AnimationSteps[0].to\n\nlet pitchDiff = 0\nlet yawDiff =0\nlet xDiff =0\nlet yDiff =0\nlet zDiff = 0\n\n/** Creates a Player instance (User first person camera) */\nfunction Player (heightField, waterHeight) {\n\n // console.log(\"Player\",heightField)\n\n\t//let autoplay = true\n\tlet mode = \"MODE_AUTO\"\n\tlet curT = 0\n\nlet Scrollpercent = 0\nlet SectionNumber = 0\n\n\tconst state = {\n\t\tpos: Vec3.create(0.0, 0.0, DEFAULT_HEIGHT),\n\t\tvel: Vec3.create(0.0, 0.0, 0.0),\n\t\tdir: Vec3.create(1.0, 0.0, 0.0),\n\t\tyaw: 0.0,\n\t\tyawVel: 0.0,\n\t\tpitch: 0.0,\n\t\tpitchVel: 0.0,\n\t\troll: 0.0,\n\t\trollVel: 0.0,\n\t\tfloatHeight: 0.0,\n\n\t}\n\n\t// input.setKeyPressListener(13, function() {\n\t// \tnextMode()\n\t// \tif (mode === MODE_AUTO) {\n\t// \t\tlog.hide()\n\t// \t\tnotify('Press ENTER to change camera')\n\t// \t} else if (mode === MODE_FLY) {\n\t// \t\tnotify('ARROWS drive, W/S move up/down.')\n\t// \t} else if (mode === MODE_MAN) {\n\t// \t\tlog.show()\n\t// \t\tnotify('ARROWS move, W/S move up/down, Q/A look up/down')\n\t// \t}\n\t// })\n\n\t// scratchpad vectors\n\tconst _a = Vec3.create()\n\tconst _d = Vec3.create()\n\tconst _p1 = Vec3.create()\n\tconst _p2 = Vec3.create()\n\tconst _p3 = Vec3.create()\n\n\t/**\n\t * @param dt Delta time in ms\n\t */\n\tfunction update(dt,scrollper,sectionnumber,sectionname,mode) {\n // console.log(\"Player UPDATE\" , mode , MODE_AUTO)\n\t\tcurT += dt\n\t\t// Update auto or manual\n\t\tif (mode === \"MODE_AUTO\") {\n // console.log(\"auto\")\n\t\t\tupdateAuto(curT / 1000.0, dt)\n\t\t} else if (mode === \"MODE_SCROLL\") {\n\t\t\tupdateAnimation(dt, scrollper,sectionnumber,sectionname )\n\t\t} else if (mode === \"MODE_MAN\") {\n\t\t\t// updateManual(input.state, dt)\n\t\t}\n\t\t// Calc cam look direction vector\n\t\tconst d = state.dir\n\t\td.z = Math.sin(state.pitch)\n\t\tconst s = (1.0 - Math.abs(d.z))\n\t\td.x = Math.cos(state.yaw) * s\n\t\td.y = Math.sin(state.yaw) * s\n\t}\n\n\tfunction nextMode() {\n\t\tmode = (mode + 1) % NUM_MODES\n\t\tif (mode === MODE_MAN) {\n\t\t\tstate.roll = 0\n\t\t\tstate.rollVel = 0\n\t\t\tstate.pitchVel = 0\n\t\t\tstate.yawVel = 0\n\t\t}\n\t}\n\n\tfunction getMode() {\n\t\treturn mode\n\t}\n\n\tfunction diff (a, b){\n if(a > b){\n\t return Math.abs(a - b)\n }else{\n\t return\tMath.abs(b - a)\n }\n}\n\n\n\tfunction updateAnimation (dt,scrollpercent,sectionnumber,sectionname) {\n\n\n\n\n\t\t\tFrom = AnimationSteps[sectionnumber].from\n\t\t\tTo = AnimationSteps[sectionnumber].to\n\n\n\t if(scrollpercent !== 1 && scrollpercent !== 0){\n\t\t\tpitchDiff = diff(From.pitch, To.pitch) / 100\n\t\t\tyawDiff = diff( From.yaw,To.yaw) / 100\n\t\t\txDiff = diff(From.x,To.x) / 100\n\t\t\tyDiff = diff(From.y,To.y) / 100\n\t\t\tzDiff = diff(From.z, To.z) / 100\n\n\t\t}\n\n\n\t\tif (To.pitch < From.pitch){\n\t\t\t\t state.pitch = From.pitch - (pitchDiff *(scrollpercent* 100))\n\t\t} else{\n\t\t\tstate.pitch = From.pitch + (pitchDiff *(scrollpercent* 100))\n\t\t}\n\n\n\t\tif (To.yaw < From.yaw){\n\t\t\t\t state.yaw = From.yaw - (yawDiff * (scrollpercent * 100))\n\t\t} else{\n\t\t\tstate.yaw = From.yaw + (yawDiff * (scrollpercent * 100))\n\t\t}\n\n\n\n\t\tif (To.x < From.x){\n\t\t state.pos.x = From.x - (xDiff * (scrollpercent * 100))\n\t\t} else{\n\t\t\tstate.pos.x = From.x + (xDiff * (scrollpercent * 100))\n\t\t}\n\n\n\n\t\tif (To.y < From.y){\n\t\t\t state.pos.y = From.y - (yDiff * (scrollpercent * 100))\n\t\t}else{\n\t\t\t state.pos.y = From.y + (yDiff * (scrollpercent * 100))\n\t\t}\n\n\nif(To.z !== From.z){\n\t\tif (To.z < From.z){\n\t\t\t state.pos.z = From.z - (zDiff * (scrollpercent * 100))\n\n\t\t}else{\n\t\t\t state.pos.z = From.z + (zDiff * (scrollpercent * 100))\n\n\t\t}\n\t}\n\t}\n\n\n\n\t/**\n\t * Update autoplay camera\n\t * @param time Time in seconds\n\t */\n\tfunction updateAuto (time, dt) {\n // console.log(\"updateAuto\")\n\t\tconst ft = dt / 1000.0\n\n\t\t// Remember last frame values\n\t\tVec3.copy(state.pos, _a)\n\t\tconst yaw0 = state.yaw\n\t\tconst pitch0 = state.pitch\n\n\t\t// Follow a nice curvy path...\n\t\t//state.pos.x = Math.cos(r) * MOVE_RANGE + Math.sin(r) * MOVE_RANGE * 2.0\n\t\t//state.pos.y = Math.sin(r) * MOVE_RANGE + Math.cos(r) * MOVE_RANGE * 2.0\n\t\tautoPos(time * 0.01, state.pos)\n\t\t// Look ahead a few steps so we can see if there are\n\t\t// sudden height increases to look for\n\t\tautoPos((time + 1.0) * 0.01, _p1)\n\t\tautoPos((time + 2.0) * 0.01, _p2)\n\t\tautoPos((time + 3.0) * 0.01, _p3)\n\n\t\t// Move up & down smoothly\n\t\tconst a = time * 0.3\n\t\tstate.pos.z = BOB_RANGE + Math.cos(a) * BOB_RANGE\n\t\t// Look up & down depending on height\n\t\tstate.pitch = DEFAULT_PITCH - 0.25 * Math.sin(a + Math.PI * 0.5)\n\n\t\t// Turn left & right smoothly over time\n\t\tstate.yaw = Math.sin(time * 0.04) * Math.PI * 2.0 + Math.PI * 0.5\n\n\t\t// Actual height at camera\n\t\tconst groundHeight = Math.max(\n\t\t\tHeightFieldFunctions.heightAt(heightField, state.pos.x, state.pos.y, true),\n\t\t\twaterHeight\n\t\t)\n\t\t// Look ahead heights\n\t\tconst h1 = Math.max(\n\t\t\tHeightFieldFunctions.heightAt(heightField, _p1.x, _p1.y, true),\n\t\t\twaterHeight\n\t\t)\n\t\tconst h2 = Math.max(\n\t\t\tHeightFieldFunctions.heightAt(heightField, _p2.x, _p2.y, true),\n\t\t\twaterHeight\n\t\t)\n\t\tconst h3 = Math.max(\n\t\t\tHeightFieldFunctions.heightAt(heightField, _p3.x, _p3.y, true),\n\t\t\twaterHeight\n\t\t)\n\t\t//let minHeight = (groundHeight + h1 + h2 + h3) / 4.0\n\t\tconst minHeight = Math.max(Math.max(Math.max(groundHeight, h1), h2), h3)\n\t\tlet floatVel = (state.floatHeight < minHeight) ?\n\t\t\t(minHeight - state.floatHeight) : (groundHeight - state.floatHeight)\n\t\tif (floatVel < 0) {\n\t\t\tfloatVel *= 0.25 // can sink more slowly\n\t\t}\n\t\tstate.floatHeight += floatVel * FLOAT_VEL * ft\n\t\t// Make absolutely sure we're above ground\n\t\tif (state.floatHeight < groundHeight)\n\t\t\tstate.floatHeight = groundHeight\n\t\tstate.pos.z += state.floatHeight + MIN_HEIGHT\n\n\t\t// Calc velocities based on difs from prev frame\n\t\t_d.x = state.pos.x - _a.x\n\t\t_d.y = state.pos.y - _a.y\n\t\t_d.z = state.pos.z - _a.z\n\t\tstate.vel.x = _d.x / ft\n\t\tstate.vel.y = _d.y / ft\n\t\tstate.vel.z = _d.z / ft\n\t\tconst dyaw = state.yaw - yaw0\n\t\tstate.yawVel = dyaw / ft\n\t\tconst dpitch = state.pitch - pitch0\n\t\tstate.pitchVel = dpitch / ft\n\t}\n\n\tfunction autoPos(r, p) {\n\t\tp.x = Math.cos(r) * MOVE_RANGE + Math.sin(r) * MOVE_RANGE * 2.0\n\t\tp.y = Math.sin(r) * MOVE_RANGE + Math.cos(r) * MOVE_RANGE * 2.0\n\t}\n\n\t/**\n\t * Drone-like physics\n\t */\n\t// function updateDrone (i: input.State, dt: number) {\n\t// \t// Delta time in seconds\n\t// \tconst ft = dt / 1000.0\n //\n\t// \t// calc roll accel\n\t// \tlet ra = 0\n\t// \tif (i.left > 0) {\n\t// \t\tra = -ROLL_ACCEL\n\t// \t} else if (i.right > 0) {\n\t// \t\tra = ROLL_ACCEL\n\t// \t}\n\t// \t// calc roll resist forces\n\t// \tconst rr = -state.roll * ROLL_RESIST\n\t// \tconst rf = -sign(state.rollVel) * ROLL_FRIC * Math.abs(state.rollVel)\n\t// \t// total roll accel\n\t// \tra = ra + rr + rf\n\t// \tstate.rollVel += ra * ft\n\t// \tstate.roll += state.rollVel * ft\n //\n\t// \t// Calc yaw accel\n\t// \tconst ya = -state.roll * YAW_ACCEL\n\t// \t// yaw drag\n\t// \tconst yd = -sign(state.yawVel) * Math.abs(Math.pow(state.yawVel, 3.0)) * YAW_DRAG\n\t// \t// update yaw\n\t// \tstate.yawVel += (ya + yd) * ft\n\t// \tstate.yaw += state.yawVel * ft\n //\n\t// \t// Calc pitch accel\n\t// \tlet pa = 0\n\t// \tif (i.forward > 0) {\n\t// \t\tpa = -PITCH_ACCEL\n\t// \t} else if (i.back > 0) {\n\t// \t\tpa = PITCH_ACCEL * 0.5\n\t// \t}\n\t// \t// Calc pitch resist forces\n\t// \tconst pr = -state.pitch * PITCH_RESIST\n\t// \tconst pf = -sign(state.pitchVel) * PITCH_FRIC * Math.abs(state.pitchVel)\n\t// \t// total pitch accel\n\t// \tpa = pa + pr + pf\n\t// \tstate.pitchVel += pa * ft\n\t// \tstate.pitch += state.pitchVel * ft\n //\n\t// \t// Calc accel vector\n\t// \tVec3.set(_a, 0, 0, 0)\n\t// \t_a.x = -state.pitch * ACCEL * Math.cos(state.yaw)\n\t// \t_a.y = -state.pitch * ACCEL * Math.sin(state.yaw)\n\t// \t// Calc drag vector (horizontal)\n\t// \tconst absVel = Vec2.length(state.vel) // state.vel.length()\n\t// \t_d.x = -state.vel.x\n\t// \t_d.y = -state.vel.y\n\t// \tVec2.setLength(_d, absVel * DRAG, _d)\n //\n\t// \t// Calc vertical accel\n\t// \tif (i.up > 0 && state.pos.z < MAX_HEIGHT - 2.0) {\n\t// \t\t_a.z = VACCEL\n\t// \t} else if (i.down > 0 && state.pos.z > MIN_HEIGHT) {\n\t// \t\t_a.z = -VACCEL\n\t// \t}\n\t// \t_d.z = -state.vel.z * VDRAG\n //\n\t// \t// update vel\n\t// \tstate.vel.x += (_a.x + _d.x) * ft\n\t// \tstate.vel.y += (_a.y + _d.y) * ft\n\t// \tstate.vel.z += (_a.z + _d.z) * ft\n\t// \t// update pos\n\t// \tstate.pos.x += state.vel.x * ft\n\t// \tstate.pos.y += state.vel.y * ft\n\t// \tstate.pos.z += state.vel.z * ft\n\t// \tconst groundHeight = Math.max(\n\t// \t\tHeightfield.heightAt(heightField, state.pos.x, state.pos.y, true),\n\t// \t\twaterHeight\n\t// \t)\n\t// \tif (state.pos.z < groundHeight + MIN_HEIGHT) {\n\t// \t\tstate.pos.z = groundHeight + MIN_HEIGHT\n\t// \t} else if (state.pos.z > MAX_HEIGHT) {\n\t// \t\tstate.pos.z = MAX_HEIGHT\n\t// \t}\n\t// }\n\n\t/**\n\t * Manual movement\n\t */\n\t// function updateManual (i: input.State, dt: number) {\n\t// \tconst ft = dt / 1000.0\n //\n\t// \tstate.yawVel = 0\n\t// \tif (i.left) {\n\t// \t\tstate.yawVel = MAN_YAWVEL\n\t// \t} else if (i.right) {\n\t// \t\tstate.yawVel = -MAN_YAWVEL\n\t// \t}\n\t// \tstate.yaw += state.yawVel * ft\n //\n\t// \tstate.pitchVel = 0\n\t// \tif (i.pitchup) {\n\t// \t\tstate.pitchVel = MAN_PITCHVEL\n\t// \t} else if (i.pitchdown) {\n\t// \t\tstate.pitchVel = -MAN_PITCHVEL\n\t// \t}\n\t// \tstate.pitch += state.pitchVel * ft\n\t// \tstate.pitch = clamp(state.pitch, -MAN_MAXPITCH, MAN_MAXPITCH)\n //\n\t// \tVec3.set(state.vel, 0, 0, 0)\n\t// \tif (i.forward) {\n\t// \t\tstate.vel.x = MAN_VEL * Math.cos(state.yaw)\n\t// \t\tstate.vel.y = MAN_VEL * Math.sin(state.yaw)\n\t// \t} else if (i.back) {\n\t// \t\tstate.vel.x = -MAN_VEL * Math.cos(state.yaw)\n\t// \t\tstate.vel.y = -MAN_VEL * Math.sin(state.yaw)\n\t// \t}\n\t// \tstate.pos.x += state.vel.x * ft\n\t// \tstate.pos.y += state.vel.y * ft\n //\n\t// \tif (i.up) {\n\t// \t\tstate.vel.z = MAN_ZVEL\n\t// \t} else if (i.down) {\n\t// \t\tstate.vel.z = -MAN_ZVEL\n\t// \t}\n\t// \tstate.pos.z += state.vel.z * ft\n //\n\t// \tconst groundHeight = Math.max(\n\t// \t\tHeightfield.heightAt(heightField, state.pos.x, state.pos.y, true),\n\t// \t\twaterHeight\n\t// \t)\n\t// \tif (state.pos.z < groundHeight + MIN_HEIGHT) {\n\t// \t\tstate.pos.z = groundHeight + MIN_HEIGHT\n\t// \t} else if (state.pos.z > MAX_HEIGHT) {\n\t// \t\tstate.pos.z = MAX_HEIGHT\n\t// \t}\n\t// }\n\n\t/**\n\t * Public interface\n\t */\n\treturn {\n\t\tupdate,\n\t\tstate,\n\t\tgetMode,\n\t\tnextMode\n\t}\n}\n\n// interface Player extends ReturnType {}\n\nexport default Player\n","module.exports = __webpack_public_path__ + \"static/what-83d07a4fd6d13d1099475ba5b1f1eca5.jpg\";","module.exports = __webpack_public_path__ + \"static/height_5-a1d5a7b444fe19df9151789e32cc3bf8.jpg\";","import React, {Component} from 'react';\nimport \"../css/dna_loader.css\"\n\n\nclass DNALoader extends Component {\nrender() {\nreturn (\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\nexport default DNALoader;\n","function e(e, r, n, t) {\n return new(n || (n = Promise))((function(o, a) {\n function i(e) {\n try {\n l(t.next(e))\n } catch (e) {\n a(e)\n }\n }\n\n function d(e) {\n try {\n l(t.throw(e))\n } catch (e) {\n a(e)\n }\n }\n\n function l(e) {\n var r;\n e.done ? o(e.value) : (r = e.value, r instanceof n ? r : new n((function(e) {\n e(r)\n }))).then(i, d)\n }\n l((t = t.apply(e, r || [])).next())\n }))\n}\nvar r = \"2.0.4\";\nconst n = [\"geforce 320m\", \"geforce 8600\", \"geforce 8600m gt\", \"geforce 8800 gs\", \"geforce 8800 gt\", \"geforce 9400\", \"geforce 9400m g\", \"geforce 9400m\", \"geforce 9600m gt\", \"geforce 9600m\", \"geforce fx go5200\", \"geforce gt 120\", \"geforce gt 130\", \"geforce gt 330m\", \"geforce gtx 285\", \"google swiftshader\", \"intel g41\", \"intel g45\", \"intel gma 4500mhd\", \"intel gma x3100\", \"intel hd 3000\", \"intel q45\", \"legacy\", \"mali-2\", \"mali-3\", \"mali-4\", \"quadro fx 1500\", \"quadro fx 4\", \"quadro fx 5\", \"radeon hd 2400\", \"radeon hd 2600\", \"radeon hd 4670\", \"radeon hd 4850\", \"radeon hd 4870\", \"radeon hd 5670\", \"radeon hd 5750\", \"radeon hd 6290\", \"radeon hd 6300\", \"radeon hd 6310\", \"radeon hd 6320\", \"radeon hd 6490m\", \"radeon hd 6630m\", \"radeon hd 6750m\", \"radeon hd 6770m\", \"radeon hd 6970m\", \"radeon r9 200\", \"sgx 543\", \"sgx543\"],\n t = e => e = e.toLowerCase().replace(/angle \\((.+)\\)*$/, \"$1\").replace(/\\s+([0-9]+gb|direct3d.+$)|\\(r\\)| \\([^\\)]+\\)$/g, \"\"),\n o = (() => {\n if (\"undefined\" != typeof window) {\n const {\n userAgent: e,\n platform: r,\n maxTouchPoints: n\n } = window.navigator, t = /(iphone|ipod|ipad)/i.test(e), o = \"iPad\" === r || \"MacIntel\" === r && n > 0 && !window.MSStream;\n return {\n isIpad: o,\n isMobile: /android/i.test(e) || t || o,\n isSafari12: /Version\\/12.+Safari/.test(e)\n }\n }\n return {\n platform: \"iPad\",\n isMobile: !0,\n isSafari12: \"\"\n }\n })(),\n a = (e, r, n) => \"apple gpu\" === r ? ((e, r, n) => {\n let t = [r];\n if (n) {\n const r = \"\\n precision highp float;\\n attribute vec3 aPosition;\\n varying float vvv;\\n void main() {\\n vvv = 0.31622776601683794;\\n gl_Position = vec4(aPosition, 1.0);\\n }\\n \",\n n = \"\\n precision highp float;\\n varying float vvv;\\n void main() {\\n vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv;\\n enc = fract(enc);\\n enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\\n gl_FragColor = enc;\\n }\\n \",\n a = e.createShader(35633),\n i = e.createShader(35632),\n d = e.createProgram();\n if (i && a && d) {\n e.shaderSource(a, r), e.shaderSource(i, n), e.compileShader(a), e.compileShader(i), e.attachShader(d, a), e.attachShader(d, i), e.linkProgram(d), e.detachShader(d, a), e.detachShader(d, i), e.deleteShader(a), e.deleteShader(i), e.useProgram(d);\n const l = e.createBuffer();\n e.bindBuffer(34962, l), e.bufferData(34962, new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]), 35044);\n const c = e.getAttribLocation(d, \"aPosition\");\n e.vertexAttribPointer(c, 3, 5126, !1, 0, 0), e.enableVertexAttribArray(c), e.clearColor(1, 1, 1, 1), e.clear(16384), e.viewport(0, 0, 1, 1), e.drawArrays(4, 0, 3);\n const f = new Uint8Array(4);\n e.readPixels(0, 0, 1, 1, 6408, 5121, f), e.deleteProgram(d), e.deleteBuffer(l), t = {\n 801621810: (null == o ? void 0 : o.isIpad) ? [\"apple a12x gpu\"] : [\"apple a11 gpu\", \"apple a12 gpu\", \"apple a13 gpu\"],\n 8016218135: (null == o ? void 0 : o.isIpad) ? [\"apple a9x gpu\", \"apple a10 gpu\", \"apple a10x gpu\"] : [\"apple a9 gpu\", \"apple a10 gpu\"]\n } [f.join(\"\")] || t\n }\n }\n return t\n })(e, r, n) : [r],\n i = [],\n d = [],\n l = (e, r) => {\n if (e === r) return 0;\n const n = e;\n e.length > r.length && (e = r, r = n);\n let t = e.length,\n o = r.length;\n for (; t > 0 && e.charCodeAt(~-t) === r.charCodeAt(~-o);) t--, o--;\n let a, l = 0;\n for (; l < t && e.charCodeAt(l) === r.charCodeAt(l);) l++;\n if (t -= l, o -= l, 0 === t) return o;\n let c, f, g = 0,\n s = 0,\n h = 0;\n for (; s < t;) d[s] = e.charCodeAt(l + s), i[s] = ++s;\n for (; h < o;)\n for (a = r.charCodeAt(l + h), c = h++, g = h, s = 0; s < t; s++) f = a === d[s] ? c : c + 1, c = i[s], g = i[s] = c > g ? f > g ? g + 1 : f : f > c ? c + 1 : f;\n return g\n },\n c = \"undefined\" == typeof window,\n f = {},\n g = ({\n mobileTiers: i = [0, 15, 30, 60],\n desktopTiers: d = [0, 15, 30, 60],\n override: {\n renderer: g,\n isIpad: s = Boolean(null == o ? void 0 : o.isIpad),\n isMobile: h = Boolean(null == o ? void 0 : o.isMobile),\n screenSize: p = (c ? {\n width: 0,\n height: 0\n } : window.screen),\n loadBenchmarks: u\n } = {},\n glContext: v,\n failIfMajorPerformanceCaveat: m = !1,\n benchmarksURL: w = `https://unpkg.com/detect-gpu@${r}/dist/benchmarks`\n } = {}) => e(void 0, void 0, void 0, (function*() {\n if (c) return {\n tier: 0,\n type: \"IS_SRR\"\n };\n const r = (e, r, n, t, o) => ({\n device: o,\n fps: t,\n gpu: n,\n isMobile: h,\n tier: e,\n type: r\n });\n let x;\n if (g) x = [g = t(g)];\n else {\n const e = v || ((e, r = !1) => {\n const n = {\n alpha: !1,\n antialias: !1,\n depth: !1,\n failIfMajorPerformanceCaveat: r,\n powerPreference: \"high-performance\",\n stencil: !1\n };\n e && delete n.powerPreference;\n const t = document.createElement(\"canvas\");\n return t.getContext(\"webgl\", n) || t.getContext(\"experimental-webgl\", n) || void 0\n })(null == o ? void 0 : o.isSafari12, m);\n if (!e) return r(0, \"WEBGL_UNSUPPORTED\");\n const n = e.getExtension(\"WEBGL_debug_renderer_info\");\n if (n && (g = e.getParameter(n.UNMASKED_RENDERER_WEBGL)), !g) return r(1, \"FALLBACK\");\n g = t(g), x = a(e, g, h)\n }\n const A = yield Promise.all(x.map((r => ((r = (r => e(void 0, void 0, void 0, (function*() {\n try {\n const e = yield fetch(`${w}/${r}`).then((e => e.json()));\n return e.shift(), e\n } catch (e) {\n return void console.error(e)\n }\n }))), n) => e(void 0, void 0, void 0, (function*() {\n const e = h ? [\"adreno\", \"apple\", \"mali-t\", \"mali\", \"nvidia\", \"powervr\"] : [\"intel\", \"amd\", \"radeon\", \"nvidia\", \"geforce\"];\n let t;\n for (let r = 0; r < e.length; r++) {\n const o = e[r];\n if (n.indexOf(o) > -1) {\n t = o;\n break\n }\n }\n if (!t) return [];\n const o = `${h?\"m\":\"d\"}-${t}.json`,\n a = f[o] = f[o] || r(o),\n i = yield a;\n if (!i) return [];\n const d = (e => {\n var r;\n const n = (e = e.replace(/\\([^\\)]+\\)/, \"\")).match(/[\\d]+/) || e.match(/(\\W|^)([a-zA-Z]{1,3})(\\W|$)/g);\n return null !== (r = null == n ? void 0 : n.join(\"\").replace(/\\W|amd/g, \"\")) && void 0 !== r ? r : \"\"\n })(n),\n c = \"apple\" === t;\n let g = i.filter((([, e]) => e === d));\n g.length || (g = i.filter((([e]) => e.indexOf(n) > -1)));\n const u = g.length;\n if (0 === u) return [];\n let v, [m, , , w] = u > 1 ? g.map((e => [e, l(n, e[0])])).sort((([, e], [, r]) => e - r))[0][0] : g[0],\n x = Number.MAX_VALUE,\n A = 0;\n if (\"undefined\" != typeof window) {\n const {\n devicePixelRatio: e\n } = window;\n A = p.width * e * (p.height * e)\n }\n c && h && (w = w.filter((([, , , e]) => {\n var r;\n return (null !== (r = null == e ? void 0 : e.indexOf(s ? \"ipad\" : \"iphone\")) && void 0 !== r ? r : -1) > -1\n })));\n for (let e = 0; e < w.length; e++) {\n const r = w[e],\n [n, t] = r,\n o = n * t,\n a = Math.abs(A - o);\n a < x && (x = a, v = r)\n }\n const [, , S, b] = v;\n return [x, S, m, b]\n })))(u, r)))), S = 1 === A.length ? A[0] : A.sort((([e = Number.MAX_VALUE], [r = Number.MAX_VALUE]) => e - r))[0];\n if (0 === S.length) return n.filter((e => (null == g ? void 0 : g.indexOf(e)) > -1))[0] ? r(0, \"BLOCKLISTED\", g) : r(1, \"FALLBACK\", g);\n const [, b, P, y] = S;\n if (-1 === b) return r(0, \"BLOCKLISTED\", P, b, y);\n const C = h ? i : d;\n let L = 0;\n for (let e = 0; e < C.length; e++) b >= C[e] && (L = e);\n return r(L, \"BENCHMARK\", P, b, y)\n }));\nexport {\n g as getGPUTier\n};\n//# sourceMappingURL=detect-gpu.esm.js.map\n","import React, { Component } from \"react\";\nimport * as THREE from \"three\";\n\n\nimport {difAngle} from './gmath'\nimport {Vec2, Vec3, Color} from './vec'\nimport * as skydome from './skydome'\nimport Heightfield ,{HInfo, HeightFieldFunctions} from './heightfield'\nimport * as grass from './grass'\nimport Terrain from './terrain'\nimport * as terramap from './terramap'\nimport * as water from './water'\nimport Player from './player'\nimport Loader, {Assets} from './loader'\nimport DNALoader from '../../../components/DNAloader.js'\nimport { getGPUTier } from '../../../actions/detect-gpu.esm.js';\n\n\nconst VIEW_DEPTH = 2000.0\n\nconst MAX_TIMESTEP = 67 // max 67 ms/frame\n\nconst HEIGHTFIELD_SIZE = 3072.0\nconst HEIGHTFIELD_HEIGHT = 180.0\nconst WATER_LEVEL = HEIGHTFIELD_HEIGHT * 0.305556 // 55.0\nconst BEACH_TRANSITION_LOW = 0.31\nconst BEACH_TRANSITION_HIGH = 0.36\n\nconst LIGHT_DIR = Vec3.create(0.0, 1.0, -1.0)\nVec3.normalize(LIGHT_DIR, LIGHT_DIR)\n\n// const FOG_COLOR = Color.create(0.74, 0.77, 0.91)\nconst FOG_COLOR = Color.create(0.15,0.49, 0.71)\nconst GRASS_COLOR = Color.create(0.45, 0.46, 0.19)\n\nconst WATER_COLOR = Color.create(0.6, 0.7, 0.85)\n\nconst WIND_DEFAULT = 1.5\nconst WIND_MAX = 3.0\n\nconst MAX_GLARE = 0.25 // max glare effect amount\nconst GLARE_RANGE = 1.1 // angular range of effect\nconst GLARE_YAW = Math.PI * 1.5 // yaw angle when looking directly at sun\nconst GLARE_PITCH = 0.2 // pitch angle looking at sun\nconst GLARE_COLOR = Color.create(1.0, 0.8, 0.4)\n\nconst INTRO_FADE_DUR = 2000\n\n\nconst MeshSet = {\n terrain: THREE.Mesh,\n\tgrass: THREE.Mesh,\n\tsky: THREE.Mesh,\n\twater: THREE.Mesh,\n\tsunFlare: THREE.Mesh,\n\tfade: THREE.Mesh\n}\n\n\n\nclass World extends Component {\n\n constructor(props) {\n super(props)\n\n this.state={\n loading: true\n }\n\n const renderer = typeof document !== `undefined` ? new THREE.WebGLRenderer():null\n const camera =new THREE.PerspectiveCamera();\n const meshes = {terrain: null, grass: null, sky: null, water: null, sunFlare: null, fade: null}\n const scene = new THREE.Scene()\n // For timing\n let prevT = Date.now() // prev frame time (ms)\n let simT = 0 // total running time (ms\n const _hinfo = HInfo\n const _v = Vec2.create(0.0, 0.0)\n const player = null\n const heightField = null\n const camHolder = new THREE.Object3D()\n const terra = null\n\n\n // this.CONFIGS = [\n // {blades: 0, depth: 50.0, antialias: false},\n // {blades: 20000, depth: 50.0, antialias: false},\n // {blades: 40000, depth: 65.0, antialias: false},\n // {blades: 84000, depth: 85.0, antialias: true},\n // {blades: 250000, depth: 125.0, antialias: true},\n // {blades: 500000, depth: 175.0, antialias: true}\n // ]\n this.CONFIGS = [\n {blades: 0, depth: 50.0, antialias: false}, //0\n {blades: 20000, depth: 50.0, antialias: false},//15\n {blades: 40000, depth: 65.0, antialias: false},//24\n {blades: 50000, depth: 75.0, antialias: false},//30\n {blades: 75000, depth: 85.0, antialias: false},//40\n {blades: 90000, depth: 85.0, antialias: true},//61\n {blades: 250000, depth: 125.0, antialias: true},\n {blades: 500000, depth: 150.0, antialias: true}//240\n ]\n\n\n this.GPUTier = 1\n\n this.cfgId = 'desktop'\n this.cfg = {blades: 84000, depth: 85.0, antialias: true}\n this.numGrassBlades = this.CONFIGS[1].blades\n this.grassPatchRadius = this.CONFIGS[1].depth\n this.antialias = this.CONFIGS[1].antialias\n this.displayWidth = 0\n this.displayHeight = 0\n\n\n if(typeof window !== \"undefined\"){\n this.displayWidth = window.innerWidth\n this.displayHeight = window.innerHeight\n }\n this.assets = null\n this.frameId = null\n\n\n\n this.resize = this.resize.bind(this)\n this.doFrame = this.doFrame.bind(this)\n this.renderScene = this.renderScene.bind(this)\n this.update = this.update.bind(this)\n this.updateGlare = this.updateGlare.bind(this)\n\n this.onAssetsLoaded = this.onAssetsLoaded.bind(this)\n this.setup = this.setup.bind(this)\n\n\n\n\n\n\n }\n\n\n componentDidMount() {\n if(typeof window !== \"undefined\"){\n getGPUTier({\n desktopTiers:[0,15,24,30,40,61,120,240],\n mobileTiers:[0,15,24,30,40,61,120,240]\n }).then((response) => {\n console.log(\"DATA\" , response)\n console.log(this.CONFIGS[response.tier])\n this.GPUTier = response.tier\n this.loadAssets()\n }).catch((error) => {\n\n this.loadAssets()\n\n });\n }\n }\n\ncomponentDidUpdate(){\n\n // console.log(\"Hupdate\")\n\n}\n\n\ncomponentWillUnmount(){\n this.stop()\n if(typeof window !== \"undefined\"){\n window.removeEventListener(\"resize\", this.resize);\n }\n if(this.renderer !== undefined && this.renderer !== null){\n this.mount.removeChild(this.renderer.domElement)\n }\n }\n\n stop = () => {\n cancelAnimationFrame(this.frameId)\n }\n\n loadAssets() {\n const loader = Loader();\n loader.load({\n text: [\n\n\n { name: 'grass.vert', url: './shader/grass.vert.glsl' },\n { name: 'grass.frag', url: './shader/grass.frag.glsl'},\n { name: 'terrain.vert', url: './shader/terrain.vert.glsl' },\n { name: 'terrain.frag', url: './shader/terrain.frag.glsl' },\n { name: 'water.vert', url: './shader/water.vert.glsl' },\n { name: 'water.frag', url: './shader/water.frag.glsl' }\n ],\n images: [\n {name: 'heightmap', url: require('./data/height_5.jpg')},\n {name: 'noise', url: require('./data/noise.jpg')}\n ],\n textures: [\n {name: 'grass', url: require('./data/grass.jpg')},\n {name: 'terrain1', url: require('./data/terrain1.jpg')},\n {name: 'terrain2', url: require('./data/terrain2.jpg')},\n {name: 'skydome', url: require('./data/sky2.jpg')},\n {name: 'skyenv', url: require('./data/sky2env.jpg')}\n ]\n }, this.onAssetsLoaded, this.onAssetsProgress, this.onAssetsError);\n }\n\n\n onAssetsProgress(p) {\n // p: number\n const pct = Math.floor(p * 90)\n // console.log(\"terrain Loading\", pct , \"%\")\n }\n onAssetsError(e) {\n // e: string\n // $e('loading_text').textContent = e\n // console.log(\"Assets Error\", e)\n }\n onAssetsLoaded(a) {\n this.assets = a\n // console.log(\"Assets loaded\" ,a)\n this.setState({loading:false})\n\n setTimeout(() => {\n this.setup()\n }, 10)\n }\n\n\n\nsetup(){\n\n this.numGrassBlades = this.CONFIGS[this.GPUTier].blades\n this.grassPatchRadius = this.CONFIGS[this.GPUTier].depth\n this.antialias = this.CONFIGS[this.GPUTier].antialias\n\n this._hinfo = HInfo()\n this._v = Vec2.create(0.0, 0.0)\n this.renderer = new THREE.WebGLRenderer({antialias: this.antialias, clearColor: 0xFFFFFF, clearAlpha: 1, alpha: true})\n //\n const fogDist = this.grassPatchRadius * 20.0\n const grassFogDist = this.grassPatchRadius * 2.0\n this.camera = new THREE.PerspectiveCamera(45, this.displayWidth / this.displayHeight, 1.0, VIEW_DEPTH)\n this.meshes = {terrain: null, grass: null, sky: null, water: null, sunFlare: null, fade: null}\n this.scene = new THREE.Scene()\n this.scene.fog = new THREE.Fog(Color.to24bit(FOG_COLOR), 0.1, fogDist)\n // Setup the camera so Z is up.\n // Then we have cartesian X,Y coordinates along ground plane.\n this.camera.rotation.order = \"ZXY\"\n this.camera.rotation.x = Math.PI * 0.5\n this.camera.rotation.y = Math.PI * 0.5\n this.camera.rotation.z = Math.PI\n this.camera.up.set(0.0, 0.0, 1.0)\n\n\n // Put camera in an object so we can transform it normally\n this.camHolder = new THREE.Object3D()\n this.camHolder.rotation.order = \"ZYX\"\n this.camHolder.add(this.camera)\n\n this.scene.add(this.camHolder)\n\n // Setup heightfield\n let hfImg = this.assets.images['heightmap']\n const hfCellSize = HEIGHTFIELD_SIZE / hfImg.width\n const heightMapScale = Vec3.create(\n 1.0 / HEIGHTFIELD_SIZE,\n 1.0 / HEIGHTFIELD_SIZE,\n HEIGHTFIELD_HEIGHT\n )\n this.heightField = Heightfield({\n cellSize: hfCellSize,\n minHeight: 0.0,\n maxHeight: heightMapScale.z,\n image: hfImg\n })\n hfImg = undefined\n\n const terraMap = terramap.createTexture(this.heightField, LIGHT_DIR, this.assets.images['noise'])\n\n let windIntensity = WIND_DEFAULT\n\n this.meshes.grass = grass.createMesh({\n lightDir: LIGHT_DIR,\n numBlades: this.numGrassBlades,\n radius: this.grassPatchRadius,\n texture: this.assets.textures['grass'],\n vertScript: this.assets.text['grass.vert'],\n fragScript: this.assets.text['grass.frag'],\n heightMap: terraMap,\n heightMapScale,\n fogColor: FOG_COLOR,\n fogFar: fogDist,\n grassFogFar: grassFogDist,\n grassColor: GRASS_COLOR,\n transitionLow: BEACH_TRANSITION_LOW,\n transitionHigh: BEACH_TRANSITION_HIGH,\n windIntensity\n })\n // Set a specific render order - don't let three.js sort things for us.\n this.meshes.grass.renderOrder = 10\n this.scene.add(this.meshes.grass)\n\n // Terrain mesh\n this.terra = Terrain.create({\n textures: [this.assets.textures['terrain1'], this.assets.textures['terrain2']],\n vertScript: this.assets.text['terrain.vert'],\n fragScript: this.assets.text['terrain.frag'],\n heightMap: terraMap,\n heightMapScale,\n fogColor: FOG_COLOR,\n fogFar: fogDist,\n grassFogFar: grassFogDist,\n transitionLow: BEACH_TRANSITION_LOW,\n transitionHigh: BEACH_TRANSITION_HIGH\n })\n this.meshes.terrain = this.terra.mesh\n this.meshes.terrain.renderOrder = 20\n this.scene.add(this.meshes.terrain)\n\n // Skydome\n this.meshes.sky = skydome.createMesh(this.assets.textures['skydome'], VIEW_DEPTH * 0.95)\n this.meshes.sky.renderOrder = 30\n this.scene.add(this.meshes.sky)\n this.meshes.sky.position.z = -25.0\n\n\n this.meshes.water = water.createMesh({\n envMap: this.assets.textures['skyenv'],\n vertScript: this.assets.text['water.vert'],\n fragScript: this.assets.text['water.frag'],\n waterLevel: WATER_LEVEL,\n waterColor: WATER_COLOR,\n fogColor: FOG_COLOR,\n fogNear: 1.0,\n fogFar: fogDist\n })\n this.meshes.water.renderOrder = 40\n this.scene.add(this.meshes.water)\n this.meshes.water.position.z = WATER_LEVEL\n\n\n// Bright yellow plane for sun glare using additive blending\n// to blow out the colours\nthis.meshes.sunFlare = new THREE.Mesh(\nnew THREE.PlaneBufferGeometry(6.0, 4.0, 1, 1),\nnew THREE.MeshBasicMaterial({\n color: Color.to24bit(GLARE_COLOR), fog: false, transparent: true, opacity: 0.0,\n depthTest: false, depthWrite: false, blending: THREE.AdditiveBlending\n})\n)\nthis.meshes.sunFlare.position.x = 2.05\nthis.meshes.sunFlare.rotation.y = Math.PI * 1.5\nthis.meshes.sunFlare.visible = false\nthis.meshes.sunFlare.renderOrder = 20\nthis.camHolder.add(this.meshes.sunFlare)\n\n// Create a Player instance\nthis.player = Player(this.heightField, WATER_LEVEL)\n\nthis.prevT = Date.now() // prev frame time (ms)\nthis.simT = 0 // total running time (ms)\n\n\nthis.resize(this.displayWidth, this.displayHeight)\nif(typeof window !== \"undefined\"){\n\twindow.addEventListener('resize', this.resize, false)\n}\nthis.mount.appendChild( this.renderer.domElement );\nthis.doFrame()\n\n\n\n// this.renderScene()\n\n// input.setKeyPressListener('F'.charCodeAt(0), () => {\n// windIntensity = Math.max(windIntensity - 0.1, 0)\n// const mat = this.meshes.grass.material\n// mat.uniforms['windIntensity'].value = windIntensity\n// })\n// input.setKeyPressListener('G'.charCodeAt(0), () => {\n// windIntensity = Math.min(windIntensity + 0.1, WIND_MAX)\n// const mat = this.meshes.grass.material\n// mat.uniforms['windIntensity'].value = windIntensity\n// })\n\n\n\n\n\n}\n\n\n /** Handle window resize events */\n\tresize() {\n if(typeof window !== \"undefined\"){\n\t let displayWidth = window.innerWidth\n\t\tlet displayHeight = window.innerHeight\n this.mount.width = displayWidth\n this.mount.height = displayHeight\n\t\tthis.renderer.setSize(displayWidth, displayHeight)\n\t\tthis.camera.aspect = displayWidth / displayHeight\n\t\tthis.camera.updateProjectionMatrix()\n }\n\n\t}\n\n\n doFrame() {\n\n\n\t\tconst curT = Date.now()\n\t\tlet dt = curT - this.prevT\n\t\t// fpsMon.update(dt)\n\n\t\tif (dt > 0) {\n\t\t\t// only do computations if time elapsed\n\t\t\tif (dt > MAX_TIMESTEP) {\n\t\t\t\t// don't exceed max timestep\n\t\t\t\tdt = MAX_TIMESTEP\n\t\t\t\tthis.prevT = curT - MAX_TIMESTEP\n\t\t\t}\n\t\t\t// update sim\n\t\t\tthis.update(dt)\n\t\t\t// render it\n\t\t\tthis.renderScene()\n\t\t\t// remember prev frame time\n\t\t\tthis.prevT = curT\n\t\t}\n this.frameId = requestAnimationFrame(this.doFrame)\n\t}\n\n renderScene () {\n\n this.renderer.render(this.scene, this.camera)\n\n}\n\n\n update(dt) {\n\t\t// Intro fade from white\n\t\t// if (simT < INTRO_FADE_DUR) {\n\t\t// \tupdateFade(dt)\n\t\t// }\n\n\n\n\t\t// Update grass.\n\t\t// Here we specify the centre position of the square patch to\n\t\t// be drawn. That would be directly in front of the camera, the\n\t\t// distance from centre to edge of the patch.\n\t\tconst drawPos = this._v\n\n //conditional to pause rendering added for the bubbles - now removed\n // if(this.props.sectionnumber !== 2 && this.props.sectionnumber !== 3 ){\n\n\n this.simT += dt\n const t = this.simT * 0.001\n // Move player (viewer)\n // console.log(\"WORLD UPDATE\",this.props.scrollpercentage,this.props.sectionnumber,this.props.scrollsection,this.props.mode )\n this.player.update(dt,this.props.scrollpercentage,this.props.sectionnumber,this.props.scrollsection,this.props.mode)\n const ppos = this.player.state.pos\n const pdir = this.player.state.dir\n const pyaw = this.player.state.yaw\n const ppitch = this.player.state.pitch\n const proll = this.player.state.roll\n\n HeightFieldFunctions.infoAt(this.heightField, ppos.x , ppos.y, true, this._hinfo)\n const groundHeight = this._hinfo.z\n\n // Move skydome with player\n this.meshes.sky.position.x = ppos.x\n this.meshes.sky.position.y = ppos.y\n\n // console.log(\"ppos\" , ppos.x, pyaw, this.grassPatchRadius)\n\t\tVec2.set(drawPos, ppos.x + Math.cos(pyaw) * this.grassPatchRadius, ppos.y + Math.sin(pyaw) * this.grassPatchRadius)\n\t\tgrass.update(this.meshes.grass, t, ppos, pdir, drawPos)\n\n\t\tTerrain.update(this.terra, ppos.x, ppos.y)\n\n\t\twater.update(this.meshes.water, ppos)\n // Update camera location/orientation\n Vec3.copy(ppos, this.camHolder.position)\n //camHolder.position.z = ppos.z + groundHeight\n this.camHolder.rotation.z = pyaw\n // Player considers 'up' pitch positive, but cam pitch (about Y) is reversed\n this.camHolder.rotation.y = -ppitch\n this.camHolder.rotation.x = proll\n\n // Update sun glare effect\n this.updateGlare()\n // }\n\n\n\n\t}\n\n updateGlare () {\n const dy = Math.abs(difAngle(GLARE_YAW, this.player.state.yaw))\n const dp = Math.abs(difAngle(GLARE_PITCH, this.player.state.pitch)) * 1.75\n const sunVisAngle = Math.sqrt(dy * dy + dp * dp)\n if (sunVisAngle < GLARE_RANGE) {\n const glare = MAX_GLARE * Math.pow((GLARE_RANGE - sunVisAngle) / (1.0 + MAX_GLARE), 0.75);\n this.meshes.sunFlare.material.opacity = Math.max(0.0, glare)\n this.meshes.sunFlare.visible = true\n } else {\n this.meshes.sunFlare.visible = false\n }\n}\n\n\n\n\n\n\n render() {\n\nreturn (\n <>\n {this.state.loading ? : <>}\n
(this.mount = ref)} />\n \n )\n\n }\n}\n\nexport default World;\n","module.exports = __webpack_public_path__ + \"static/concrete-04203254559ab7ffb248ffceb890f5d9.jpg\";","module.exports = __webpack_public_path__ + \"static/social_default-1b70e8a6c6d5b7152803d9f4368b969b.jpg\";","'use strict';\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n }\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n return a !== a && b !== b;\n};","import React, {useEffect, useRef, useState , Suspense} from 'react'\nimport * as THREE from 'three'\n\n\nimport { useFrame, useLoader, HTML, Dom } from 'react-three-fiber'\nimport PFAS_logo from './images/pfas_logo.png'\n\nimport Canvas from './components/Canvas'\nimport Camera from './components/Canvas/Camera'\nimport Sphere from './components/Canvas/Sphere'\nimport Environment from './components/Canvas/Environment'\n// import Particles from './components/particles.js'\nimport Water from './components/water.js'\nimport Concrete from './components/concrete.js'\nimport Foam from './components/foam_new/foam_new.js'\nimport Soil from './components/terrain/world.js'\nimport IEimages from './IEimages.js'\nimport {isIE} from 'react-device-detect';\n\nimport ConcreteImg from '../images/concrete.jpg'\nimport WaterImg from '../images/water.jpg'\nimport SoilImg from '../images/soil.jpg'\nimport FoamImg from '../images/foam.jpg'\n\n\n\n\n\n\nimport gsap ,{TweenMax} from 'gsap'\nconst GROUND_HEIGHT = -50;\n\n\n//\n// function Box(props) {\n// // This reference will give us direct access to the mesh\n// const mesh = useRef()\n//\n// // Set up state for the hovered and active state\n// const [hovered, setHover] = useState(false)\n// const [active, setActive] = useState(false)\n//\n// // Rotate mesh every frame, this is outside of React without overhead\n// useFrame(() => {\n// mesh.current.rotation.x = mesh.current.rotation.y += 0.01\n// })\n//\n// return (\n// setActive(!active)}\n// onPointerOver={(e) => setHover(true)}\n// onPointerOut={(e) => setHover(false)}>\n// \n// \n// \n// )\n// }\n\nfunction Sprite({ url, ...props }) {\n const texture = useLoader(THREE.TextureLoader, url)\n return (\n \n \n \n )\n}\n // \n\n\n\nfunction Dolly({camera, percentage, scrollsection}) {\n // This one makes the camera move in and out\n // useFrame(({ scrollpercentage, camera }) => camera.updateProjectionMatrix(void (camera.position.z = 0.1 + Math.sin(clock.getElapsedTime()))))\n// console.log(\"camera\", camera)\n// camera.position.z = 1000\n\n // useFrame(({ clock, camera }) => {\n // let tl = gsap.timeline()\n // tl.to(camera.position,{z:-0.1,y:-0.5,delay:20,duration: 10});\n // })\n\n // let tl = gsap.timeline({useFrames: true });\n //\n // useFrame(({ clock,camera }) => {\n // console.log(percentage, tl.progress())\n //\n // if(scrollsection === \"intro\" || scrollsection === \"resolve\"){\n // tl.to(camera.position,{z:10});\n // }\n // if(scrollsection === \"particles\"){\n // tl.fromTo(camera.position,{z:10},{z:100});\n //\n // }\n // if(scrollsection === \"particles2\"){\n // //tl.fromTo(camera.position,{z:100},{z:1000});\n // }\n //\n // tl.progress(percentage).pause()\n //\n // })\n\n\n\n useFrame(({ clock,camera }) => {\n\n if(scrollsection.includes(\"intro\")){\n TweenMax.to(camera.position,{z:-Math.abs(percentage)});\n }\n\n\n\n })\n\n\n return null\n}\n\n\n\n\n\n// function Terrain() {\n// const terrain = useRef();\n//\n// useFrame(() => {\n// terrain.current.position.z += 0.4;\n// });\n// return (\n// \n// \n// \n// \n// );\n// }\n// \n// loading...}>\n// \n// \n// \n//
We partner with companies and organisations across the world to identify and resolve the challenges of PFAS
\n//
\n//
\n//\n\n\n\n\nconst ThreeD = ({scrollpercentage, scrollsection,sectionnumber}) => (\n<>\n\n{scrollsection === \"Concrete\" ? isIE ?
::<>}\n{scrollsection === \"Water\" ? isIE ?
::<>}\n{scrollsection === \"Foam\" ? isIE ?
::<>}\n{scrollsection === \"Soil\" ? isIE ?
::<>}\n\n\n{isIE ? scrollsection.includes(\"Terrain\")?\n\n:<>:\n\nscrollsection.includes(\"Terrain\")?\n<>\n{scrollsection.includes(\"intro\") ?\n<>\n\n\n\n\n\n\n:<>\n}\n\n\n:<>\n\n\n}\n\n\n\n\n\n\n)\n// {scrollsection.includes(\"particles\") ?\n// <>\n//\n// \n//\n// \n// :<>\n// }\n\n\nexport default ThreeD\n","module.exports = __webpack_public_path__ + \"static/intro-cc35248eae1d5ed1a44fb851403c709c.jpg\";","import React from 'react'\nimport {map} from 'lodash'\n\nconst positions = [\n [1, 0, 0],\n [-1, 0, 0],\n [0, 1, 0],\n [0, -1, 0],\n [0, 0, 1],\n [0, 0, -1],\n]\n\nconst Sphere = ({position}) => {\n return (\n \n \n \n \n )\n}\n\nexport default () => {\n const sphereMeshes = map(positions, (el, i) => {\n return \n })\n\n return (\n <>\n {sphereMeshes}\n\n \n \n \n )\n}\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","export default \"#define GLSLIFY 1\\nuniform int byp; //should we apply the glitch ?\\n uniform float time;\\n uniform float factor;\\n uniform vec2 resolution;\\n uniform sampler2D texture;\\n\\n varying vec2 vUv;\\n\\n void main() {\\n if (byp<1) {\\n vec2 uv1 = vUv;\\n vec2 uv = gl_FragCoord.xy/resolution.xy;\\n float frequency = 6.0;\\n float amplitude = 0.015 * factor;\\n float x = uv1.y * frequency + time * .7;\\n float y = uv1.x * frequency + time * .3;\\n uv1.x += cos(x+y) * amplitude * cos(y);\\n uv1.y += sin(x-y) * amplitude * cos(y);\\n vec4 rgba = texture2D(texture, uv1);\\n gl_FragColor = rgba;\\n } else {\\n gl_FragColor = texture2D(texture, vUv);\\n }\\n }\\n\"","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import React, {useRef, useMemo} from 'react'\nimport {BackSide, Color} from 'three'\nimport {useRawData} from '../../../../hooks'\n\nimport vertex from '../../../../shaders/default.vert'\nimport fragment from '../../../../shaders/environment.frag'\n\nexport default (colors) => {\n const mesh = useRef()\n let colorSteps = useRawData('colors.gradients')\n if(colors === \"particles\"){\n colorSteps = useRawData('colors.particles')\n }\n const radius = 40\n\n const uniforms = useMemo(() => {\n return {\n uTopColor: {value: new Color(colorSteps[0].top)},\n uBottomColor: {value: new Color(colorSteps[0].bottom)},\n uSpot1Color: {value: new Color(colorSteps[0].spot1)},\n uSpot1Position: {value: [0.4, 0.7]},\n uSpot2Color: {value: new Color(colorSteps[0].spot2)},\n uSpot2Position: {value: [0.6, 0.4]},\n }\n }, [])\n\n return (\n <>\n \n \n \n \n \n )\n}\n// \n// \n//\n// \n// \n","export default \"#define GLSLIFY 1\\n//\\n// Description : Array and textureless GLSL 2D/3D/4D simplex\\n// noise functions.\\n// Author : Ian McEwan, Ashima Arts.\\n// Maintainer : ijm\\n// Lastmod : 20110822 (ijm)\\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\\n// Distributed under the MIT License. See LICENSE file.\\n// https://github.com/ashima/webgl-noise\\n//\\n\\nvec3 mod289(vec3 x) {\\n return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x) {\\n return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x) {\\n return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nfloat snoise(vec3 v)\\n {\\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\\n\\n// First corner\\n vec3 i = floor(v + dot(v, C.yyy) );\\n vec3 x0 = v - i + dot(i, C.xxx) ;\\n\\n// Other corners\\n vec3 g = step(x0.yzx, x0.xyz);\\n vec3 l = 1.0 - g;\\n vec3 i1 = min( g.xyz, l.zxy );\\n vec3 i2 = max( g.xyz, l.zxy );\\n\\n // x0 = x0 - 0.0 + 0.0 * C.xxx;\\n // x1 = x0 - i1 + 1.0 * C.xxx;\\n // x2 = x0 - i2 + 2.0 * C.xxx;\\n // x3 = x0 - 1.0 + 3.0 * C.xxx;\\n vec3 x1 = x0 - i1 + C.xxx;\\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\\n\\n// Permutations\\n i = mod289(i);\\n vec4 p = permute( permute( permute(\\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\\n\\n// Gradients: 7x7 points over a square, mapped onto an octahedron.\\n// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\\n float n_ = 0.142857142857; // 1.0/7.0\\n vec3 ns = n_ * D.wyz - D.xzx;\\n\\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\\n\\n vec4 x_ = floor(j * ns.z);\\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\\n\\n vec4 x = x_ *ns.x + ns.yyyy;\\n vec4 y = y_ *ns.x + ns.yyyy;\\n vec4 h = 1.0 - abs(x) - abs(y);\\n\\n vec4 b0 = vec4( x.xy, y.xy );\\n vec4 b1 = vec4( x.zw, y.zw );\\n\\n //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\\n //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\\n vec4 s0 = floor(b0)*2.0 + 1.0;\\n vec4 s1 = floor(b1)*2.0 + 1.0;\\n vec4 sh = -step(h, vec4(0.0));\\n\\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\\n\\n vec3 p0 = vec3(a0.xy,h.x);\\n vec3 p1 = vec3(a0.zw,h.y);\\n vec3 p2 = vec3(a1.xy,h.z);\\n vec3 p3 = vec3(a1.zw,h.w);\\n\\n//Normalise gradients\\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\\n p0 *= norm.x;\\n p1 *= norm.y;\\n p2 *= norm.z;\\n p3 *= norm.w;\\n\\n// Mix final noise value\\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\\n m = m * m;\\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\\n dot(p2,x2), dot(p3,x3) ) );\\n }\\n\\nfloat fbm3d(vec3 x, const in int it) {\\n float v = 0.0;\\n float a = 0.5;\\n vec3 shift = vec3(100);\\n\\n \\n for (int i = 0; i < 32; ++i) {\\n if(i= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nvar deepEqual = require('fast-deep-equal');\n\nvar promiseCaches = [];\n\nvar usePromise = function usePromise(promise, inputs, lifespan) {\n if (lifespan === void 0) {\n lifespan = 0;\n }\n\n var e_1, _a;\n\n try {\n for (var promiseCaches_1 = __values(promiseCaches), promiseCaches_1_1 = promiseCaches_1.next(); !promiseCaches_1_1.done; promiseCaches_1_1 = promiseCaches_1.next()) {\n var promiseCache_1 = promiseCaches_1_1.value;\n\n if (deepEqual(inputs, promiseCache_1.inputs)) {\n if (Object.prototype.hasOwnProperty.call(promiseCache_1, 'error')) {\n throw promiseCache_1.error;\n }\n\n if (Object.prototype.hasOwnProperty.call(promiseCache_1, 'response')) {\n return promiseCache_1.response;\n }\n\n throw promiseCache_1.promise;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (promiseCaches_1_1 && !promiseCaches_1_1.done && (_a = promiseCaches_1[\"return\"])) _a.call(promiseCaches_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n var promiseCache = {\n promise: promise.apply(void 0, __spread(inputs)).then(function (response) {\n promiseCache.response = response;\n })[\"catch\"](function (e) {\n promiseCache.error = e;\n }).then(function () {\n if (lifespan > 0) {\n setTimeout(function () {\n var index = promiseCaches.indexOf(promiseCache);\n\n if (index !== -1) {\n promiseCaches.splice(index, 1);\n }\n }, lifespan);\n }\n }),\n inputs: inputs\n };\n promiseCaches.push(promiseCache);\n throw promiseCache.promise;\n};\n\nmodule.exports = usePromise;","//\n// Water mesh\n// A flat plane extending to frustum depth that follows\n// viewer position horizontally.\n// Shader does environmental mapping to reflect skydome,\n// blend with water colour, and apply fog in distance.\n//\n\n// Uses water shaders (see: shader/water.*.glsl)\n\n// LICENSE: MIT\n// Copyright (c) 2016 by Mike Linkovich\n\n/// \nimport {Vec3, Color} from './vec'\nimport * as THREE from \"three\";\n\n// export interface WaterOptions {\n// \tenvMap: THREE.Texture\n// \tvertScript: string\n// \tfragScript: string\n// \twaterLevel: number\n// \twaterColor: Color\n// \tfogColor: Color\n// \tfogNear: number\n// \tfogFar: number\n// }\n\nlet _time = 0\n\n/** Create Water Mesh */\nexport function createMesh (opts) {\n\topts.envMap.wrapS = opts.envMap.wrapT = THREE.RepeatWrapping\n\topts.envMap.minFilter = opts.envMap.magFilter = THREE.LinearFilter\n\topts.envMap.generateMipmaps = false\n\tconst mat = new THREE.RawShaderMaterial({\n\t\tuniforms: {\n\t\t\ttime: {type: '1f', value: 0.0},\n\t\t\tviewPos: {type: '3f', value: [0.0, 0.0, 10.0]},\n\t\t\tmap: {type: 't', value: opts.envMap},\n\t\t\twaterLevel: {type: '1f', value: opts.waterLevel},\n\t\t\twaterColor: {type: '3f', value: Color.toArray(opts.waterColor)},\n\t\t\tfogColor: {type: '3f', value: Color.toArray(opts.fogColor)},\n\t\t\tfogNear: {type: 'f', value: 1.0},\n\t\t\tfogFar: {type: 'f', value: opts.fogFar * 1.5},\n\t\t},\n\t\tvertexShader: opts.vertScript,\n\t\tfragmentShader: opts.fragScript\n\t})\n\tconst mesh = new THREE.Mesh(\n\t\tnew THREE.PlaneBufferGeometry(2000.0, 2000.0),\n\t\tmat\n\t)\n\tmesh.frustumCulled = false\n\t_time = Date.now()\n\treturn mesh\n}\n\nexport function update (mesh, viewPos) {\n\tmesh.position.x = viewPos.x\n\tmesh.position.y = viewPos.y\n //Tizz errorred\n\t// const mat = mesh.material as THREE.RawShaderMaterial\n \tconst mat = mesh.material\n \t// const vp = mat.uniforms['viewPos'].value as number[]\n\tconst vp = mat.uniforms['viewPos'].value\n\tvp[0] = viewPos.x\n\tvp[1] = viewPos.y\n\tvp[2] = viewPos.z\n\n\tmat.uniforms['time'].value = (Date.now() - _time) / 250.0\n}\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","module.exports = __webpack_public_path__ + \"static/oVihm-bf0241b979c09520504dbcfe9b95bdb7.jpg\";","import React from \"react\";\nimport * as THREE from \"three\";\n\nexport const Assets = {\n\timages: {id: Object},\n\ttext: {id:\"\"},\n\ttextures: {id: THREE.Texture},\n}\n\nconst AssetDescription = {\n\tname: \"\",\n\turl: \"\",\n}\n\nconst AssetList = {\n\timages: AssetDescription,\n\ttext: AssetDescription,\n\ttextures: AssetDescription,\n}\n\n\n/**\n * Create a Loader instance\n */\nfunction Loader() {\n\n\tlet isLoading = false\n\tlet totalToLoad = 0\n\tlet numLoaded = 0\n\tlet numFailed = 0\n\tlet success_cb = undefined\n\tlet progress_cb = undefined\n\tlet error_cb = undefined\n\tlet done_cb = undefined\n\tconst assets = {images: {}, text: {}, textures: {}}\n\t/**\n\t * Start loading a list of assets\n\t */\n\tfunction load(\n\t\tassetList,\n\t\tsuccess ,\n\t\tprogress,\n\t\terror,\n\t\tdone\n\t) {\n\t\tsuccess_cb = success\n\t\tprogress_cb = progress\n\t\terror_cb = error\n\t\tdone_cb = done\n\t\ttotalToLoad = 0\n\t\tnumLoaded = 0\n\t\tnumFailed = 0\n\t\tisLoading = true\n\n\t\tif (assetList.text) {\n\t\t\ttotalToLoad += assetList.text.length\n\t\t\tfor (let i = 0; i < assetList.text.length; ++i) {\n\t\t\t\tloadText(assetList.text[i])\n\t\t\t}\n\t\t}\n\t\tif (assetList.images) {\n\t\t\ttotalToLoad += assetList.images.length\n\t\t\tfor (let i = 0; i < assetList.images.length; ++i) {\n\t\t\t\tloadImage(assetList.images[i])\n\t\t\t}\n\t\t}\n\t\tif (assetList.textures) {\n\t\t\ttotalToLoad += assetList.textures.length\n\t\t\tfor (let i = 0; i < assetList.textures.length; ++i) {\n\t\t\t\tloadTexture(assetList.textures[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction loadText (ad) {\n\t\tconst req = new XMLHttpRequest()\n\t\treq.overrideMimeType('*/*')\n\t\treq.onreadystatechange = function() {\n\t\t\tif (req.readyState === 4) {\n\t\t\t\tif (req.status === 200) {\n\t\t\t\t\tassets.text[ad.name] = req.responseText\n\t\t\t\t\t// console.log('loaded ' + ad.name)\n\t\t\t\t\tdoProgress()\n\t\t\t\t} else {\n\t\t\t\t\tdoError(\"Error \" + req.status + \" loading \" + ad.url)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treq.open('GET', ad.url)\n\t\treq.send()\n\t}\n\n\tfunction loadImage (ad) {\n\t\tconst img = new Image()\n\t\tassets.images[ad.name] = img\n\t\timg.onload = doProgress\n\t\timg.onerror = doError\n\t\timg.src = ad.url\n\t}\n\n\tfunction loadTexture (ad) {\n\t\tassets.textures[ad.name] = new THREE.TextureLoader().load(ad.url, doProgress)\n\t}\n\n\tfunction doProgress() {\n\t\tnumLoaded += 1\n\t\tprogress_cb && progress_cb(numLoaded / totalToLoad)\n\t\ttryDone()\n\t}\n\n\tfunction doError (e) {\n\t\terror_cb && error_cb(e)\n\t\tnumFailed += 1\n\t\ttryDone()\n\t}\n\n\tfunction tryDone() {\n\t\tif (!isLoading)\n\t\t\treturn true\n\t\tif (numLoaded + numFailed >= totalToLoad) {\n\t\t\tconst ok = !numFailed\n\t\t\tif (ok && success_cb) success_cb(assets)\n\t\t\tdone_cb && done_cb(ok)\n\t\t\tisLoading = false\n\t\t}\n\t\treturn !isLoading\n\t}\n\n\t/**\n\t * Public interface\n\t */\n\treturn {\n\t\tload,\n\t\tgetAssets: () => assets\n\t}\n\n} // end Loader\n\nexport default Loader\n","module.exports = __webpack_public_path__ + \"static/233-1926d64576fdcaac5d6d677df10e1366.jpg\";","/**\n * Full-screen textured quad shader\n */\nvar CopyShader = {\n uniforms: {\n \"tDiffuse\": {\n value: null\n },\n \"opacity\": {\n value: 1.0\n }\n },\n vertexShader: [\"varying vec2 vUv;\", \"void main() {\", \"\tvUv = uv;\", \"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\", \"}\"].join(\"\\n\"),\n fragmentShader: [\"uniform float opacity;\", \"uniform sampler2D tDiffuse;\", \"varying vec2 vUv;\", \"void main() {\", \"\tvec4 texel = texture2D( tDiffuse, vUv );\", \"\tgl_FragColor = opacity * texel;\", \"}\"].join(\"\\n\")\n};\nexport { CopyShader };","import \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport { ShaderMaterial, UniformsUtils } from \"../../../build/three.module.js\";\nimport { Pass } from \"../postprocessing/Pass.js\";\n\nvar ShaderPass = function ShaderPass(shader, textureID) {\n Pass.call(this);\n this.textureID = textureID !== undefined ? textureID : \"tDiffuse\";\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms;\n this.material = shader;\n } else if (shader) {\n this.uniforms = UniformsUtils.clone(shader.uniforms);\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader\n });\n }\n\n this.fsQuad = new Pass.FullScreenQuad(this.material);\n};\n\nShaderPass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: ShaderPass,\n render: function render(renderer, writeBuffer, readBuffer\n /*, deltaTime, maskActive */\n ) {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture;\n }\n\n this.fsQuad.material = this.material;\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null);\n this.fsQuad.render(renderer);\n } else {\n renderer.setRenderTarget(writeBuffer); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n this.fsQuad.render(renderer);\n }\n }\n});\nexport { ShaderPass };","import \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport { Pass } from \"../postprocessing/Pass.js\";\n\nvar MaskPass = function MaskPass(scene, camera) {\n Pass.call(this);\n this.scene = scene;\n this.camera = camera;\n this.clear = true;\n this.needsSwap = false;\n this.inverse = false;\n};\n\nMaskPass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: MaskPass,\n render: function render(renderer, writeBuffer, readBuffer\n /*, deltaTime, maskActive */\n ) {\n var context = renderer.getContext();\n var state = renderer.state; // don't update color or depth\n\n state.buffers.color.setMask(false);\n state.buffers.depth.setMask(false); // lock buffers\n\n state.buffers.color.setLocked(true);\n state.buffers.depth.setLocked(true); // set up stencil\n\n var writeValue, clearValue;\n\n if (this.inverse) {\n writeValue = 0;\n clearValue = 1;\n } else {\n writeValue = 1;\n clearValue = 0;\n }\n\n state.buffers.stencil.setTest(true);\n state.buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE);\n state.buffers.stencil.setFunc(context.ALWAYS, writeValue, 0xffffffff);\n state.buffers.stencil.setClear(clearValue);\n state.buffers.stencil.setLocked(true); // draw into the stencil buffer\n\n renderer.setRenderTarget(readBuffer);\n if (this.clear) renderer.clear();\n renderer.render(this.scene, this.camera);\n renderer.setRenderTarget(writeBuffer);\n if (this.clear) renderer.clear();\n renderer.render(this.scene, this.camera); // unlock color and depth buffer for subsequent rendering\n\n state.buffers.color.setLocked(false);\n state.buffers.depth.setLocked(false); // only render where stencil is set to 1\n\n state.buffers.stencil.setLocked(false);\n state.buffers.stencil.setFunc(context.EQUAL, 1, 0xffffffff); // draw if == 1\n\n state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\n state.buffers.stencil.setLocked(true);\n }\n});\n\nvar ClearMaskPass = function ClearMaskPass() {\n Pass.call(this);\n this.needsSwap = false;\n};\n\nClearMaskPass.prototype = Object.create(Pass.prototype);\nObject.assign(ClearMaskPass.prototype, {\n render: function render(renderer\n /*, writeBuffer, readBuffer, deltaTime, maskActive */\n ) {\n renderer.state.buffers.stencil.setLocked(false);\n renderer.state.buffers.stencil.setTest(false);\n }\n});\nexport { MaskPass, ClearMaskPass };","import \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.function.name\";\nimport { Clock, LinearFilter, Mesh, OrthographicCamera, PlaneBufferGeometry, RGBAFormat, Vector2, WebGLRenderTarget } from \"../../../build/three.module.js\";\nimport { CopyShader } from \"../shaders/CopyShader.js\";\nimport { ShaderPass } from \"../postprocessing/ShaderPass.js\";\nimport { MaskPass } from \"../postprocessing/MaskPass.js\";\nimport { ClearMaskPass } from \"../postprocessing/MaskPass.js\";\n\nvar EffectComposer = function EffectComposer(renderer, renderTarget) {\n this.renderer = renderer;\n\n if (renderTarget === undefined) {\n var parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat\n };\n var size = renderer.getSize(new Vector2());\n this._pixelRatio = renderer.getPixelRatio();\n this._width = size.width;\n this._height = size.height;\n renderTarget = new WebGLRenderTarget(this._width * this._pixelRatio, this._height * this._pixelRatio, parameters);\n renderTarget.texture.name = 'EffectComposer.rt1';\n } else {\n this._pixelRatio = 1;\n this._width = renderTarget.width;\n this._height = renderTarget.height;\n }\n\n this.renderTarget1 = renderTarget;\n this.renderTarget2 = renderTarget.clone();\n this.renderTarget2.texture.name = 'EffectComposer.rt2';\n this.writeBuffer = this.renderTarget1;\n this.readBuffer = this.renderTarget2;\n this.renderToScreen = true;\n this.passes = []; // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader');\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass');\n }\n\n this.copyPass = new ShaderPass(CopyShader);\n this.clock = new Clock();\n};\n\nObject.assign(EffectComposer.prototype, {\n swapBuffers: function swapBuffers() {\n var tmp = this.readBuffer;\n this.readBuffer = this.writeBuffer;\n this.writeBuffer = tmp;\n },\n addPass: function addPass(pass) {\n this.passes.push(pass);\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n },\n insertPass: function insertPass(pass, index) {\n this.passes.splice(index, 0, pass);\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n },\n isLastEnabledPass: function isLastEnabledPass(passIndex) {\n for (var i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false;\n }\n }\n\n return true;\n },\n render: function render(deltaTime) {\n // deltaTime value is in seconds\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta();\n }\n\n var currentRenderTarget = this.renderer.getRenderTarget();\n var maskActive = false;\n var pass,\n i,\n il = this.passes.length;\n\n for (i = 0; i < il; i++) {\n pass = this.passes[i];\n if (pass.enabled === false) continue;\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i);\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive);\n\n if (pass.needsSwap) {\n if (maskActive) {\n var context = this.renderer.getContext();\n var stencil = this.renderer.state.buffers.stencil; //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff);\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime); //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n\n stencil.setFunc(context.EQUAL, 1, 0xffffffff);\n }\n\n this.swapBuffers();\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true;\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false;\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget);\n },\n reset: function reset(renderTarget) {\n if (renderTarget === undefined) {\n var size = this.renderer.getSize(new Vector2());\n this._pixelRatio = this.renderer.getPixelRatio();\n this._width = size.width;\n this._height = size.height;\n renderTarget = this.renderTarget1.clone();\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);\n }\n\n this.renderTarget1.dispose();\n this.renderTarget2.dispose();\n this.renderTarget1 = renderTarget;\n this.renderTarget2 = renderTarget.clone();\n this.writeBuffer = this.renderTarget1;\n this.readBuffer = this.renderTarget2;\n },\n setSize: function setSize(width, height) {\n this._width = width;\n this._height = height;\n var effectiveWidth = this._width * this._pixelRatio;\n var effectiveHeight = this._height * this._pixelRatio;\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight);\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight);\n\n for (var i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight);\n }\n },\n setPixelRatio: function setPixelRatio(pixelRatio) {\n this._pixelRatio = pixelRatio;\n this.setSize(this._width, this._height);\n }\n});\n\nvar Pass = function Pass() {\n // if set to true, the pass is processed by the composer\n this.enabled = true; // if set to true, the pass indicates to swap read and write buffer after rendering\n\n this.needsSwap = true; // if set to true, the pass clears its buffer before rendering\n\n this.clear = false; // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\n this.renderToScreen = false;\n};\n\nObject.assign(Pass.prototype, {\n setSize: function setSize()\n /* width, height */\n {},\n render: function render()\n /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */\n {\n console.error('THREE.Pass: .render() must be implemented in derived pass.');\n }\n}); // Helper for passes that need to fill the viewport with a single quad.\n\nPass.FullScreenQuad = function () {\n var camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n var geometry = new PlaneBufferGeometry(2, 2);\n\n var FullScreenQuad = function FullScreenQuad(material) {\n this._mesh = new Mesh(geometry, material);\n };\n\n Object.defineProperty(FullScreenQuad.prototype, 'material', {\n get: function get() {\n return this._mesh.material;\n },\n set: function set(value) {\n this._mesh.material = value;\n }\n });\n Object.assign(FullScreenQuad.prototype, {\n dispose: function dispose() {\n this._mesh.geometry.dispose();\n },\n render: function render(renderer) {\n renderer.render(this._mesh, camera);\n }\n });\n return FullScreenQuad;\n}();\n\nexport { EffectComposer, Pass };","import \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport { Pass } from \"../postprocessing/Pass.js\";\n\nvar RenderPass = function RenderPass(scene, camera, overrideMaterial, clearColor, clearAlpha) {\n Pass.call(this);\n this.scene = scene;\n this.camera = camera;\n this.overrideMaterial = overrideMaterial;\n this.clearColor = clearColor;\n this.clearAlpha = clearAlpha !== undefined ? clearAlpha : 0;\n this.clear = true;\n this.clearDepth = false;\n this.needsSwap = false;\n};\n\nRenderPass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: RenderPass,\n render: function render(renderer, writeBuffer, readBuffer\n /*, deltaTime, maskActive */\n ) {\n var oldAutoClear = renderer.autoClear;\n renderer.autoClear = false;\n var oldClearColor, oldClearAlpha, oldOverrideMaterial;\n\n if (this.overrideMaterial !== undefined) {\n oldOverrideMaterial = this.scene.overrideMaterial;\n this.scene.overrideMaterial = this.overrideMaterial;\n }\n\n if (this.clearColor) {\n oldClearColor = renderer.getClearColor().getHex();\n oldClearAlpha = renderer.getClearAlpha();\n renderer.setClearColor(this.clearColor, this.clearAlpha);\n }\n\n if (this.clearDepth) {\n renderer.clearDepth();\n }\n\n renderer.setRenderTarget(this.renderToScreen ? null : readBuffer); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n renderer.render(this.scene, this.camera);\n\n if (this.clearColor) {\n renderer.setClearColor(oldClearColor, oldClearAlpha);\n }\n\n if (this.overrideMaterial !== undefined) {\n this.scene.overrideMaterial = oldOverrideMaterial;\n }\n\n renderer.autoClear = oldAutoClear;\n }\n});\nexport { RenderPass };","/**\n * Afterimage shader\n * I created this effect inspired by a demo on codepen:\n * https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&\n */\nvar AfterimageShader = {\n uniforms: {\n \"damp\": {\n value: 0.96\n },\n \"tOld\": {\n value: null\n },\n \"tNew\": {\n value: null\n }\n },\n vertexShader: [\"varying vec2 vUv;\", \"void main() {\", \"\tvUv = uv;\", \"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\", \"}\"].join(\"\\n\"),\n fragmentShader: [\"uniform float damp;\", \"uniform sampler2D tOld;\", \"uniform sampler2D tNew;\", \"varying vec2 vUv;\", \"vec4 when_gt( vec4 x, float y ) {\", \"\treturn max( sign( x - y ), 0.0 );\", \"}\", \"void main() {\", \"\tvec4 texelOld = texture2D( tOld, vUv );\", \"\tvec4 texelNew = texture2D( tNew, vUv );\", \"\ttexelOld *= damp * when_gt( texelOld, 0.1 );\", \"\tgl_FragColor = max(texelNew, texelOld);\", \"}\"].join(\"\\n\")\n};\nexport { AfterimageShader };","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport { LinearFilter, MeshBasicMaterial, NearestFilter, RGBAFormat, ShaderMaterial, UniformsUtils, WebGLRenderTarget } from \"../../../build/three.module.js\";\nimport { Pass } from \"../postprocessing/Pass.js\";\nimport { AfterimageShader } from \"../shaders/AfterimageShader.js\";\n\nvar AfterimagePass = function AfterimagePass(damp) {\n Pass.call(this);\n if (AfterimageShader === undefined) console.error(\"AfterimagePass relies on AfterimageShader\");\n this.shader = AfterimageShader;\n this.uniforms = UniformsUtils.clone(this.shader.uniforms);\n this.uniforms[\"damp\"].value = damp !== undefined ? damp : 0.96;\n this.textureComp = new WebGLRenderTarget(window.innerWidth, window.innerHeight, {\n minFilter: LinearFilter,\n magFilter: NearestFilter,\n format: RGBAFormat\n });\n this.textureOld = new WebGLRenderTarget(window.innerWidth, window.innerHeight, {\n minFilter: LinearFilter,\n magFilter: NearestFilter,\n format: RGBAFormat\n });\n this.shaderMaterial = new ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: this.shader.vertexShader,\n fragmentShader: this.shader.fragmentShader\n });\n this.compFsQuad = new Pass.FullScreenQuad(this.shaderMaterial);\n var material = new MeshBasicMaterial();\n this.copyFsQuad = new Pass.FullScreenQuad(material);\n};\n\nAfterimagePass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: AfterimagePass,\n render: function render(renderer, writeBuffer, readBuffer) {\n this.uniforms[\"tOld\"].value = this.textureOld.texture;\n this.uniforms[\"tNew\"].value = readBuffer.texture;\n renderer.setRenderTarget(this.textureComp);\n this.compFsQuad.render(renderer);\n this.copyFsQuad.material.map = this.textureComp.texture;\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null);\n this.copyFsQuad.render(renderer);\n } else {\n renderer.setRenderTarget(writeBuffer);\n if (this.clear) renderer.clear();\n this.copyFsQuad.render(renderer);\n } // Swap buffers.\n\n\n var temp = this.textureOld;\n this.textureOld = this.textureComp;\n this.textureComp = temp; // Now textureOld contains the latest image, ready for the next frame.\n },\n setSize: function setSize(width, height) {\n this.textureComp.setSize(width, height);\n this.textureOld.setSize(width, height);\n }\n});\nexport { AfterimagePass };","import { Vector2 } from \"../../../build/three.module.js\";\n/**\n * NVIDIA FXAA by Timothy Lottes\n * http://timothylottes.blogspot.com/2011/06/fxaa3-source-released.html\n * - WebGL port by @supereggbert\n * http://www.glge.org/demos/fxaa/\n */\n\nvar FXAAShader = {\n uniforms: {\n \"tDiffuse\": {\n value: null\n },\n \"resolution\": {\n value: new Vector2(1 / 1024, 1 / 512)\n }\n },\n vertexShader: [\"varying vec2 vUv;\", \"void main() {\", \"\tvUv = uv;\", \"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\", \"}\"].join(\"\\n\"),\n fragmentShader: [\"precision highp float;\", \"\", \"uniform sampler2D tDiffuse;\", \"\", \"uniform vec2 resolution;\", \"\", \"varying vec2 vUv;\", \"\", \"// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\", \"\", \"//----------------------------------------------------------------------------------\", \"// File: es3-kepler\\FXAA\\assets\\shaders/FXAA_DefaultES.frag\", \"// SDK Version: v3.00\", \"// Email: gameworks@nvidia.com\", \"// Site: http://developer.nvidia.com/\", \"//\", \"// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\", \"//\", \"// Redistribution and use in source and binary forms, with or without\", \"// modification, are permitted provided that the following conditions\", \"// are met:\", \"// * Redistributions of source code must retain the above copyright\", \"// notice, this list of conditions and the following disclaimer.\", \"// * Redistributions in binary form must reproduce the above copyright\", \"// notice, this list of conditions and the following disclaimer in the\", \"// documentation and/or other materials provided with the distribution.\", \"// * Neither the name of NVIDIA CORPORATION nor the names of its\", \"// contributors may be used to endorse or promote products derived\", \"// from this software without specific prior written permission.\", \"//\", \"// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY\", \"// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\", \"// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\", \"// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\", \"// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\", \"// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\", \"// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\", \"// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\", \"// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\", \"// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\", \"// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\", \"//\", \"//----------------------------------------------------------------------------------\", \"\", \"#define FXAA_PC 1\", \"#define FXAA_GLSL_100 1\", \"#define FXAA_QUALITY_PRESET 12\", \"\", \"#define FXAA_GREEN_AS_LUMA 1\", \"\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_PC_CONSOLE\", \" //\", \" // The console algorithm for PC is included\", \" // for developers targeting really low spec machines.\", \" // Likely better to just run FXAA_PC, and use a really low preset.\", \" //\", \" #define FXAA_PC_CONSOLE 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_GLSL_120\", \" #define FXAA_GLSL_120 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_GLSL_130\", \" #define FXAA_GLSL_130 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_HLSL_3\", \" #define FXAA_HLSL_3 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_HLSL_4\", \" #define FXAA_HLSL_4 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_HLSL_5\", \" #define FXAA_HLSL_5 0\", \"#endif\", \"/*==========================================================================*/\", \"#ifndef FXAA_GREEN_AS_LUMA\", \" //\", \" // For those using non-linear color,\", \" // and either not able to get luma in alpha, or not wanting to,\", \" // this enables FXAA to run using green as a proxy for luma.\", \" // So with this enabled, no need to pack luma in alpha.\", \" //\", \" // This will turn off AA on anything which lacks some amount of green.\", \" // Pure red and blue or combination of only R and B, will get no AA.\", \" //\", \" // Might want to lower the settings for both,\", \" // fxaaConsoleEdgeThresholdMin\", \" // fxaaQualityEdgeThresholdMin\", \" // In order to insure AA does not get turned off on colors\", \" // which contain a minor amount of green.\", \" //\", \" // 1 = On.\", \" // 0 = Off.\", \" //\", \" #define FXAA_GREEN_AS_LUMA 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_EARLY_EXIT\", \" //\", \" // Controls algorithm's early exit path.\", \" // On PS3 turning this ON adds 2 cycles to the shader.\", \" // On 360 turning this OFF adds 10ths of a millisecond to the shader.\", \" // Turning this off on console will result in a more blurry image.\", \" // So this defaults to on.\", \" //\", \" // 1 = On.\", \" // 0 = Off.\", \" //\", \" #define FXAA_EARLY_EXIT 1\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_DISCARD\", \" //\", \" // Only valid for PC OpenGL currently.\", \" // Probably will not work when FXAA_GREEN_AS_LUMA = 1.\", \" //\", \" // 1 = Use discard on pixels which don't need AA.\", \" // For APIs which enable concurrent TEX+ROP from same surface.\", \" // 0 = Return unchanged color on pixels which don't need AA.\", \" //\", \" #define FXAA_DISCARD 0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_FAST_PIXEL_OFFSET\", \" //\", \" // Used for GLSL 120 only.\", \" //\", \" // 1 = GL API supports fast pixel offsets\", \" // 0 = do not use fast pixel offsets\", \" //\", \" #ifdef GL_EXT_gpu_shader4\", \" #define FXAA_FAST_PIXEL_OFFSET 1\", \" #endif\", \" #ifdef GL_NV_gpu_shader5\", \" #define FXAA_FAST_PIXEL_OFFSET 1\", \" #endif\", \" #ifdef GL_ARB_gpu_shader5\", \" #define FXAA_FAST_PIXEL_OFFSET 1\", \" #endif\", \" #ifndef FXAA_FAST_PIXEL_OFFSET\", \" #define FXAA_FAST_PIXEL_OFFSET 0\", \" #endif\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#ifndef FXAA_GATHER4_ALPHA\", \" //\", \" // 1 = API supports gather4 on alpha channel.\", \" // 0 = API does not support gather4 on alpha channel.\", \" //\", \" #if (FXAA_HLSL_5 == 1)\", \" #define FXAA_GATHER4_ALPHA 1\", \" #endif\", \" #ifdef GL_ARB_gpu_shader5\", \" #define FXAA_GATHER4_ALPHA 1\", \" #endif\", \" #ifdef GL_NV_gpu_shader5\", \" #define FXAA_GATHER4_ALPHA 1\", \" #endif\", \" #ifndef FXAA_GATHER4_ALPHA\", \" #define FXAA_GATHER4_ALPHA 0\", \" #endif\", \"#endif\", \"\", \"\", \"/*============================================================================\", \" FXAA QUALITY - TUNING KNOBS\", \"------------------------------------------------------------------------------\", \"NOTE the other tuning knobs are now in the shader function inputs!\", \"============================================================================*/\", \"#ifndef FXAA_QUALITY_PRESET\", \" //\", \" // Choose the quality preset.\", \" // This needs to be compiled into the shader as it effects code.\", \" // Best option to include multiple presets is to\", \" // in each shader define the preset, then include this file.\", \" //\", \" // OPTIONS\", \" // -----------------------------------------------------------------------\", \" // 10 to 15 - default medium dither (10=fastest, 15=highest quality)\", \" // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)\", \" // 39 - no dither, very expensive\", \" //\", \" // NOTES\", \" // -----------------------------------------------------------------------\", \" // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)\", \" // 13 = about same speed as FXAA 3.9 and better than 12\", \" // 23 = closest to FXAA 3.9 visually and performance wise\", \" // _ = the lowest digit is directly related to performance\", \" // _ = the highest digit is directly related to style\", \" //\", \" #define FXAA_QUALITY_PRESET 12\", \"#endif\", \"\", \"\", \"/*============================================================================\", \"\", \" FXAA QUALITY - PRESETS\", \"\", \"============================================================================*/\", \"\", \"/*============================================================================\", \" FXAA QUALITY - MEDIUM DITHER PRESETS\", \"============================================================================*/\", \"#if (FXAA_QUALITY_PRESET == 10)\", \" #define FXAA_QUALITY_PS 3\", \" #define FXAA_QUALITY_P0 1.5\", \" #define FXAA_QUALITY_P1 3.0\", \" #define FXAA_QUALITY_P2 12.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 11)\", \" #define FXAA_QUALITY_PS 4\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 3.0\", \" #define FXAA_QUALITY_P3 12.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 12)\", \" #define FXAA_QUALITY_PS 5\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 4.0\", \" #define FXAA_QUALITY_P4 12.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 13)\", \" #define FXAA_QUALITY_PS 6\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 4.0\", \" #define FXAA_QUALITY_P5 12.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 14)\", \" #define FXAA_QUALITY_PS 7\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 4.0\", \" #define FXAA_QUALITY_P6 12.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 15)\", \" #define FXAA_QUALITY_PS 8\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 2.0\", \" #define FXAA_QUALITY_P6 4.0\", \" #define FXAA_QUALITY_P7 12.0\", \"#endif\", \"\", \"/*============================================================================\", \" FXAA QUALITY - LOW DITHER PRESETS\", \"============================================================================*/\", \"#if (FXAA_QUALITY_PRESET == 20)\", \" #define FXAA_QUALITY_PS 3\", \" #define FXAA_QUALITY_P0 1.5\", \" #define FXAA_QUALITY_P1 2.0\", \" #define FXAA_QUALITY_P2 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 21)\", \" #define FXAA_QUALITY_PS 4\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 22)\", \" #define FXAA_QUALITY_PS 5\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 23)\", \" #define FXAA_QUALITY_PS 6\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 24)\", \" #define FXAA_QUALITY_PS 7\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 3.0\", \" #define FXAA_QUALITY_P6 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 25)\", \" #define FXAA_QUALITY_PS 8\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 2.0\", \" #define FXAA_QUALITY_P6 4.0\", \" #define FXAA_QUALITY_P7 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 26)\", \" #define FXAA_QUALITY_PS 9\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 2.0\", \" #define FXAA_QUALITY_P6 2.0\", \" #define FXAA_QUALITY_P7 4.0\", \" #define FXAA_QUALITY_P8 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 27)\", \" #define FXAA_QUALITY_PS 10\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 2.0\", \" #define FXAA_QUALITY_P6 2.0\", \" #define FXAA_QUALITY_P7 2.0\", \" #define FXAA_QUALITY_P8 4.0\", \" #define FXAA_QUALITY_P9 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 28)\", \" #define FXAA_QUALITY_PS 11\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 2.0\", \" #define FXAA_QUALITY_P6 2.0\", \" #define FXAA_QUALITY_P7 2.0\", \" #define FXAA_QUALITY_P8 2.0\", \" #define FXAA_QUALITY_P9 4.0\", \" #define FXAA_QUALITY_P10 8.0\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_QUALITY_PRESET == 29)\", \" #define FXAA_QUALITY_PS 12\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.5\", \" #define FXAA_QUALITY_P2 2.0\", \" #define FXAA_QUALITY_P3 2.0\", \" #define FXAA_QUALITY_P4 2.0\", \" #define FXAA_QUALITY_P5 2.0\", \" #define FXAA_QUALITY_P6 2.0\", \" #define FXAA_QUALITY_P7 2.0\", \" #define FXAA_QUALITY_P8 2.0\", \" #define FXAA_QUALITY_P9 2.0\", \" #define FXAA_QUALITY_P10 4.0\", \" #define FXAA_QUALITY_P11 8.0\", \"#endif\", \"\", \"/*============================================================================\", \" FXAA QUALITY - EXTREME QUALITY\", \"============================================================================*/\", \"#if (FXAA_QUALITY_PRESET == 39)\", \" #define FXAA_QUALITY_PS 12\", \" #define FXAA_QUALITY_P0 1.0\", \" #define FXAA_QUALITY_P1 1.0\", \" #define FXAA_QUALITY_P2 1.0\", \" #define FXAA_QUALITY_P3 1.0\", \" #define FXAA_QUALITY_P4 1.0\", \" #define FXAA_QUALITY_P5 1.5\", \" #define FXAA_QUALITY_P6 2.0\", \" #define FXAA_QUALITY_P7 2.0\", \" #define FXAA_QUALITY_P8 2.0\", \" #define FXAA_QUALITY_P9 2.0\", \" #define FXAA_QUALITY_P10 4.0\", \" #define FXAA_QUALITY_P11 8.0\", \"#endif\", \"\", \"\", \"\", \"/*============================================================================\", \"\", \" API PORTING\", \"\", \"============================================================================*/\", \"#if (FXAA_GLSL_100 == 1) || (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)\", \" #define FxaaBool bool\", \" #define FxaaDiscard discard\", \" #define FxaaFloat float\", \" #define FxaaFloat2 vec2\", \" #define FxaaFloat3 vec3\", \" #define FxaaFloat4 vec4\", \" #define FxaaHalf float\", \" #define FxaaHalf2 vec2\", \" #define FxaaHalf3 vec3\", \" #define FxaaHalf4 vec4\", \" #define FxaaInt2 ivec2\", \" #define FxaaSat(x) clamp(x, 0.0, 1.0)\", \" #define FxaaTex sampler2D\", \"#else\", \" #define FxaaBool bool\", \" #define FxaaDiscard clip(-1)\", \" #define FxaaFloat float\", \" #define FxaaFloat2 float2\", \" #define FxaaFloat3 float3\", \" #define FxaaFloat4 float4\", \" #define FxaaHalf half\", \" #define FxaaHalf2 half2\", \" #define FxaaHalf3 half3\", \" #define FxaaHalf4 half4\", \" #define FxaaSat(x) saturate(x)\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_GLSL_100 == 1)\", \" #define FxaaTexTop(t, p) texture2D(t, p, 0.0)\", \" #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), 0.0)\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_GLSL_120 == 1)\", \" // Requires,\", \" // #version 120\", \" // And at least,\", \" // #extension GL_EXT_gpu_shader4 : enable\", \" // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)\", \" #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)\", \" #if (FXAA_FAST_PIXEL_OFFSET == 1)\", \" #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)\", \" #else\", \" #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)\", \" #endif\", \" #if (FXAA_GATHER4_ALPHA == 1)\", \" // use #extension GL_ARB_gpu_shader5 : enable\", \" #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\", \" #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\", \" #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\", \" #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\", \" #endif\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_GLSL_130 == 1)\", \" // Requires \\\"#version 130\\\" or better\", \" #define FxaaTexTop(t, p) textureLod(t, p, 0.0)\", \" #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)\", \" #if (FXAA_GATHER4_ALPHA == 1)\", \" // use #extension GL_ARB_gpu_shader5 : enable\", \" #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)\", \" #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)\", \" #define FxaaTexGreen4(t, p) textureGather(t, p, 1)\", \" #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)\", \" #endif\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_HLSL_3 == 1)\", \" #define FxaaInt2 float2\", \" #define FxaaTex sampler2D\", \" #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))\", \" #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_HLSL_4 == 1)\", \" #define FxaaInt2 int2\", \" struct FxaaTex { SamplerState smpl; Texture2D tex; };\", \" #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\", \" #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\", \"#endif\", \"/*--------------------------------------------------------------------------*/\", \"#if (FXAA_HLSL_5 == 1)\", \" #define FxaaInt2 int2\", \" struct FxaaTex { SamplerState smpl; Texture2D tex; };\", \" #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)\", \" #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)\", \" #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)\", \" #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)\", \" #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)\", \" #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)\", \"#endif\", \"\", \"\", \"/*============================================================================\", \" GREEN AS LUMA OPTION SUPPORT FUNCTION\", \"============================================================================*/\", \"#if (FXAA_GREEN_AS_LUMA == 0)\", \" FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }\", \"#else\", \" FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }\", \"#endif\", \"\", \"\", \"\", \"\", \"/*============================================================================\", \"\", \" FXAA3 QUALITY - PC\", \"\", \"============================================================================*/\", \"#if (FXAA_PC == 1)\", \"/*--------------------------------------------------------------------------*/\", \"FxaaFloat4 FxaaPixelShader(\", \" //\", \" // Use noperspective interpolation here (turn off perspective interpolation).\", \" // {xy} = center of pixel\", \" FxaaFloat2 pos,\", \" //\", \" // Used only for FXAA Console, and not used on the 360 version.\", \" // Use noperspective interpolation here (turn off perspective interpolation).\", \" // {xy_} = upper left of pixel\", \" // {_zw} = lower right of pixel\", \" FxaaFloat4 fxaaConsolePosPos,\", \" //\", \" // Input color texture.\", \" // {rgb_} = color in linear or perceptual color space\", \" // if (FXAA_GREEN_AS_LUMA == 0)\", \" // {__a} = luma in perceptual color space (not linear)\", \" FxaaTex tex,\", \" //\", \" // Only used on the optimized 360 version of FXAA Console.\", \" // For everything but 360, just use the same input here as for \\\"tex\\\".\", \" // For 360, same texture, just alias with a 2nd sampler.\", \" // This sampler needs to have an exponent bias of -1.\", \" FxaaTex fxaaConsole360TexExpBiasNegOne,\", \" //\", \" // Only used on the optimized 360 version of FXAA Console.\", \" // For everything but 360, just use the same input here as for \\\"tex\\\".\", \" // For 360, same texture, just alias with a 3nd sampler.\", \" // This sampler needs to have an exponent bias of -2.\", \" FxaaTex fxaaConsole360TexExpBiasNegTwo,\", \" //\", \" // Only used on FXAA Quality.\", \" // This must be from a constant/uniform.\", \" // {x_} = 1.0/screenWidthInPixels\", \" // {_y} = 1.0/screenHeightInPixels\", \" FxaaFloat2 fxaaQualityRcpFrame,\", \" //\", \" // Only used on FXAA Console.\", \" // This must be from a constant/uniform.\", \" // This effects sub-pixel AA quality and inversely sharpness.\", \" // Where N ranges between,\", \" // N = 0.50 (default)\", \" // N = 0.33 (sharper)\", \" // {x__} = -N/screenWidthInPixels\", \" // {_y_} = -N/screenHeightInPixels\", \" // {_z_} = N/screenWidthInPixels\", \" // {__w} = N/screenHeightInPixels\", \" FxaaFloat4 fxaaConsoleRcpFrameOpt,\", \" //\", \" // Only used on FXAA Console.\", \" // Not used on 360, but used on PS3 and PC.\", \" // This must be from a constant/uniform.\", \" // {x__} = -2.0/screenWidthInPixels\", \" // {_y_} = -2.0/screenHeightInPixels\", \" // {_z_} = 2.0/screenWidthInPixels\", \" // {__w} = 2.0/screenHeightInPixels\", \" FxaaFloat4 fxaaConsoleRcpFrameOpt2,\", \" //\", \" // Only used on FXAA Console.\", \" // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.\", \" // This must be from a constant/uniform.\", \" // {x__} = 8.0/screenWidthInPixels\", \" // {_y_} = 8.0/screenHeightInPixels\", \" // {_z_} = -4.0/screenWidthInPixels\", \" // {__w} = -4.0/screenHeightInPixels\", \" FxaaFloat4 fxaaConsole360RcpFrameOpt2,\", \" //\", \" // Only used on FXAA Quality.\", \" // This used to be the FXAA_QUALITY_SUBPIX define.\", \" // It is here now to allow easier tuning.\", \" // Choose the amount of sub-pixel aliasing removal.\", \" // This can effect sharpness.\", \" // 1.00 - upper limit (softer)\", \" // 0.75 - default amount of filtering\", \" // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)\", \" // 0.25 - almost off\", \" // 0.00 - completely off\", \" FxaaFloat fxaaQualitySubpix,\", \" //\", \" // Only used on FXAA Quality.\", \" // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define.\", \" // It is here now to allow easier tuning.\", \" // The minimum amount of local contrast required to apply algorithm.\", \" // 0.333 - too little (faster)\", \" // 0.250 - low quality\", \" // 0.166 - default\", \" // 0.125 - high quality\", \" // 0.063 - overkill (slower)\", \" FxaaFloat fxaaQualityEdgeThreshold,\", \" //\", \" // Only used on FXAA Quality.\", \" // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define.\", \" // It is here now to allow easier tuning.\", \" // Trims the algorithm from processing darks.\", \" // 0.0833 - upper limit (default, the start of visible unfiltered edges)\", \" // 0.0625 - high quality (faster)\", \" // 0.0312 - visible limit (slower)\", \" // Special notes when using FXAA_GREEN_AS_LUMA,\", \" // Likely want to set this to zero.\", \" // As colors that are mostly not-green\", \" // will appear very dark in the green channel!\", \" // Tune by looking at mostly non-green content,\", \" // then start at zero and increase until aliasing is a problem.\", \" FxaaFloat fxaaQualityEdgeThresholdMin,\", \" //\", \" // Only used on FXAA Console.\", \" // This used to be the FXAA_CONSOLE_EDGE_SHARPNESS define.\", \" // It is here now to allow easier tuning.\", \" // This does not effect PS3, as this needs to be compiled in.\", \" // Use FXAA_CONSOLE_PS3_EDGE_SHARPNESS for PS3.\", \" // Due to the PS3 being ALU bound,\", \" // there are only three safe values here: 2 and 4 and 8.\", \" // These options use the shaders ability to a free *|/ by 2|4|8.\", \" // For all other platforms can be a non-power of two.\", \" // 8.0 is sharper (default!!!)\", \" // 4.0 is softer\", \" // 2.0 is really soft (good only for vector graphics inputs)\", \" FxaaFloat fxaaConsoleEdgeSharpness,\", \" //\", \" // Only used on FXAA Console.\", \" // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD define.\", \" // It is here now to allow easier tuning.\", \" // This does not effect PS3, as this needs to be compiled in.\", \" // Use FXAA_CONSOLE_PS3_EDGE_THRESHOLD for PS3.\", \" // Due to the PS3 being ALU bound,\", \" // there are only two safe values here: 1/4 and 1/8.\", \" // These options use the shaders ability to a free *|/ by 2|4|8.\", \" // The console setting has a different mapping than the quality setting.\", \" // Other platforms can use other values.\", \" // 0.125 leaves less aliasing, but is softer (default!!!)\", \" // 0.25 leaves more aliasing, and is sharper\", \" FxaaFloat fxaaConsoleEdgeThreshold,\", \" //\", \" // Only used on FXAA Console.\", \" // This used to be the FXAA_CONSOLE_EDGE_THRESHOLD_MIN define.\", \" // It is here now to allow easier tuning.\", \" // Trims the algorithm from processing darks.\", \" // The console setting has a different mapping than the quality setting.\", \" // This only applies when FXAA_EARLY_EXIT is 1.\", \" // This does not apply to PS3,\", \" // PS3 was simplified to avoid more shader instructions.\", \" // 0.06 - faster but more aliasing in darks\", \" // 0.05 - default\", \" // 0.04 - slower and less aliasing in darks\", \" // Special notes when using FXAA_GREEN_AS_LUMA,\", \" // Likely want to set this to zero.\", \" // As colors that are mostly not-green\", \" // will appear very dark in the green channel!\", \" // Tune by looking at mostly non-green content,\", \" // then start at zero and increase until aliasing is a problem.\", \" FxaaFloat fxaaConsoleEdgeThresholdMin,\", \" //\", \" // Extra constants for 360 FXAA Console only.\", \" // Use zeros or anything else for other platforms.\", \" // These must be in physical constant registers and NOT immediates.\", \" // Immediates will result in compiler un-optimizing.\", \" // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)\", \" FxaaFloat4 fxaaConsole360ConstDir\", \") {\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat2 posM;\", \" posM.x = pos.x;\", \" posM.y = pos.y;\", \" #if (FXAA_GATHER4_ALPHA == 1)\", \" #if (FXAA_DISCARD == 0)\", \" FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\", \" #if (FXAA_GREEN_AS_LUMA == 0)\", \" #define lumaM rgbyM.w\", \" #else\", \" #define lumaM rgbyM.y\", \" #endif\", \" #endif\", \" #if (FXAA_GREEN_AS_LUMA == 0)\", \" FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);\", \" FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));\", \" #else\", \" FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);\", \" FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));\", \" #endif\", \" #if (FXAA_DISCARD == 1)\", \" #define lumaM luma4A.w\", \" #endif\", \" #define lumaE luma4A.z\", \" #define lumaS luma4A.x\", \" #define lumaSE luma4A.y\", \" #define lumaNW luma4B.w\", \" #define lumaN luma4B.z\", \" #define lumaW luma4B.x\", \" #else\", \" FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\", \" #if (FXAA_GREEN_AS_LUMA == 0)\", \" #define lumaM rgbyM.w\", \" #else\", \" #define lumaM rgbyM.y\", \" #endif\", \" #if (FXAA_GLSL_100 == 1)\", \" FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0, 1.0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 0.0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 0.0,-1.0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 0.0), fxaaQualityRcpFrame.xy));\", \" #else\", \" FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));\", \" #endif\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat maxSM = max(lumaS, lumaM);\", \" FxaaFloat minSM = min(lumaS, lumaM);\", \" FxaaFloat maxESM = max(lumaE, maxSM);\", \" FxaaFloat minESM = min(lumaE, minSM);\", \" FxaaFloat maxWN = max(lumaN, lumaW);\", \" FxaaFloat minWN = min(lumaN, lumaW);\", \" FxaaFloat rangeMax = max(maxWN, maxESM);\", \" FxaaFloat rangeMin = min(minWN, minESM);\", \" FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;\", \" FxaaFloat range = rangeMax - rangeMin;\", \" FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);\", \" FxaaBool earlyExit = range < rangeMaxClamped;\", \"/*--------------------------------------------------------------------------*/\", \" if(earlyExit)\", \" #if (FXAA_DISCARD == 1)\", \" FxaaDiscard;\", \" #else\", \" return rgbyM;\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_GATHER4_ALPHA == 0)\", \" #if (FXAA_GLSL_100 == 1)\", \" FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0,-1.0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0, 1.0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2( 1.0,-1.0), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaFloat2(-1.0, 1.0), fxaaQualityRcpFrame.xy));\", \" #else\", \" FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\", \" #endif\", \" #else\", \" FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));\", \" FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat lumaNS = lumaN + lumaS;\", \" FxaaFloat lumaWE = lumaW + lumaE;\", \" FxaaFloat subpixRcpRange = 1.0/range;\", \" FxaaFloat subpixNSWE = lumaNS + lumaWE;\", \" FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;\", \" FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat lumaNESE = lumaNE + lumaSE;\", \" FxaaFloat lumaNWNE = lumaNW + lumaNE;\", \" FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;\", \" FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat lumaNWSW = lumaNW + lumaSW;\", \" FxaaFloat lumaSWSE = lumaSW + lumaSE;\", \" FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);\", \" FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);\", \" FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;\", \" FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;\", \" FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;\", \" FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;\", \" FxaaFloat lengthSign = fxaaQualityRcpFrame.x;\", \" FxaaBool horzSpan = edgeHorz >= edgeVert;\", \" FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;\", \"/*--------------------------------------------------------------------------*/\", \" if(!horzSpan) lumaN = lumaW;\", \" if(!horzSpan) lumaS = lumaE;\", \" if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;\", \" FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat gradientN = lumaN - lumaM;\", \" FxaaFloat gradientS = lumaS - lumaM;\", \" FxaaFloat lumaNN = lumaN + lumaM;\", \" FxaaFloat lumaSS = lumaS + lumaM;\", \" FxaaBool pairN = abs(gradientN) >= abs(gradientS);\", \" FxaaFloat gradient = max(abs(gradientN), abs(gradientS));\", \" if(pairN) lengthSign = -lengthSign;\", \" FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat2 posB;\", \" posB.x = posM.x;\", \" posB.y = posM.y;\", \" FxaaFloat2 offNP;\", \" offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\", \" offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\", \" if(!horzSpan) posB.x += lengthSign * 0.5;\", \" if( horzSpan) posB.y += lengthSign * 0.5;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat2 posN;\", \" posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;\", \" posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;\", \" FxaaFloat2 posP;\", \" posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;\", \" posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;\", \" FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;\", \" FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));\", \" FxaaFloat subpixE = subpixC * subpixC;\", \" FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));\", \"/*--------------------------------------------------------------------------*/\", \" if(!pairN) lumaNN = lumaSS;\", \" FxaaFloat gradientScaled = gradient * 1.0/4.0;\", \" FxaaFloat lumaMM = lumaM - lumaNN * 0.5;\", \" FxaaFloat subpixF = subpixD * subpixE;\", \" FxaaBool lumaMLTZero = lumaMM < 0.0;\", \"/*--------------------------------------------------------------------------*/\", \" lumaEndN -= lumaNN * 0.5;\", \" lumaEndP -= lumaNN * 0.5;\", \" FxaaBool doneN = abs(lumaEndN) >= gradientScaled;\", \" FxaaBool doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;\", \" FxaaBool doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;\", \"/*--------------------------------------------------------------------------*/\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 3)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 4)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 5)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 6)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 7)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 8)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 9)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 10)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 11)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;\", \"/*--------------------------------------------------------------------------*/\", \" #if (FXAA_QUALITY_PS > 12)\", \" if(doneNP) {\", \" if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\", \" if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\", \" if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\", \" if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\", \" doneN = abs(lumaEndN) >= gradientScaled;\", \" doneP = abs(lumaEndP) >= gradientScaled;\", \" if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;\", \" if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;\", \" doneNP = (!doneN) || (!doneP);\", \" if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;\", \" if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \" #endif\", \"/*--------------------------------------------------------------------------*/\", \" }\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat dstN = posM.x - posN.x;\", \" FxaaFloat dstP = posP.x - posM.x;\", \" if(!horzSpan) dstN = posM.y - posN.y;\", \" if(!horzSpan) dstP = posP.y - posM.y;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;\", \" FxaaFloat spanLength = (dstP + dstN);\", \" FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;\", \" FxaaFloat spanLengthRcp = 1.0/spanLength;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaBool directionN = dstN < dstP;\", \" FxaaFloat dst = min(dstN, dstP);\", \" FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;\", \" FxaaFloat subpixG = subpixF * subpixF;\", \" FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;\", \" FxaaFloat subpixH = subpixG * fxaaQualitySubpix;\", \"/*--------------------------------------------------------------------------*/\", \" FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;\", \" FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);\", \" if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;\", \" if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;\", \" #if (FXAA_DISCARD == 1)\", \" return FxaaTexTop(tex, posM);\", \" #else\", \" return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);\", \" #endif\", \"}\", \"/*==========================================================================*/\", \"#endif\", \"\", \"void main() {\", \" gl_FragColor = FxaaPixelShader(\", \" vUv,\", \" vec4(0.0),\", \" tDiffuse,\", \" tDiffuse,\", \" tDiffuse,\", \" resolution,\", \" vec4(0.0),\", \" vec4(0.0),\", \" vec4(0.0),\", \" 0.75,\", \" 0.166,\", \" 0.0833,\", \" 0.0,\", \" 0.0,\", \" 0.0,\", \" vec4(0.0)\", \" );\", \"\", \" // TODO avoid querying texture twice for same texel\", \" gl_FragColor.a = texture2D(tDiffuse, vUv).a;\", \"}\"].join(\"\\n\")\n};\nexport { FXAAShader };","import { Color } from \"../../../build/three.module.js\";\n/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nvar LuminosityHighPassShader = {\n shaderID: \"luminosityHighPass\",\n uniforms: {\n \"tDiffuse\": {\n value: null\n },\n \"luminosityThreshold\": {\n value: 1.0\n },\n \"smoothWidth\": {\n value: 1.0\n },\n \"defaultColor\": {\n value: new Color(0x000000)\n },\n \"defaultOpacity\": {\n value: 0.0\n }\n },\n vertexShader: [\"varying vec2 vUv;\", \"void main() {\", \"\tvUv = uv;\", \"\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\", \"}\"].join(\"\\n\"),\n fragmentShader: [\"uniform sampler2D tDiffuse;\", \"uniform vec3 defaultColor;\", \"uniform float defaultOpacity;\", \"uniform float luminosityThreshold;\", \"uniform float smoothWidth;\", \"varying vec2 vUv;\", \"void main() {\", \"\tvec4 texel = texture2D( tDiffuse, vUv );\", \"\tvec3 luma = vec3( 0.299, 0.587, 0.114 );\", \"\tfloat v = dot( texel.xyz, luma );\", \"\tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\", \"\tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\", \"\tgl_FragColor = mix( outputColor, texel, alpha );\", \"}\"].join(\"\\n\")\n};\nexport { LuminosityHighPassShader };","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.function.name\";\nimport { AdditiveBlending, Color, LinearFilter, MeshBasicMaterial, RGBAFormat, ShaderMaterial, UniformsUtils, Vector2, Vector3, WebGLRenderTarget } from \"../../../build/three.module.js\";\nimport { Pass } from \"../postprocessing/Pass.js\";\nimport { CopyShader } from \"../shaders/CopyShader.js\";\nimport { LuminosityHighPassShader } from \"../shaders/LuminosityHighPassShader.js\";\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\n\nvar UnrealBloomPass = function UnrealBloomPass(resolution, strength, radius, threshold) {\n Pass.call(this);\n this.strength = strength !== undefined ? strength : 1;\n this.radius = radius;\n this.threshold = threshold;\n this.resolution = resolution !== undefined ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256); // create color only once here, reuse it later inside the render function\n\n this.clearColor = new Color(0, 0, 0); // render targets\n\n var pars = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat\n };\n this.renderTargetsHorizontal = [];\n this.renderTargetsVertical = [];\n this.nMips = 5;\n var resx = Math.round(this.resolution.x / 2);\n var resy = Math.round(this.resolution.y / 2);\n this.renderTargetBright = new WebGLRenderTarget(resx, resy, pars);\n this.renderTargetBright.texture.name = \"UnrealBloomPass.bright\";\n this.renderTargetBright.texture.generateMipmaps = false;\n\n for (var i = 0; i < this.nMips; i++) {\n var renderTargetHorizonal = new WebGLRenderTarget(resx, resy, pars);\n renderTargetHorizonal.texture.name = \"UnrealBloomPass.h\" + i;\n renderTargetHorizonal.texture.generateMipmaps = false;\n this.renderTargetsHorizontal.push(renderTargetHorizonal);\n var renderTargetVertical = new WebGLRenderTarget(resx, resy, pars);\n renderTargetVertical.texture.name = \"UnrealBloomPass.v\" + i;\n renderTargetVertical.texture.generateMipmaps = false;\n this.renderTargetsVertical.push(renderTargetVertical);\n resx = Math.round(resx / 2);\n resy = Math.round(resy / 2);\n } // luminosity high pass material\n\n\n if (LuminosityHighPassShader === undefined) console.error(\"UnrealBloomPass relies on LuminosityHighPassShader\");\n var highPassShader = LuminosityHighPassShader;\n this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms);\n this.highPassUniforms[\"luminosityThreshold\"].value = threshold;\n this.highPassUniforms[\"smoothWidth\"].value = 0.01;\n this.materialHighPassFilter = new ShaderMaterial({\n uniforms: this.highPassUniforms,\n vertexShader: highPassShader.vertexShader,\n fragmentShader: highPassShader.fragmentShader,\n defines: {}\n }); // Gaussian Blur Materials\n\n this.separableBlurMaterials = [];\n var kernelSizeArray = [3, 5, 7, 9, 11];\n var resx = Math.round(this.resolution.x / 2);\n var resy = Math.round(this.resolution.y / 2);\n\n for (var i = 0; i < this.nMips; i++) {\n this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]));\n this.separableBlurMaterials[i].uniforms[\"texSize\"].value = new Vector2(resx, resy);\n resx = Math.round(resx / 2);\n resy = Math.round(resy / 2);\n } // Composite material\n\n\n this.compositeMaterial = this.getCompositeMaterial(this.nMips);\n this.compositeMaterial.uniforms[\"blurTexture1\"].value = this.renderTargetsVertical[0].texture;\n this.compositeMaterial.uniforms[\"blurTexture2\"].value = this.renderTargetsVertical[1].texture;\n this.compositeMaterial.uniforms[\"blurTexture3\"].value = this.renderTargetsVertical[2].texture;\n this.compositeMaterial.uniforms[\"blurTexture4\"].value = this.renderTargetsVertical[3].texture;\n this.compositeMaterial.uniforms[\"blurTexture5\"].value = this.renderTargetsVertical[4].texture;\n this.compositeMaterial.uniforms[\"bloomStrength\"].value = strength;\n this.compositeMaterial.uniforms[\"bloomRadius\"].value = 0.1;\n this.compositeMaterial.needsUpdate = true;\n var bloomFactors = [1.0, 0.8, 0.6, 0.4, 0.2];\n this.compositeMaterial.uniforms[\"bloomFactors\"].value = bloomFactors;\n this.bloomTintColors = [new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 1)];\n this.compositeMaterial.uniforms[\"bloomTintColors\"].value = this.bloomTintColors; // copy material\n\n if (CopyShader === undefined) {\n console.error(\"UnrealBloomPass relies on CopyShader\");\n }\n\n var copyShader = CopyShader;\n this.copyUniforms = UniformsUtils.clone(copyShader.uniforms);\n this.copyUniforms[\"opacity\"].value = 1.0;\n this.materialCopy = new ShaderMaterial({\n uniforms: this.copyUniforms,\n vertexShader: copyShader.vertexShader,\n fragmentShader: copyShader.fragmentShader,\n blending: AdditiveBlending,\n depthTest: false,\n depthWrite: false,\n transparent: true\n });\n this.enabled = true;\n this.needsSwap = false;\n this.oldClearColor = new Color();\n this.oldClearAlpha = 1;\n this.basic = new MeshBasicMaterial();\n this.fsQuad = new Pass.FullScreenQuad(null);\n};\n\nUnrealBloomPass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: UnrealBloomPass,\n dispose: function dispose() {\n for (var i = 0; i < this.renderTargetsHorizontal.length; i++) {\n this.renderTargetsHorizontal[i].dispose();\n }\n\n for (var i = 0; i < this.renderTargetsVertical.length; i++) {\n this.renderTargetsVertical[i].dispose();\n }\n\n this.renderTargetBright.dispose();\n },\n setSize: function setSize(width, height) {\n var resx = Math.round(width / 2);\n var resy = Math.round(height / 2);\n this.renderTargetBright.setSize(resx, resy);\n\n for (var i = 0; i < this.nMips; i++) {\n this.renderTargetsHorizontal[i].setSize(resx, resy);\n this.renderTargetsVertical[i].setSize(resx, resy);\n this.separableBlurMaterials[i].uniforms[\"texSize\"].value = new Vector2(resx, resy);\n resx = Math.round(resx / 2);\n resy = Math.round(resy / 2);\n }\n },\n render: function render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {\n this.oldClearColor.copy(renderer.getClearColor());\n this.oldClearAlpha = renderer.getClearAlpha();\n var oldAutoClear = renderer.autoClear;\n renderer.autoClear = false;\n renderer.setClearColor(this.clearColor, 0);\n if (maskActive) renderer.state.buffers.stencil.setTest(false); // Render input to screen\n\n if (this.renderToScreen) {\n this.fsQuad.material = this.basic;\n this.basic.map = readBuffer.texture;\n renderer.setRenderTarget(null);\n renderer.clear();\n this.fsQuad.render(renderer);\n } // 1. Extract Bright Areas\n\n\n this.highPassUniforms[\"tDiffuse\"].value = readBuffer.texture;\n this.highPassUniforms[\"luminosityThreshold\"].value = this.threshold;\n this.fsQuad.material = this.materialHighPassFilter;\n renderer.setRenderTarget(this.renderTargetBright);\n renderer.clear();\n this.fsQuad.render(renderer); // 2. Blur All the mips progressively\n\n var inputRenderTarget = this.renderTargetBright;\n\n for (var i = 0; i < this.nMips; i++) {\n this.fsQuad.material = this.separableBlurMaterials[i];\n this.separableBlurMaterials[i].uniforms[\"colorTexture\"].value = inputRenderTarget.texture;\n this.separableBlurMaterials[i].uniforms[\"direction\"].value = UnrealBloomPass.BlurDirectionX;\n renderer.setRenderTarget(this.renderTargetsHorizontal[i]);\n renderer.clear();\n this.fsQuad.render(renderer);\n this.separableBlurMaterials[i].uniforms[\"colorTexture\"].value = this.renderTargetsHorizontal[i].texture;\n this.separableBlurMaterials[i].uniforms[\"direction\"].value = UnrealBloomPass.BlurDirectionY;\n renderer.setRenderTarget(this.renderTargetsVertical[i]);\n renderer.clear();\n this.fsQuad.render(renderer);\n inputRenderTarget = this.renderTargetsVertical[i];\n } // Composite All the mips\n\n\n this.fsQuad.material = this.compositeMaterial;\n this.compositeMaterial.uniforms[\"bloomStrength\"].value = this.strength;\n this.compositeMaterial.uniforms[\"bloomRadius\"].value = this.radius;\n this.compositeMaterial.uniforms[\"bloomTintColors\"].value = this.bloomTintColors;\n renderer.setRenderTarget(this.renderTargetsHorizontal[0]);\n renderer.clear();\n this.fsQuad.render(renderer); // Blend it additively over the input texture\n\n this.fsQuad.material = this.materialCopy;\n this.copyUniforms[\"tDiffuse\"].value = this.renderTargetsHorizontal[0].texture;\n if (maskActive) renderer.state.buffers.stencil.setTest(true);\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null);\n this.fsQuad.render(renderer);\n } else {\n renderer.setRenderTarget(readBuffer);\n this.fsQuad.render(renderer);\n } // Restore renderer settings\n\n\n renderer.setClearColor(this.oldClearColor, this.oldClearAlpha);\n renderer.autoClear = oldAutoClear;\n },\n getSeperableBlurMaterial: function getSeperableBlurMaterial(kernelRadius) {\n return new ShaderMaterial({\n defines: {\n \"KERNEL_RADIUS\": kernelRadius,\n \"SIGMA\": kernelRadius\n },\n uniforms: {\n \"colorTexture\": {\n value: null\n },\n \"texSize\": {\n value: new Vector2(0.5, 0.5)\n },\n \"direction\": {\n value: new Vector2(0.5, 0.5)\n }\n },\n vertexShader: \"varying vec2 vUv;\\n\\\n\t\t\t\tvoid main() {\\n\\\n\t\t\t\t\tvUv = uv;\\n\\\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\\n\t\t\t\t}\",\n fragmentShader: \"#include \\\n\t\t\t\tvarying vec2 vUv;\\n\\\n\t\t\t\tuniform sampler2D colorTexture;\\n\\\n\t\t\t\tuniform vec2 texSize;\\\n\t\t\t\tuniform vec2 direction;\\\n\t\t\t\t\\\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\\\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\\\n\t\t\t\t}\\\n\t\t\t\tvoid main() {\\n\\\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\\\n\t\t\t\t\tfloat fSigma = float(SIGMA);\\\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\\\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\\\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\\\n\t\t\t\t\t\tfloat x = float(i);\\\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\\\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\\\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\\\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\\\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\\\n\t\t\t\t\t\tweightSum += 2.0 * w;\\\n\t\t\t\t\t}\\\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\\n\\\n\t\t\t\t}\"\n });\n },\n getCompositeMaterial: function getCompositeMaterial(nMips) {\n return new ShaderMaterial({\n defines: {\n \"NUM_MIPS\": nMips\n },\n uniforms: {\n \"blurTexture1\": {\n value: null\n },\n \"blurTexture2\": {\n value: null\n },\n \"blurTexture3\": {\n value: null\n },\n \"blurTexture4\": {\n value: null\n },\n \"blurTexture5\": {\n value: null\n },\n \"dirtTexture\": {\n value: null\n },\n \"bloomStrength\": {\n value: 1.0\n },\n \"bloomFactors\": {\n value: null\n },\n \"bloomTintColors\": {\n value: null\n },\n \"bloomRadius\": {\n value: 0.0\n }\n },\n vertexShader: \"varying vec2 vUv;\\n\\\n\t\t\t\tvoid main() {\\n\\\n\t\t\t\t\tvUv = uv;\\n\\\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\\n\t\t\t\t}\",\n fragmentShader: \"varying vec2 vUv;\\\n\t\t\t\tuniform sampler2D blurTexture1;\\\n\t\t\t\tuniform sampler2D blurTexture2;\\\n\t\t\t\tuniform sampler2D blurTexture3;\\\n\t\t\t\tuniform sampler2D blurTexture4;\\\n\t\t\t\tuniform sampler2D blurTexture5;\\\n\t\t\t\tuniform sampler2D dirtTexture;\\\n\t\t\t\tuniform float bloomStrength;\\\n\t\t\t\tuniform float bloomRadius;\\\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\\\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\\\n\t\t\t\t\\\n\t\t\t\tfloat lerpBloomFactor(const in float factor) { \\\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\\\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\\\n\t\t\t\t}\\\n\t\t\t\t\\\n\t\t\t\tvoid main() {\\\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + \\\n\t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\\\n\t\t\t\t}\"\n });\n }\n});\nUnrealBloomPass.BlurDirectionX = new Vector2(1.0, 0.0);\nUnrealBloomPass.BlurDirectionY = new Vector2(0.0, 1.0);\nexport { UnrealBloomPass };","import * as THREE from 'three'\nimport ReactDOM from 'react-dom'\nimport React, { useCallback, useEffect, useRef, useMemo } from 'react'\nimport { Canvas, extend, useFrame, useThree } from 'react-three-fiber'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer'\nimport { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass'\nimport { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'\nimport { AfterimagePass } from 'three/examples/jsm/postprocessing/AfterimagePass'\nimport { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader'\nimport { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass'\nimport { WaterPass } from './waterpass'\n\n\n// Makes these prototypes available as \"native\" jsx-string elements\nextend({ EffectComposer, ShaderPass, RenderPass, WaterPass, AfterimagePass, UnrealBloomPass })\n// extend({ EffectComposer, ShaderPass, RenderPass, AfterimagePass, UnrealBloomPass })\n\nfunction Swarm({ count, mouse }) {\n const mesh = useRef()\n const light = useRef()\n const { size, viewport } = useThree()\n const aspect = size.width / viewport.width\n\n const dummy = useMemo(() => new THREE.Object3D(), [])\n // Generate some random positions, speed factors and timings\n const particles = useMemo(() => {\n const temp = []\n for (let i = 0; i < count; i++) {\n const t = Math.random() * 100\n const factor = 20 + Math.random() * 100\n const speed = 0.01 + Math.random() / 700\n const xFactor = -50 + Math.random() * 100\n const yFactor = -50 + Math.random() * 100\n const zFactor = -50 + Math.random() * 100\n temp.push({ t, factor, speed, xFactor, yFactor, zFactor, mx: 0, my: 0 })\n }\n return temp\n }, [count])\n // The innards of this hook will run every frame\n useFrame(state => {\n // Makes the light follow the mouse\n light.current.position.set(mouse.current[0] / aspect, -mouse.current[1] / aspect, 0)\n // Run through the randomized data to calculate some movement\n particles.forEach((particle, i) => {\n let { t, factor, speed, xFactor, yFactor, zFactor } = particle\n // There is no sense or reason to any of this, just messing around with trigonometric functions\n t = particle.t += speed / 2\n const a = Math.cos(t) + Math.sin(t * 1) / 10\n const b = Math.sin(t) + Math.cos(t * 2) / 10\n const s = Math.cos(t)\n particle.mx += (mouse.current[0] - particle.mx) * 0.01\n particle.my += (mouse.current[1] * -1 - particle.my) * 0.01\n // Update the dummy object\n dummy.position.set(\n (particle.mx / 10) * a + xFactor + Math.cos((t / 10) * factor) + (Math.sin(t * 1) * factor) / 10,\n (particle.my / 10) * b + yFactor + Math.sin((t / 10) * factor) + (Math.cos(t * 2) * factor) / 10,\n (particle.my / 10) * b + zFactor + Math.cos((t / 10) * factor) + (Math.sin(t * 3) * factor) / 10\n )\n dummy.scale.set(s, s, s)\n dummy.rotation.set(s * 5, s * 5, s * 5)\n dummy.updateMatrix()\n // And apply the matrix to the instanced item\n mesh.current.setMatrixAt(i, dummy.matrix)\n })\n mesh.current.instanceMatrix.needsUpdate = true\n })\n return (\n <>\n \n\n \n \n \n \n \n \n )\n}\n\nfunction Effect() {\n const composer = useRef()\n const { scene, gl, size, camera } = useThree()\n const aspect = useMemo(() => new THREE.Vector2(size.width, size.height), [size])\n useEffect(() => void composer.current.setSize(size.width, size.height), [size])\n useFrame(() => composer.current.render(), 1)\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction Dolly() {\n // This one makes the camera move in and out\n useFrame(({ clock, camera }) => camera.updateProjectionMatrix(void (camera.position.z = 50 + Math.sin(clock.getElapsedTime()) * 5)))\n return null\n}\n\n\n\nexport default () => {\n const mouse = useRef([0, 0])\n const onMouseMove = useCallback(({ clientX: x, clientY: y }) => (mouse.current = [x - window.innerWidth / 2, y - window.innerHeight / 2]), [])\n return (\n\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","module.exports = __webpack_public_path__ + \"static/foam_diffuse-89b3d96fbdf648316b93c2ccf26100b2.jpg\";","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","import \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.assign\";\nimport { OrthographicCamera, PlaneBufferGeometry, Mesh } from \"../../../build/three.module.js\";\n\nfunction Pass() {\n // if set to true, the pass is processed by the composer\n this.enabled = true; // if set to true, the pass indicates to swap read and write buffer after rendering\n\n this.needsSwap = true; // if set to true, the pass clears its buffer before rendering\n\n this.clear = false; // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n\n this.renderToScreen = false;\n}\n\nObject.assign(Pass.prototype, {\n setSize: function setSize()\n /* width, height */\n {},\n render: function render()\n /* renderer, writeBuffer, readBuffer, deltaTime, maskActive */\n {\n console.error('THREE.Pass: .render() must be implemented in derived pass.');\n }\n}); // Helper for passes that need to fill the viewport with a single quad.\n\nPass.FullScreenQuad = function () {\n var camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n var geometry = new PlaneBufferGeometry(2, 2);\n\n var FullScreenQuad = function FullScreenQuad(material) {\n this._mesh = new Mesh(geometry, material);\n };\n\n Object.defineProperty(FullScreenQuad.prototype, 'material', {\n get: function get() {\n return this._mesh.material;\n },\n set: function set(value) {\n this._mesh.material = value;\n }\n });\n Object.assign(FullScreenQuad.prototype, {\n dispose: function dispose() {\n this._mesh.geometry.dispose();\n },\n render: function render(renderer) {\n renderer.render(this._mesh, camera);\n }\n });\n return FullScreenQuad;\n}();\n\nexport { Pass };","module.exports = __webpack_public_path__ + \"static/identify-3bd467df56a25ca6f33802435ccc2f8d.jpg\";","module.exports = __webpack_public_path__ + \"static/where-f7150c4e571fbdaca17487a1572b2c0b.jpg\";","\nvar Vec2 ={\n create: function(x, y) {\n\t\treturn {\n\t\t\tx: (typeof x === 'number') ? x : 0.0,\n\t\t\ty: (typeof y === 'number') ? y : 0.0\n\t\t}\n\t},\n\n\tclone: function(v) {\n\t\treturn Vec2.create(v.x, v.y)\n\t},\n\n\tset: function(v, x, y) {\n // console.log(\"VEC2SET\",v, x, y)\n\t\tv.x = x\n\t\tv.y = y\n\t},\n\n\tcopy: function (src, out) {\n\t\tout.x = src.x\n\t\tout.y = src.y\n\t},\n\n\tlength: function (v) {\n\t\treturn Math.sqrt(v.x * v.x + v.y * v.y)\n\t},\n\n\tsetLength: function (v, l, out) {\n\t\tlet s = Vec2.length(v)\n\t\tif (s > 0.0) {\n\t\t\ts = l / s\n\t\t\tout.x = v.x * s\n\t\t\tout.y = v.y * s\n\t\t}\n\t\telse {\n\t\t\tout.x = l\n\t\t\tout.y = 0.0\n\t\t}\n\t},\n\n\tdist: function(v0, v1) {\n\t\tconst dx = v1.x - v0.x\n\t\tconst dy = v1.y - v0.y\n\t\treturn Math.sqrt(dx * dx + dy * dy)\n\t},\n\n\tnormalize: function (v, out) {\n\t\tVec2.setLength(v, 1.0, out)\n\t},\n\n\tdot: function (v0, v1) {\n\t\treturn (v0.x * v1.x + v0.y * v1.y)\n\t},\n\n\tdet: function (v0, v1) {\n\t\treturn (v0.x * v1.y - v0.y * v1.x)\n\t},\n\n\t/** Rotate v by r radians, result in out. (v and out can reference the same Vec2 object) */\n\trotate : function(v, r, out) {\n\t\tconst c = Math.cos(r),\n\t\t\ts = Math.sin(r),\n\t\t\tx = v.x, y = v.y\n\t\tout.x = x * c - y * s\n\t\tout.y = x * s + y * c\n\t},\n\n\t/** Uses pre-computed cos & sin values of rotation angle */\n\trotateCS : function (v, c, s, out) {\n\t\tconst x = v.x, y = v.y\n\t\tout.x = x * c - y * s\n\t\tout.y = x * s + y * c\n\t},\n\n\t/** nx,ny should be normalized; vx,vy length will be preserved */\n\treflect: function (v, n, out) {\n\t\tconst d = Vec2.dot(n, v)\n\t\tout.x = v.x - 2.0 * d * n.x\n\t\tout.y = v.y - 2.0 * d * n.y\n\t},\n\n\ttoArray : function(v) {\n\t\treturn [v.x, v.y]\n\t}\n}\n\n\nvar Vec3 = {\n\n create: function(x, y, z) {\n \t\treturn {\n \t\t\tx: (typeof x === 'number') ? x : 0.0,\n \t\t\ty: (typeof y === 'number') ? y : 0.0,\n \t\t\tz: (typeof z === 'number') ? z : 0.0\n \t\t}\n \t},\n \tclone: function(v) {\n \t\treturn Vec3.create(v.x, v.y, v.z)\n \t},\n\n set: function(v, x, y, z) {\n \t\tv.x = x; v.y = y; v.z = z\n \t},\n\n \tcopy: function (src, out) {\n \t\tout.x = src.x\n \t\tout.y = src.y\n \t\tout.z = src.z\n \t},\n\n \tlength : function(v) {\n \t\treturn Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z)\n \t},\n\n setLength: function (v, l, out) {\n \t\tlet s = Vec3.length(v)\n \t\tif (s > 0.0) {\n \t\t\ts = l / s\n \t\t\tout.x = v.x * s\n \t\t\tout.y = v.y * s\n \t\t\tout.z = v.z * s\n \t\t} else {\n \t\t\tout.x = l\n \t\t\tout.y = 0.0\n \t\t\tout.z = 0.0\n \t\t}\n \t},\n\n \tdist: function(v0, v1) {\n \t\tconst dx = v1.x - v0.x\n \t\tconst dy = v1.y - v0.y\n \t\tconst dz = v1.z - v0.z\n \t\treturn Math.sqrt(dx * dx + dy * dy + dz * dz)\n \t},\n\n normalize: function (v, out) {\n \t\tVec3.setLength(v, 1.0, out)\n \t},\n\n dot : function(a, b) {\n \t\treturn a.x * b.x + a.y * b.y + a.z * b.z\n \t},\n \tcross : function(a, b, out) {\n \t\tconst ax = a.x, ay = a.y, az = a.z,\n \t\t\tbx = b.x, by = b.y, bz = b.z\n \t\tout.x = ay * bz - az * by\n \t\tout.y = az * bx - ax * bz\n \t\tout.z = ax * by - ay * bx\n \t},\n \ttoArray: function (v) {\n \t\treturn [v.x, v.y, v.z]\n \t}\n\n}\n\nvar Color = {\n\n create: function(r, g, b) {\n return {\n r: (typeof r === 'number') ? r : 0.0,\n g: (typeof g === 'number') ? g : 0.0,\n b: (typeof b === 'number') ? b : 0.0\n }\n },\n toArray: function (c) {\n return [c.r, c.g, c.b]\n },\n to24bit:function (c) {\n return (c.r * 255) << 16 ^ (c.g * 255) << 8 ^ (c.b * 255) << 0\n }\n\n}\nexport { Color , Vec3, Vec2 };\n","import \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.date.now\";\n\n/*!\n * ScrollTrigger 3.5.1\n * https://greensock.com\n *\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _win,\n _doc,\n _docEl,\n _body,\n _root,\n _resizeDelay,\n _raf,\n _request,\n _toArray,\n _clamp,\n _time2,\n _syncInterval,\n _refreshing,\n _pointerIsDown,\n _transformProp,\n _i,\n _prevWidth,\n _prevHeight,\n _autoRefresh,\n _sort,\n _limitCallbacks,\n // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n_startup = 1,\n _proxies = [],\n _scrollers = [],\n _getTime = Date.now,\n _time1 = _getTime(),\n _lastScrollTime = 0,\n _enabled = 1,\n _passThrough = function _passThrough(v) {\n return v;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isViewport = function _isViewport(e) {\n return !!~_root.indexOf(e);\n},\n _getProxyProp = function _getProxyProp(element, property) {\n return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];\n},\n _getScrollFunc = function _getScrollFunc(element, _ref) {\n var s = _ref.s,\n sc = _ref.sc;\n\n var i = _scrollers.indexOf(element),\n offset = sc === _vertical.sc ? 1 : 2;\n\n !~i && (i = _scrollers.push(element) - 1);\n return _scrollers[i + offset] || (_scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : function (value) {\n return arguments.length ? element[s] = value : element[s];\n }));\n},\n _getBoundsFunc = function _getBoundsFunc(element) {\n return _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? function () {\n _winOffsets.width = _win.innerWidth;\n _winOffsets.height = _win.innerHeight;\n return _winOffsets;\n } : function () {\n return _getBounds(element);\n });\n},\n _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref2) {\n var d = _ref2.d,\n d2 = _ref2.d2,\n a = _ref2.a;\n return (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? function () {\n return a()[d];\n } : function () {\n return (isViewport ? _win[\"inner\" + d2] : scroller[\"client\" + d2]) || 0;\n };\n},\n _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) {\n return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () {\n return _winOffsets;\n };\n},\n _maxScroll = function _maxScroll(element, _ref3) {\n var s = _ref3.s,\n d2 = _ref3.d2,\n d = _ref3.d,\n a = _ref3.a;\n return (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? Math.max(_docEl[s], _body[s]) - (_win[\"inner\" + d2] || _docEl[\"client\" + d2] || _body[\"client\" + d2]) : element[s] - element[\"offset\" + d2];\n},\n _iterateAutoRefresh = function _iterateAutoRefresh(func, events) {\n for (var i = 0; i < _autoRefresh.length; i += 3) {\n (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);\n }\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _callIfFunc = function _callIfFunc(value) {\n return _isFunction(value) && value();\n},\n _combineFunc = function _combineFunc(f1, f2) {\n return function () {\n var result1 = _callIfFunc(f1),\n result2 = _callIfFunc(f2);\n\n return function () {\n _callIfFunc(result1);\n\n _callIfFunc(result2);\n };\n };\n},\n _abs = Math.abs,\n _scrollLeft = \"scrollLeft\",\n _scrollTop = \"scrollTop\",\n _left = \"left\",\n _top = \"top\",\n _right = \"right\",\n _bottom = \"bottom\",\n _width = \"width\",\n _height = \"height\",\n _Right = \"Right\",\n _Left = \"Left\",\n _Top = \"Top\",\n _Bottom = \"Bottom\",\n _padding = \"padding\",\n _margin = \"margin\",\n _Width = \"Width\",\n _Height = \"Height\",\n _px = \"px\",\n _horizontal = {\n s: _scrollLeft,\n p: _left,\n p2: _Left,\n os: _right,\n os2: _Right,\n d: _width,\n d2: _Width,\n a: \"x\",\n sc: function sc(value) {\n return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;\n }\n},\n _vertical = {\n s: _scrollTop,\n p: _top,\n p2: _Top,\n os: _bottom,\n os2: _Bottom,\n d: _height,\n d2: _Height,\n a: \"y\",\n op: _horizontal,\n sc: function sc(value) {\n return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;\n }\n},\n _getComputedStyle = function _getComputedStyle(element) {\n return _win.getComputedStyle(element);\n},\n _makePositionable = function _makePositionable(element) {\n return element.style.position = _getComputedStyle(element).position === \"absolute\" ? \"absolute\" : \"relative\";\n},\n // if the element already has position: absolute, leave that, otherwise make it position: relative\n_setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n //_isInViewport = element => (element = _getBounds(element)) && !(element.top > (_win.innerHeight || _docEl.clientHeight) || element.bottom < 0 || element.left > (_win.innerWidth || _docEl.clientWidth) || element.right < 0) && element,\n_getBounds = function _getBounds(element, withoutTransforms) {\n var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {\n x: 0,\n y: 0,\n xPercent: 0,\n yPercent: 0,\n rotation: 0,\n rotationX: 0,\n rotationY: 0,\n scale: 1,\n skewX: 0,\n skewY: 0\n }).progress(1),\n bounds = element.getBoundingClientRect();\n tween && tween.progress(0).kill();\n return bounds;\n},\n _getSize = function _getSize(element, _ref4) {\n var d2 = _ref4.d2;\n return element[\"offset\" + d2] || element[\"client\" + d2] || 0;\n},\n _getLabels = function _getLabels(animation) {\n return function (value) {\n var a = [],\n labels = animation.labels,\n duration = animation.duration(),\n p;\n\n for (p in labels) {\n a.push(labels[p] / duration);\n }\n\n return gsap.utils.snap(a, value);\n };\n},\n _multiListener = function _multiListener(func, element, types, callback) {\n return types.split(\",\").forEach(function (type) {\n return func(element, type, callback);\n });\n},\n _addListener = function _addListener(element, type, func) {\n return element.addEventListener(type, func, {\n passive: true\n });\n},\n _removeListener = function _removeListener(element, type, func) {\n return element.removeEventListener(type, func);\n},\n _markerDefaults = {\n startColor: \"green\",\n endColor: \"red\",\n indent: 0,\n fontSize: \"16px\",\n fontWeight: \"normal\"\n},\n _defaults = {\n toggleActions: \"play\",\n anticipatePin: 0\n},\n _keywords = {\n top: 0,\n left: 0,\n center: 0.5,\n bottom: 1,\n right: 1\n},\n _offsetToPx = function _offsetToPx(value, size) {\n if (_isString(value)) {\n var eqIndex = value.indexOf(\"=\"),\n relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\n if (relative) {\n value.indexOf(\"%\") > eqIndex && (relative *= size / 100);\n value = value.substr(0, eqIndex - 1);\n }\n\n value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n }\n\n return value;\n},\n _createMarker = function _createMarker(type, name, container, direction, _ref5, offset, matchWidthEl) {\n var startColor = _ref5.startColor,\n endColor = _ref5.endColor,\n fontSize = _ref5.fontSize,\n indent = _ref5.indent,\n fontWeight = _ref5.fontWeight;\n\n var e = _doc.createElement(\"div\"),\n useFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n isScroller = type.indexOf(\"scroller\") !== -1,\n parent = useFixedPosition ? _body : container,\n isStart = type.indexOf(\"start\") !== -1,\n color = isStart ? startColor : endColor,\n css = \"border-color:\" + color + \";font-size:\" + fontSize + \";color:\" + color + \";font-weight:\" + fontWeight + \";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;\";\n\n css += \"position:\" + (isScroller && useFixedPosition ? \"fixed;\" : \"absolute;\");\n (isScroller || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n matchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n e._isStart = isStart;\n e.setAttribute(\"class\", \"gsap-marker-\" + type);\n e.style.cssText = css;\n e.innerText = name || name === 0 ? type + \"-\" + name : type;\n parent.insertBefore(e, parent.children[0]);\n e._offset = e[\"offset\" + direction.op.d2];\n\n _positionMarker(e, 0, direction, isStart);\n\n return e;\n},\n _positionMarker = function _positionMarker(marker, start, direction, flipped) {\n var vars = {\n display: \"block\"\n },\n side = direction[flipped ? \"os2\" : \"p2\"],\n oppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n marker._isFlipped = flipped;\n vars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n vars[direction.a] = flipped ? 1 : 0;\n vars[\"border\" + side + _Width] = 1;\n vars[\"border\" + oppositeSide + _Width] = 0;\n vars[direction.p] = start;\n gsap.set(marker, vars);\n},\n _triggers = [],\n _ids = {},\n _sync = function _sync() {\n return _request || (_request = _raf(_updateAll));\n},\n _onScroll = function _onScroll() {\n if (!_request) {\n _request = _raf(_updateAll);\n _lastScrollTime || _dispatch(\"scrollStart\");\n _lastScrollTime = _getTime();\n }\n},\n _onResize = function _onResize() {\n return !_refreshing && _resizeDelay.restart(true);\n},\n // ignore resizes triggered by refresh()\n_listeners = {},\n _emptyArray = [],\n _media = [],\n _creatingMedia,\n // when ScrollTrigger.matchMedia() is called, we record the current media key here (like \"(min-width: 800px)\") so that we can assign it to everything that's created during that call. Then we can revert just those when necessary. In the ScrollTrigger's init() call, the _creatingMedia is recorded as a \"media\" property on the instance.\n_lastMediaTick,\n _onMediaChange = function _onMediaChange(e) {\n var tick = gsap.ticker.frame,\n matches = [],\n i = 0,\n index;\n\n if (_lastMediaTick !== tick || _startup) {\n _revertAll();\n\n for (; i < _media.length; i += 4) {\n index = _win.matchMedia(_media[i]).matches;\n\n if (index !== _media[i + 3]) {\n // note: some browsers fire the matchMedia event multiple times, like when going full screen, so we shouldn't call the function multiple times. Check to see if it's already matched.\n _media[i + 3] = index;\n index ? matches.push(i) : _revertAll(1, _media[i]) || _isFunction(_media[i + 2]) && _media[i + 2](); // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n }\n }\n\n _revertRecorded(); // in case killing/reverting any of the animations actually added inline styles back.\n\n\n for (i = 0; i < matches.length; i++) {\n index = matches[i];\n _creatingMedia = _media[index];\n _media[index + 2] = _media[index + 1](e);\n }\n\n _creatingMedia = 0;\n\n _refreshAll(0, 1);\n\n _lastMediaTick = tick;\n\n _dispatch(\"matchMedia\");\n }\n},\n _softRefresh = function _softRefresh() {\n return _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true);\n},\n _dispatch = function _dispatch(type) {\n return _listeners[type] && _listeners[type].map(function (f) {\n return f();\n }) || _emptyArray;\n},\n _savedStyles = [],\n // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n_revertRecorded = function _revertRecorded(media) {\n for (var i = 0; i < _savedStyles.length; i += 4) {\n if (!media || _savedStyles[i + 3] === media) {\n _savedStyles[i].style.cssText = _savedStyles[i + 1];\n _savedStyles[i + 2].uncache = 1;\n }\n }\n},\n _revertAll = function _revertAll(kill, media) {\n var trigger;\n\n for (_i = 0; _i < _triggers.length; _i++) {\n trigger = _triggers[_i];\n\n if (!media || trigger.media === media) {\n if (kill) {\n trigger.kill(1);\n } else {\n trigger.scroll.rec || (trigger.scroll.rec = trigger.scroll()); // record the scroll positions so that in each refresh() we can ensure that it doesn't shift. Remember, pinning can make things change around, especially if the same element is pinned multiple times. If one was already recorded, don't re-record because unpinning may have occurred and made it shorter.\n\n trigger.revert();\n }\n }\n }\n\n _revertRecorded(media);\n\n media || _dispatch(\"revert\");\n},\n _refreshAll = function _refreshAll(force, skipRevert) {\n if (_lastScrollTime && !force) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n var refreshInits = _dispatch(\"refreshInit\");\n\n _sort && ScrollTrigger.sort();\n skipRevert || _revertAll();\n\n for (_i = 0; _i < _triggers.length; _i++) {\n _triggers[_i].refresh();\n }\n\n refreshInits.forEach(function (result) {\n return result && result.render && result.render(-1);\n }); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\n _i = _triggers.length;\n\n while (_i--) {\n _triggers[_i].scroll.rec = 0;\n }\n\n _resizeDelay.pause();\n\n _dispatch(\"refresh\");\n},\n _lastScroll = 0,\n _direction = 1,\n _updateAll = function _updateAll() {\n var l = _triggers.length,\n time = _getTime(),\n recordVelocity = time - _time1 >= 50,\n scroll = l && _triggers[0].scroll();\n\n _direction = _lastScroll > scroll ? -1 : 1;\n _lastScroll = scroll;\n\n if (recordVelocity) {\n if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n _lastScrollTime = 0;\n\n _dispatch(\"scrollEnd\");\n }\n\n _time2 = _time1;\n _time1 = time;\n }\n\n if (_direction < 0) {\n _i = l;\n\n while (_i--) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n\n _direction = 1;\n } else {\n for (_i = 0; _i < l; _i++) {\n _triggers[_i] && _triggers[_i].update(0, recordVelocity);\n }\n }\n\n _request = 0;\n},\n _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\"],\n _stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n _swapPinOut = function _swapPinOut(pin, spacer, state) {\n _setState(state);\n\n if (pin.parentNode === spacer) {\n var parent = spacer.parentNode;\n\n if (parent) {\n parent.insertBefore(pin, spacer);\n parent.removeChild(spacer);\n }\n }\n},\n _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) {\n if (pin.parentNode !== spacer) {\n var i = _propNamesToCopy.length,\n spacerStyle = spacer.style,\n pinStyle = pin.style,\n p;\n\n while (i--) {\n p = _propNamesToCopy[i];\n spacerStyle[p] = cs[p];\n }\n\n spacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n cs.display === \"inline\" && (spacerStyle.display = \"inline-block\");\n pinStyle[_bottom] = pinStyle[_right] = \"auto\";\n spacerStyle.overflow = \"visible\";\n spacerStyle.boxSizing = \"border-box\";\n spacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n spacerStyle[_height] = _getSize(pin, _vertical) + _px;\n spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\n _setState(spacerState);\n\n pinStyle[_width] = pinStyle[\"max\" + _Width] = cs[_width];\n pinStyle[_height] = pinStyle[\"max\" + _Height] = cs[_height];\n pinStyle[_padding] = cs[_padding];\n pin.parentNode.insertBefore(spacer, pin);\n spacer.appendChild(pin);\n }\n},\n _capsExp = /([A-Z])/g,\n _setState = function _setState(state) {\n if (state) {\n var style = state.t.style,\n l = state.length,\n i = 0,\n p,\n value;\n\n for (; i < l; i += 2) {\n value = state[i + 1];\n p = state[i];\n\n if (value) {\n style[p] = value;\n } else if (style[p]) {\n style.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n }\n }\n }\n},\n _getState = function _getState(element) {\n // returns an array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n var l = _stateProps.length,\n style = element.style,\n state = [],\n i = 0;\n\n for (; i < l; i++) {\n state.push(_stateProps[i], style[_stateProps[i]]);\n }\n\n state.t = element;\n return state;\n},\n _copyState = function _copyState(state, override, omitOffsets) {\n var result = [],\n l = state.length,\n i = omitOffsets ? 8 : 0,\n // skip top, left, right, bottom if omitOffsets is true\n p;\n\n for (; i < l; i += 2) {\n p = state[i];\n result.push(p, p in override ? override[p] : state[i + 1]);\n }\n\n result.t = state.t;\n return result;\n},\n _winOffsets = {\n left: 0,\n top: 0\n},\n _parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax) {\n _isFunction(value) && (value = value(self));\n\n if (_isString(value) && value.substr(0, 3) === \"max\") {\n value = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n }\n\n if (!_isNumber(value)) {\n _isFunction(trigger) && (trigger = trigger(self));\n\n var element = _toArray(trigger)[0] || _body,\n bounds = _getBounds(element) || {},\n offsets = value.split(\" \"),\n localOffset,\n globalOffset,\n display;\n\n if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === \"none\") {\n // if display is \"none\", it won't report getBoundingClientRect() properly\n display = element.style.display;\n element.style.display = \"block\";\n bounds = _getBounds(element);\n display ? element.style.display = display : element.style.removeProperty(\"display\");\n }\n\n localOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n globalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);\n scrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n } else if (markerScroller) {\n _positionMarker(markerScroller, scrollerSize, direction, true);\n }\n\n if (marker) {\n var position = value + scrollerSize,\n isStart = marker._isStart;\n scrollerMax = \"scroll\" + direction.d2;\n\n _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[scrollerMax], _docEl[scrollerMax]) : marker.parentNode[scrollerMax]) <= position + 1);\n\n if (useFixedPosition) {\n scrollerBounds = _getBounds(markerScroller);\n useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);\n }\n }\n\n return Math.round(value);\n},\n _prefixExp = /(?:webkit|moz|length|cssText)/i,\n _reparent = function _reparent(element, parent, top, left) {\n if (element.parentNode !== parent) {\n var style = element.style,\n p,\n cs;\n\n if (parent === _body) {\n element._stOrig = style.cssText; // record original inline styles so we can revert them later\n\n cs = _getComputedStyle(element);\n\n for (p in cs) {\n // must copy all relevant styles to ensure that nothing changes visually when we reparent to the . Skip the vendor prefixed ones.\n if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n style[p] = cs[p];\n }\n }\n\n style.top = top;\n style.left = left;\n } else {\n style.cssText = element._stOrig;\n }\n\n gsap.core.getCache(element).uncache = 1;\n parent.appendChild(element);\n }\n},\n // returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n_getTweenCreator = function _getTweenCreator(scroller, direction) {\n var getScroll = _getScrollFunc(scroller, direction),\n prop = \"_scroll\" + direction.p2,\n // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n lastScroll1,\n lastScroll2,\n getTween = function getTween(scrollTo, vars, initialValue, change1, change2) {\n var tween = getTween.tween,\n onComplete = vars.onComplete,\n modifiers = {};\n tween && tween.kill();\n lastScroll1 = Math.round(initialValue);\n vars[prop] = scrollTo;\n vars.modifiers = modifiers;\n\n modifiers[prop] = function (value) {\n value = Math.round(getScroll()); // round because in some [very uncommon] Windows environments, it can get reported with decimals even though it was set without.\n\n if (value !== lastScroll1 && value !== lastScroll2) {\n // if the user scrolls, kill the tween. iOS Safari intermittently misreports the scroll position, it may be the most recently-set one or the one before that!\n tween.kill();\n getTween.tween = 0;\n } else {\n value = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio;\n }\n\n lastScroll2 = lastScroll1;\n return lastScroll1 = Math.round(value);\n };\n\n vars.onComplete = function () {\n getTween.tween = 0;\n onComplete && onComplete.call(tween);\n };\n\n tween = getTween.tween = gsap.to(scroller, vars);\n return tween;\n };\n\n scroller[prop] = getScroll;\n return getTween;\n};\n\n_horizontal.op = _vertical;\nexport var ScrollTrigger = /*#__PURE__*/function () {\n function ScrollTrigger(vars, animation) {\n _coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n this.init(vars, animation);\n }\n\n var _proto = ScrollTrigger.prototype;\n\n _proto.init = function init(vars, animation) {\n this.progress = 0;\n this.vars && this.kill(1); // in case it's being initted again\n\n if (!_enabled) {\n this.update = this.refresh = this.kill = _passThrough;\n return;\n }\n\n vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {\n trigger: vars\n } : vars, _defaults);\n\n var direction = vars.horizontal ? _horizontal : _vertical,\n _vars = vars,\n onUpdate = _vars.onUpdate,\n toggleClass = _vars.toggleClass,\n id = _vars.id,\n onToggle = _vars.onToggle,\n onRefresh = _vars.onRefresh,\n scrub = _vars.scrub,\n trigger = _vars.trigger,\n pin = _vars.pin,\n pinSpacing = _vars.pinSpacing,\n invalidateOnRefresh = _vars.invalidateOnRefresh,\n anticipatePin = _vars.anticipatePin,\n onScrubComplete = _vars.onScrubComplete,\n onSnapComplete = _vars.onSnapComplete,\n once = _vars.once,\n snap = _vars.snap,\n pinReparent = _vars.pinReparent,\n isToggle = !scrub && scrub !== 0,\n scroller = _toArray(vars.scroller || _win)[0],\n scrollerCache = gsap.core.getCache(scroller),\n isViewport = _isViewport(scroller),\n useFixedPosition = \"pinType\" in vars ? vars.pinType === \"fixed\" : isViewport || _getProxyProp(scroller, \"pinType\") === \"fixed\",\n callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n toggleActions = isToggle && vars.toggleActions.split(\" \"),\n markers = \"markers\" in vars ? vars.markers : _defaults.markers,\n borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n self = this,\n onRefreshInit = vars.onRefreshInit && function () {\n return vars.onRefreshInit(self);\n },\n getScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n getScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n tweenTo,\n pinCache,\n snapFunc,\n isReverted,\n scroll1,\n scroll2,\n start,\n end,\n markerStart,\n markerEnd,\n markerStartTrigger,\n markerEndTrigger,\n markerVars,\n change,\n pinOriginalState,\n pinActiveState,\n pinState,\n spacer,\n offset,\n pinGetter,\n pinSetter,\n pinStart,\n pinChange,\n spacingStart,\n spacerState,\n markerStartSetter,\n markerEndSetter,\n cs,\n snap1,\n snap2,\n scrubTween,\n scrubSmooth,\n snapDurClamp,\n snapDelayedCall,\n prevProgress,\n prevScroll,\n prevAnimProgress;\n\n self.media = _creatingMedia;\n anticipatePin *= 45;\n\n _triggers.push(self);\n\n self.scroller = scroller;\n self.scroll = _getScrollFunc(scroller, direction);\n scroll1 = self.scroll();\n self.vars = vars;\n animation = animation || vars.animation;\n \"refreshPriority\" in vars && (_sort = 1);\n scrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n top: _getTweenCreator(scroller, _vertical),\n left: _getTweenCreator(scroller, _horizontal)\n };\n self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\n if (animation) {\n animation.vars.lazy = false;\n animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true);\n self.animation = animation.pause();\n animation.scrollTrigger = self;\n scrubSmooth = _isNumber(scrub) && scrub;\n scrubSmooth && (scrubTween = gsap.to(animation, {\n ease: \"power3\",\n duration: scrubSmooth,\n onComplete: function onComplete() {\n return onScrubComplete && onScrubComplete(self);\n }\n }));\n snap1 = 0;\n id || (id = animation.vars.id);\n }\n\n if (snap) {\n _isObject(snap) || (snap = {\n snapTo: snap\n });\n gsap.set(isViewport ? [_body, _docEl] : scroller, {\n scrollBehavior: \"auto\"\n }); // smooth scrolling doesn't work with snap.\n\n snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getLabels(animation) : gsap.utils.snap(snap.snapTo);\n snapDurClamp = snap.duration || {\n min: 0.1,\n max: 2\n };\n snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () {\n if (Math.abs(self.getVelocity()) < 10 && !_pointerIsDown) {\n var totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress,\n velocity = (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0,\n change1 = _abs(velocity / 2) * velocity / 0.185,\n naturalEnd = totalProgress + change1,\n endValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n scroll = self.scroll(),\n endScroll = Math.round(start + endValue * change),\n tween = tweenTo.tween;\n\n if (scroll <= end && scroll >= start && endScroll !== scroll) {\n if (tween && !tween._initted && tween.data <= Math.abs(endScroll - scroll)) {\n // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n return;\n }\n\n tweenTo(endScroll, {\n duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),\n ease: snap.ease || \"power3\",\n data: Math.abs(endScroll - scroll),\n // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n onComplete: function onComplete() {\n snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n onSnapComplete && onSnapComplete(self);\n }\n }, scroll, change1 * change, endScroll - scroll - change1 * change);\n }\n } else if (self.isActive) {\n snapDelayedCall.restart(true);\n }\n }).pause();\n }\n\n id && (_ids[id] = self);\n trigger = self.trigger = _toArray(trigger || pin)[0];\n pin = pin === true ? trigger : _toArray(pin)[0];\n _isString(toggleClass) && (toggleClass = {\n targets: trigger,\n className: toggleClass\n });\n\n if (pin) {\n pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default.\n\n self.pin = pin;\n vars.force3D !== false && gsap.set(pin, {\n force3D: true\n });\n pinCache = gsap.core.getCache(pin);\n\n if (!pinCache.spacer) {\n // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n pinCache.spacer = spacer = _doc.createElement(\"div\");\n spacer.setAttribute(\"class\", \"pin-spacer\" + (id ? \" pin-spacer-\" + id : \"\"));\n pinCache.pinState = pinOriginalState = _getState(pin);\n } else {\n pinOriginalState = pinCache.pinState;\n }\n\n self.spacer = spacer = pinCache.spacer;\n cs = _getComputedStyle(pin);\n spacingStart = cs[pinSpacing + direction.os2];\n pinGetter = gsap.getProperty(pin);\n pinSetter = gsap.quickSetter(pin, direction.a, _px); // pin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins, but can have unintended consequences as demonstrated here: https://codepen.io/GreenSock/pen/1e42c7a73bfa409d2cf1e184e7a4248d so it was removed in favor of just telling people to set up their CSS to avoid the collapsing margins (overflow: hidden | auto is just one option. Another is border-top: 1px solid transparent).\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin);\n }\n\n if (markers) {\n markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n markerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n markerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n offset = markerStartTrigger[\"offset\" + direction.op.d2];\n markerStart = _createMarker(\"start\", id, scroller, direction, markerVars, offset);\n markerEnd = _createMarker(\"end\", id, scroller, direction, markerVars, offset);\n\n if (!useFixedPosition) {\n _makePositionable(scroller);\n\n gsap.set([markerStartTrigger, markerEndTrigger], {\n force3D: true\n });\n markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n }\n }\n\n self.revert = function (revert) {\n var r = revert !== false || !self.enabled,\n prevRefreshing = _refreshing;\n\n if (r !== isReverted) {\n if (r) {\n prevScroll = Math.max(self.scroll(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\n prevProgress = self.progress;\n prevAnimProgress = animation && animation.progress();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.style.display = r ? \"none\" : \"block\";\n });\n r && (_refreshing = 1);\n self.update(r); // make sure the pin is back in its original position so that all the measurements are correct.\n\n _refreshing = prevRefreshing;\n pin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState));\n isReverted = r;\n }\n };\n\n self.refresh = function (soft) {\n if (_refreshing || !self.enabled) {\n return;\n }\n\n if (pin && soft && _lastScrollTime) {\n _addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\n return;\n }\n\n _refreshing = 1;\n scrubTween && scrubTween.kill();\n invalidateOnRefresh && animation && animation.progress(0).invalidate();\n isReverted || self.revert();\n\n var size = getScrollerSize(),\n scrollerBounds = getScrollerOffsets(),\n max = _maxScroll(scroller, direction),\n offset = 0,\n otherPinOffset = 0,\n parsedEnd = vars.end,\n parsedEndTrigger = vars.endTrigger || trigger,\n parsedStart = vars.start || (vars.start === 0 ? 0 : pin || !trigger ? \"0 0\" : \"0 100%\"),\n triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0,\n i = triggerIndex,\n cs,\n bounds,\n scroll,\n isVertical,\n override,\n curTrigger,\n curPin,\n oppositeScroll;\n\n while (i--) {\n // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n curPin = _triggers[i].pin;\n curPin && (curPin === trigger || curPin === pin) && _triggers[i].revert();\n }\n\n start = _parsePosition(parsedStart, trigger, size, direction, self.scroll(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max) || (pin ? -0.001 : 0);\n _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\n if (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n if (~parsedEnd.indexOf(\" \")) {\n parsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n } else {\n offset = _offsetToPx(parsedEnd.substr(2), size);\n parsedEnd = _isString(parsedStart) ? parsedStart : start + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\n parsedEndTrigger = trigger;\n }\n }\n\n end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, self.scroll() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max)) || -0.001;\n change = end - start || (start -= 0.01) && 0.001;\n offset = 0;\n i = triggerIndex;\n\n while (i--) {\n curTrigger = _triggers[i];\n curPin = curTrigger.pin;\n\n if (curPin && curTrigger.start - curTrigger._pinPush < start) {\n cs = curTrigger.end - curTrigger.start;\n curPin === trigger && (offset += cs);\n curPin === pin && (otherPinOffset += cs);\n }\n }\n\n start += offset;\n end += offset;\n self._pinPush = otherPinOffset;\n\n if (markerStart && offset) {\n // offset the markers if necessary\n cs = {};\n cs[direction.a] = \"+=\" + offset;\n gsap.set([markerStart, markerEnd], cs);\n }\n\n if (pin) {\n cs = _getComputedStyle(pin);\n isVertical = direction === _vertical;\n scroll = self.scroll(); // recalculate because the triggers can affect the scroll\n\n pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n !max && end > 1 && ((isViewport ? _body : scroller).style[\"overflow-\" + direction.a] = \"scroll\"); // makes sure the scroller has a scrollbar, otherwise if something has width: 100%, for example, it would be too big (exclude the scrollbar). See https://greensock.com/forums/topic/25182-scrolltrigger-width-of-page-increase-where-markers-are-set-to-false/\n\n _swapPinIn(pin, spacer, cs);\n\n pinState = _getState(pin); // transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\n bounds = _getBounds(pin, true);\n oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();\n\n if (pinSpacing) {\n spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n spacerState.t = spacer;\n i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;\n i && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\n _setState(spacerState);\n\n useFixedPosition && self.scroll(prevScroll);\n }\n\n if (useFixedPosition) {\n override = {\n top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,\n left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,\n boxSizing: \"border-box\",\n position: \"fixed\"\n };\n override[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n override[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n override[_padding] = cs[_padding];\n override[_padding + _Top] = cs[_padding + _Top];\n override[_padding + _Right] = cs[_padding + _Right];\n override[_padding + _Bottom] = cs[_padding + _Bottom];\n override[_padding + _Left] = cs[_padding + _Left];\n pinActiveState = _copyState(pinOriginalState, override, pinReparent);\n }\n\n if (animation) {\n // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n animation.progress(1, true);\n pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n change !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\n animation.progress(0, true);\n } else {\n pinChange = change;\n }\n } else if (trigger && self.scroll()) {\n // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n bounds = trigger.parentNode;\n\n while (bounds && bounds !== _body) {\n if (bounds._pinOffset) {\n start -= bounds._pinOffset;\n end -= bounds._pinOffset;\n }\n\n bounds = bounds.parentNode;\n }\n }\n\n for (i = 0; i < triggerIndex; i++) {\n // make sure we revert from first to last to make sure things reach their end state properly\n curTrigger = _triggers[i].pin;\n curTrigger && (curTrigger === trigger || curTrigger === pin) && _triggers[i].revert(false);\n }\n\n self.start = start;\n self.end = end;\n scroll1 = scroll2 = self.scroll(); // reset velocity\n\n scroll1 < prevScroll && self.scroll(prevScroll);\n self.revert(false);\n _refreshing = 0;\n prevAnimProgress && isToggle && animation.progress(prevAnimProgress, true);\n\n if (prevProgress !== self.progress) {\n // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n scrubTween && animation.totalProgress(prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\n self.progress = prevProgress;\n self.update();\n }\n\n pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n onRefresh && onRefresh(self);\n };\n\n self.getVelocity = function () {\n return (self.scroll() - scroll2) / (_getTime() - _time2) * 1000 || 0;\n };\n\n self.update = function (reset, recordVelocity) {\n var scroll = self.scroll(),\n p = reset ? 0 : (scroll - start) / change,\n clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n prevProgress = self.progress,\n isActive,\n wasActive,\n toggleState,\n action,\n stateChanged,\n toggled;\n\n if (recordVelocity) {\n scroll2 = scroll1;\n scroll1 = scroll;\n\n if (snap) {\n snap2 = snap1;\n snap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n }\n } // anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\n\n anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001);\n\n if (clipped !== prevProgress && self.enabled) {\n isActive = self.isActive = !!clipped && clipped < 1;\n wasActive = !!prevProgress && prevProgress < 1;\n toggled = isActive !== wasActive;\n stateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\n self.direction = clipped > prevProgress ? 1 : -1;\n self.progress = clipped;\n\n if (!isToggle) {\n if (scrubTween && !_refreshing && !_startup) {\n scrubTween.vars.totalProgress = clipped;\n scrubTween.invalidate().restart();\n } else if (animation) {\n animation.totalProgress(clipped, !!_refreshing);\n }\n }\n\n if (pin) {\n reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\n if (!useFixedPosition) {\n pinSetter(pinStart + pinChange * clipped);\n } else if (stateChanged) {\n action = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\n if (pinReparent) {\n if (!reset && (isActive || action)) {\n var bounds = _getBounds(pin, true),\n _offset = scroll - start;\n\n _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);\n } else {\n _reparent(pin, spacer);\n }\n }\n\n _setState(isActive || action ? pinActiveState : pinState);\n\n pinChange !== change && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !action ? pinChange : 0));\n }\n }\n\n snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true);\n toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) {\n return el.classList[isActive || once ? \"add\" : \"remove\"](toggleClass.className);\n }); // classes could affect positioning, so do it even if reset or refreshing is true.\n\n onUpdate && !isToggle && !reset && onUpdate(self);\n\n if (stateChanged && !_refreshing) {\n toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\n if (isToggle) {\n action = !toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1] || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\n if (animation && (action === \"complete\" || action === \"reset\" || action in animation)) {\n if (action === \"complete\") {\n animation.pause().totalProgress(1);\n } else if (action === \"reset\") {\n animation.restart(true).pause();\n } else {\n animation[action]();\n }\n }\n\n onUpdate && onUpdate(self);\n }\n\n if (toggled || !_limitCallbacks) {\n // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n onToggle && toggled && onToggle(self);\n callbacks[toggleState] && callbacks[toggleState](self);\n once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); // a callback shouldn't be called again if once is true.\n\n if (!toggled) {\n // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n toggleState = clipped === 1 ? 1 : 3;\n callbacks[toggleState] && callbacks[toggleState](self);\n }\n }\n } else if (isToggle && onUpdate && !_refreshing) {\n onUpdate(self);\n }\n } // update absolutely-positioned markers (only if the scroller isn't the viewport)\n\n\n if (markerEndSetter) {\n markerStartSetter(scroll + (markerStartTrigger._isFlipped ? 1 : 0));\n markerEndSetter(scroll);\n }\n };\n\n self.enable = function () {\n if (!self.enabled) {\n self.enabled = true;\n\n _addListener(scroller, \"resize\", _onResize);\n\n _addListener(scroller, \"scroll\", _onScroll);\n\n onRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n !animation || !animation.add ? self.refresh() : gsap.delayedCall(0.01, function () {\n return start || end || self.refresh();\n }) && (change = 0.01) && (start = end = 0); // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick.\n }\n };\n\n self.disable = function (reset, allowAnimation) {\n if (self.enabled) {\n reset !== false && self.revert();\n self.enabled = self.isActive = false;\n allowAnimation || scrubTween && scrubTween.pause();\n prevScroll = 0;\n pinCache && (pinCache.uncache = 1);\n onRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\n if (snapDelayedCall) {\n snapDelayedCall.pause();\n tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);\n }\n\n if (!isViewport) {\n var i = _triggers.length;\n\n while (i--) {\n if (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n return; //don't remove the listeners if there are still other triggers referencing it.\n }\n }\n\n _removeListener(scroller, \"resize\", _onResize);\n\n _removeListener(scroller, \"scroll\", _onScroll);\n }\n }\n };\n\n self.kill = function (revert, allowAnimation) {\n self.disable(revert, allowAnimation);\n id && delete _ids[id];\n\n var i = _triggers.indexOf(self);\n\n _triggers.splice(i, 1);\n\n i === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n\n if (animation) {\n animation.scrollTrigger = null;\n revert && animation.render(-1);\n allowAnimation || animation.kill();\n }\n\n markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) {\n return m.parentNode.removeChild(m);\n });\n pinCache && (pinCache.uncache = 1);\n };\n\n self.enable();\n };\n\n ScrollTrigger.register = function register(core) {\n if (!_coreInitted) {\n gsap = core || _getGSAP();\n\n if (_windowExists() && window.document) {\n _win = window;\n _doc = document;\n _docEl = _doc.documentElement;\n _body = _doc.body;\n }\n\n if (gsap) {\n _toArray = gsap.utils.toArray;\n _clamp = gsap.utils.clamp;\n gsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\n if (_body) {\n _raf = _win.requestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n\n _addListener(_win, \"mousewheel\", _onScroll);\n\n _root = [_win, _doc, _docEl, _body];\n\n _addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\n\n var bodyStyle = _body.style,\n border = bodyStyle.borderTop,\n bounds;\n bodyStyle.borderTop = \"1px solid #000\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\n bounds = _getBounds(_body);\n _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the caused by margins and/or padding\n\n _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n border ? bodyStyle.borderTop = border : bodyStyle.removeProperty(\"border-top\");\n _syncInterval = setInterval(_sync, 200);\n gsap.delayedCall(0.5, function () {\n return _startup = 0;\n });\n\n _addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\n\n _addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\n\n _multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", function () {\n return _pointerIsDown = 1;\n });\n\n _multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", function () {\n return _pointerIsDown = 0;\n });\n\n _transformProp = gsap.utils.checkPrefix(\"transform\");\n\n _stateProps.push(_transformProp);\n\n _coreInitted = _getTime();\n _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n _autoRefresh = [_doc, \"visibilitychange\", function () {\n var w = _win.innerWidth,\n h = _win.innerHeight;\n\n if (_doc.hidden) {\n _prevWidth = w;\n _prevHeight = h;\n } else if (_prevWidth !== w || _prevHeight !== h) {\n _onResize();\n }\n }, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", function () {\n return _lastScrollTime || _refreshAll();\n }, _win, \"resize\", _onResize];\n\n _iterateAutoRefresh(_addListener);\n }\n }\n }\n\n return _coreInitted;\n };\n\n ScrollTrigger.defaults = function defaults(config) {\n for (var p in config) {\n _defaults[p] = config[p];\n }\n };\n\n ScrollTrigger.kill = function kill() {\n _enabled = 0;\n\n _triggers.slice(0).forEach(function (trigger) {\n return trigger.kill(1);\n });\n };\n\n ScrollTrigger.config = function config(vars) {\n \"limitCallbacks\" in vars && (_limitCallbacks = !!vars.limitCallbacks);\n var ms = vars.syncInterval;\n ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);\n \"autoRefreshEvents\" in vars && (_iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\"));\n };\n\n ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) {\n var t = _toArray(target)[0];\n\n _isViewport(t) ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n };\n\n ScrollTrigger.matchMedia = function matchMedia(vars) {\n // _media is populated in the following order: mediaQueryString, onMatch, onUnmatch, isMatched. So if there are two media queries, the Array would have a length of 8\n var mq, p, i, func, result;\n\n for (p in vars) {\n i = _media.indexOf(p);\n func = vars[p];\n _creatingMedia = p;\n\n if (p === \"all\") {\n func();\n } else {\n mq = _win.matchMedia(p);\n\n if (mq) {\n mq.matches && (result = func());\n\n if (~i) {\n _media[i + 1] = _combineFunc(_media[i + 1], func);\n _media[i + 2] = _combineFunc(_media[i + 2], result);\n } else {\n i = _media.length;\n\n _media.push(p, func, result);\n\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n\n _media[i + 3] = mq.matches;\n }\n }\n\n _creatingMedia = 0;\n }\n\n return _media;\n };\n\n ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) {\n query || (_media.length = 0);\n query = _media.indexOf(query);\n query >= 0 && _media.splice(query, 4);\n };\n\n return ScrollTrigger;\n}();\nScrollTrigger.version = \"3.5.1\";\n\nScrollTrigger.saveStyles = function (targets) {\n return targets ? _toArray(targets).forEach(function (target) {\n var i = _savedStyles.indexOf(target);\n\n i >= 0 && _savedStyles.splice(i, 4);\n\n _savedStyles.push(target, target.style.cssText, gsap.core.getCache(target), _creatingMedia);\n }) : _savedStyles;\n};\n\nScrollTrigger.revert = function (soft, media) {\n return _revertAll(!soft, media);\n};\n\nScrollTrigger.create = function (vars, animation) {\n return new ScrollTrigger(vars, animation);\n};\n\nScrollTrigger.refresh = function (safe) {\n return safe ? _onResize() : _refreshAll(true);\n};\n\nScrollTrigger.update = _updateAll;\n\nScrollTrigger.maxScroll = function (element, horizontal) {\n return _maxScroll(element, horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getScrollFunc = function (element, horizontal) {\n return _getScrollFunc(_toArray(element)[0], horizontal ? _horizontal : _vertical);\n};\n\nScrollTrigger.getById = function (id) {\n return _ids[id];\n};\n\nScrollTrigger.getAll = function () {\n return _triggers.slice(0);\n};\n\nScrollTrigger.isScrolling = function () {\n return !!_lastScrollTime;\n};\n\nScrollTrigger.addEventListener = function (type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n};\n\nScrollTrigger.removeEventListener = function (type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n};\n\nScrollTrigger.batch = function (targets, vars) {\n var result = [],\n varsCopy = {},\n interval = vars.interval || 0.016,\n batchMax = vars.batchMax || 1e9,\n proxyCallback = function proxyCallback(type, callback) {\n var elements = [],\n triggers = [],\n delay = gsap.delayedCall(interval, function () {\n callback(elements, triggers);\n elements = [];\n triggers = [];\n }).pause();\n return function (self) {\n elements.length || delay.restart(true);\n elements.push(self.trigger);\n triggers.push(self);\n batchMax <= elements.length && delay.progress(1);\n };\n },\n p;\n\n for (p in vars) {\n varsCopy[p] = p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\" ? proxyCallback(p, vars[p]) : vars[p];\n }\n\n if (_isFunction(batchMax)) {\n batchMax = batchMax();\n\n _addListener(ScrollTrigger, \"refresh\", function () {\n return batchMax = vars.batchMax();\n });\n }\n\n _toArray(targets).forEach(function (target) {\n var config = {};\n\n for (p in varsCopy) {\n config[p] = varsCopy[p];\n }\n\n config.trigger = target;\n result.push(ScrollTrigger.create(config));\n });\n\n return result;\n};\n\nScrollTrigger.sort = function (func) {\n return _triggers.sort(func || function (a, b) {\n return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6);\n });\n};\n\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\nexport { ScrollTrigger as default };","\nimport useRawData from './useRawData'\nimport useAssets from './useAssets'\nimport useImage from './useImage'\nimport useTexture from './useTexture'\n\nexport {\n useRawData,\n useAssets,\n useImage,\n useTexture,\n}\n","import { useLoader } from 'react-three-fiber';\nimport { TextureLoader } from 'three';\n\nfunction useTexture(url) {\n return useLoader(TextureLoader, url);\n}\n\nuseTexture.preload = function (url) {\n return useLoader.preload(TextureLoader, url);\n};\n\nexport { useTexture };","import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.string.repeat\";\nimport { useMemo, useEffect } from 'react';\nimport 'react-three-fiber';\nimport { RepeatWrapping, Vector2 } from 'three';\nimport { useTexture } from './useTexture.js';\nvar normalsList = {\n \"0\": \"151_norm.JPG\",\n \"1\": \"152_norm.JPG\",\n \"2\": \"153_norm.JPG\",\n \"3\": \"154_norm.JPG\",\n \"4\": \"155_norm.JPG\",\n \"5\": \"156_norm.JPG\",\n \"6\": \"157_norm.JPG\",\n \"7\": \"158_norm.JPG\",\n \"8\": \"159_norm.JPG\",\n \"9\": \"160_norm.JPG\",\n \"10\": \"161_norm.JPG\",\n \"11\": \"162_norm.JPG\",\n \"12\": \"163_norm.JPG\",\n \"13\": \"164_norm.JPG\",\n \"14\": \"165_norm.JPG\",\n \"15\": \"166_norm.JPG\",\n \"16\": \"167_norm.JPG\",\n \"17\": \"168_norm.JPG\",\n \"18\": \"169_norm.JPG\",\n \"19\": \"170_norm.JPG\",\n \"20\": \"171_norm.JPG\",\n \"21\": \"172_norm.JPG\",\n \"22\": \"173_norm.JPG\",\n \"23\": \"174_norm.jpg\",\n \"24\": \"175_norm.JPG\",\n \"25\": \"176_norm.JPG\",\n \"26\": \"177_norm.JPG\",\n \"27\": \"178_norm.JPG\",\n \"28\": \"179_norm.JPG\",\n \"29\": \"180_norm.JPG\",\n \"30\": \"181_norm.JPG\",\n \"31\": \"182_norm.JPG\",\n \"32\": \"183_norm.JPG\",\n \"33\": \"184_norm.JPG\",\n \"34\": \"185_norm.JPG\",\n \"35\": \"186_norm.JPG\",\n \"36\": \"187_norm.JPG\",\n \"37\": \"188_norm.JPG\",\n \"38\": \"189_norm.JPG\",\n \"39\": \"190_norm.JPG\",\n \"40\": \"191_norm.JPG\",\n \"41\": \"192_norm.JPG\",\n \"42\": \"193_norm.JPG\",\n \"43\": \"194_norm.JPG\",\n \"44\": \"195_norm.JPG\",\n \"45\": \"196_norm.JPG\",\n \"46\": \"197_norm.JPG\",\n \"47\": \"198_norm.JPG\",\n \"48\": \"199_norm.JPG\",\n \"49\": \"200_norm.JPG\",\n \"50\": \"201_norm.jpg\",\n \"51\": \"202_norm.jpg\",\n \"52\": \"203_norm.jpg\",\n \"53\": \"204_norm.jpg\",\n \"54\": \"205_norm.jpg\",\n \"55\": \"206_norm.jpg\",\n \"56\": \"207_norm.jpg\",\n \"57\": \"208_norm.jpg\",\n \"58\": \"209_norm.jpg\",\n \"59\": \"210_norm.jpg\",\n \"60\": \"211_norm.jpg\",\n \"61\": \"212_norm.jpg\",\n \"62\": \"213_norm.jpg\",\n \"63\": \"214_norm.jpg\",\n \"64\": \"215_norm.jpg\",\n \"65\": \"216_norm.jpg\",\n \"66\": \"217_norm.jpg\",\n \"67\": \"218_norm.jpg\",\n \"68\": \"219_norm.jpg\",\n \"69\": \"220_norm.jpg\",\n \"70\": \"221_norm.jpg\",\n \"71\": \"222_norm.jpg\",\n \"72\": \"223_norm.jpg\",\n \"73\": \"224_norm.jpg\",\n \"74\": \"225_norm.jpg\",\n \"75\": \"226_norm.jpg\"\n};\nvar NORMAL_ROOT = 'https://rawcdn.githack.com/emmelleppi/normal-maps/f24c810fc1d86b5b1e5dfea914b668f70b5f2923';\nvar DEFAULT_NORMAL = normalsList[0];\n\nfunction useNormalTexture() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n var _ref = arguments.length > 1 ? arguments[1] : undefined,\n _ref$repeat = _ref.repeat,\n repeat = _ref$repeat === void 0 ? [1, 1] : _ref$repeat,\n _ref$anisotropy = _ref.anisotropy,\n anisotropy = _ref$anisotropy === void 0 ? 1 : _ref$anisotropy,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? [0, 0] : _ref$offset;\n\n var numTot = useMemo(function () {\n return Object.keys(normalsList).length;\n }, []);\n var imageName = normalsList[id] || DEFAULT_NORMAL;\n var url = NORMAL_ROOT + \"/normals/\" + imageName; // @ts-expect-error\n\n var normalTexture = useTexture(url);\n useEffect(function () {\n if (!normalTexture) return;\n normalTexture.wrapS = normalTexture.wrapT = RepeatWrapping;\n normalTexture.repeat = new Vector2(repeat[0], repeat[1]);\n normalTexture.offset = new Vector2(offset[0], offset[1]);\n normalTexture.anisotropy = anisotropy;\n }, [normalTexture, anisotropy, repeat, offset]);\n return [normalTexture, url, numTot];\n}\n\nexport { useNormalTexture };","import React, {useEffect, useRef, useState , Suspense} from 'react'\nimport * as THREE from 'three'\nimport { useNormalTexture } from '@react-three/drei/useNormalTexture'\n\n\nimport { useFrame, useLoader, HTML, Dom } from 'react-three-fiber'\nimport {useAssets, useTexture} from '../hooks'\n\nimport Canvas from './Canvas'\n\nimport gsap ,{TweenMax} from 'gsap'\nconst GROUND_HEIGHT = -50;\n\n\n\n\n\nfunction Box(props) {\n // This reference will give us direct access to the mesh\n const mesh = useRef()\n\n // Set up state for the hovered and active state\n const [hovered, setHover] = useState(false)\n const [active, setActive] = useState(false)\n\n // Rotate mesh every frame, this is outside of React without overhead\n useFrame(() => {\n mesh.current.rotation.x = mesh.current.rotation.y += 0.001\n })\n\n\n\n const src1 = useAssets('images/Concrete.jpg')\n const t1 = useTexture(src1)\n\n const repeat = 2\n const scale = 1\n const [normalTexture] = useNormalTexture(32, {\n repeat: [repeat, repeat],\n anisotropy: 3,\n });\n\n\n return (\n setActive(!active)}\n onPointerOver={(e) => setHover(true)}\n onPointerOut={(e) => setHover(false)}>\n \n \n\n \n )\n}\n // \n//\n// function Sprite({ url, ...props }) {\n// const texture = useLoader(THREE.TextureLoader, url)\n// return (\n// \n// \n// \n// )\n// }\n// // \n//\n\n\n\nconst Concrete = ({scrollpercentage, scrollsection}) => (\n\n\n\n\n\n\n\n\n\n\n\n\n\n)\n\n\n\nexport default Concrete\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import {useState, useEffect} from 'react'\nimport {Texture} from 'three'\n\nimport {loadTexture} from '../helpers/loadingManager'\n\nexport default function useTexture(src) {\n const [texture, setTexture] = useState(new Texture())\n\n useEffect(()=> {\n loadTexture(src, setTexture)\n }, [])\n\n return texture\n}\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","\n/**\n * Based on Nvidia Cg tutorial\n */\n\nvar FresnelShader = {\n\n\tuniforms: {\n\n\t\t\"mRefractionRatio\": { value: 1.02 },\n\t\t\"mFresnelBias\": { value: 0.1 },\n\t\t\"mFresnelPower\": { value: 2.0 },\n\t\t\"mFresnelScale\": { value: 1.0 },\n\t\t\"tCube\": { value: null }\n\n\t},\n\n\tvertexShader: [\n\n\t\t\"uniform float mRefractionRatio;\",\n\t\t\"uniform float mFresnelBias;\",\n\t\t\"uniform float mFresnelScale;\",\n\t\t\"uniform float mFresnelPower;\",\n\n\t\t\"varying vec3 vReflect;\",\n\t\t\"varying vec3 vRefract[3];\",\n\t\t\"varying float vReflectionFactor;\",\n\n\t\t\"void main() {\",\n\n\t\t\"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\n\t\t\"\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\",\n\n\t\t\"\tvec3 worldNormal = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\",\n\n\t\t\"\tvec3 I = worldPosition.xyz - cameraPosition;\",\n\n\t\t\"\tvReflect = reflect( I, worldNormal );\",\n\t\t\"\tvRefract[0] = refract( normalize( I ), worldNormal, mRefractionRatio );\",\n\t\t\"\tvRefract[1] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.99 );\",\n\t\t\"\tvRefract[2] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.98 );\",\n\t\t\"\tvReflectionFactor = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( I ), worldNormal ), mFresnelPower );\",\n\n\t\t\"\tgl_Position = projectionMatrix * mvPosition;\",\n\n\t\t\"}\"\n\n\t].join( \"\\n\" ),\n\n\tfragmentShader: [\n\n\t\t\"uniform samplerCube tCube;\",\n\n\t\t\"varying vec3 vReflect;\",\n\t\t\"varying vec3 vRefract[3];\",\n\t\t\"varying float vReflectionFactor;\",\n\n\t\t\"void main() {\",\n\n\t\t\"\tvec4 reflectedColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\",\n\t\t\"\tvec4 refractedColor = vec4( 1.0 );\",\n\n\t\t\"\trefractedColor.r = textureCube( tCube, vec3( -vRefract[0].x, vRefract[0].yz ) ).r;\",\n\t\t\"\trefractedColor.g = textureCube( tCube, vec3( -vRefract[1].x, vRefract[1].yz ) ).g;\",\n\t\t\"\trefractedColor.b = textureCube( tCube, vec3( -vRefract[2].x, vRefract[2].yz ) ).b;\",\n\n\t\t\"\tgl_FragColor = mix( refractedColor, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );\",\n\n\t\t\"}\"\n\n\t].join( \"\\n\" )\n\n};\n\nexport { FresnelShader };\n","export default \"// LICENSE: MIT\\n// Copyright (c) 2017 by Mike Linkovich\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\n#define TRANSITION_LOW (%%TRANSITION_LOW%%)\\n#define TRANSITION_HIGH (%%TRANSITION_HIGH%%)\\n#define TRANSITION_NOISE 0.06\\n\\nconst vec3 LIGHT_COLOR = vec3(1.0, 1.0, 0.9);\\nconst vec3 DIRT_COLOR = vec3(0.77, 0.67, 0.45);\\n\\nuniform sampler2D map1;\\nuniform sampler2D map2;\\nuniform sampler2D heightMap;\\nuniform vec3 fogColor;\\nuniform float fogNear;\\nuniform float fogFar;\\nuniform float grassFogFar;\\n\\nvarying vec2 vUv;\\nvarying vec2 vSamplePos;\\n\\nvoid main() {\\n\\tvec4 hdata = texture2D(heightMap, vSamplePos);\\n\\tfloat altitude = hdata.r;\\n\\t// perturb altitude with some noise using the B channel.\\n\\tfloat noise = hdata.b;\\n\\taltitude += noise * TRANSITION_NOISE - (TRANSITION_NOISE / 2.0);\\n\\n\\t// Determine whether this position is more grass or more dirt\\n\\tfloat grassAmount = (clamp(altitude, TRANSITION_LOW, TRANSITION_HIGH) - TRANSITION_LOW)\\n\\t\\t* (1.0 / (TRANSITION_HIGH - TRANSITION_LOW));\\n\\n\\t// Sample both textures and mix proportionately\\n\\tvec3 color = mix(\\n\\t\\ttexture2D(map2, vUv).rgb,\\n\\t\\ttexture2D(map1, vUv).rgb,\\n\\t\\tgrassAmount\\n\\t);\\n\\n\\tvec3 light = hdata.g * LIGHT_COLOR;\\n\\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\\n\\n\\t// If terrain is covered by grass geometry, blend color to 'dirt'\\n\\tfloat dirtFactor = 1.0 - smoothstep(grassFogFar * 0.2, grassFogFar * 0.65, depth);\\n\\t// If we're not on a grass terrain type, don't shade it...\\n\\tdirtFactor *= grassAmount;\\n\\tfloat dirtShade = (color.r + color.g + color.b) / 3.0;\\n\\n\\t// Compute terrain color\\n\\tcolor = mix(color, DIRT_COLOR * dirtShade, dirtFactor) * light;\\n\\n\\t// then apply atmosphere fog\\n\\tfloat fogFactor = smoothstep(fogNear, fogFar, depth);\\n\\tcolor = mix(color, fogColor, fogFactor);\\n\\tgl_FragColor = vec4(color, 1.0);\\n}\\n\"","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","var ResizeObserverBoxOptions;\n\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\n\nexport { ResizeObserverBoxOptions };","var resizeObservers = [];\nexport { resizeObservers };","var msg = 'ResizeObserver loop completed with undelivered notifications.';\n\nvar deliverResizeLoopError = function deliverResizeLoopError() {\n var event;\n\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n } else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n\n window.dispatchEvent(event);\n};\n\nexport { deliverResizeLoopError };","import \"core-js/modules/es6.array.for-each\";\nvar trigger;\nvar callbacks = [];\n\nvar notify = function notify() {\n return callbacks.splice(0).forEach(function (cb) {\n return cb();\n });\n};\n\nvar queueMicroTask = function queueMicroTask(callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = {\n characterData: true\n };\n new MutationObserver(function () {\n return notify();\n }).observe(el_1, config);\n\n trigger = function trigger() {\n el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++);\n };\n }\n\n callbacks.push(callback);\n trigger();\n};\n\nexport { queueMicroTask };","import \"core-js/modules/es6.date.to-json\";\nimport \"core-js/modules/es6.object.freeze\";\n\nvar DOMRectReadOnly = function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return Object.freeze(this);\n }\n\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n top = _a.top,\n right = _a.right,\n bottom = _a.bottom,\n left = _a.left,\n width = _a.width,\n height = _a.height;\n\n return {\n x: x,\n y: y,\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height\n };\n };\n\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n\n return DOMRectReadOnly;\n}();\n\nexport { DOMRectReadOnly };","var isSVG = function isSVG(target) {\n return target instanceof SVGElement && 'getBBox' in target;\n};\n\nvar isHidden = function isHidden(target) {\n if (isSVG(target)) {\n var _a = target.getBBox(),\n width = _a.width,\n height = _a.height;\n\n return !width && !height;\n }\n\n var _b = target,\n offsetWidth = _b.offsetWidth,\n offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\n\nvar isElement = function isElement(obj) {\n var _a, _b;\n\n var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\n\nvar isReplacedElement = function isReplacedElement(target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n\n return false;\n};\n\nexport { isSVG, isHidden, isElement, isReplacedElement };","export var global = typeof window !== 'undefined' ? window : {};","import \"core-js/modules/es6.object.freeze\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.weak-map\";\nimport { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\n\nvar parseDimension = function parseDimension(pixel) {\n return parseFloat(pixel || '0');\n};\n\nvar size = function size(inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) {\n inlineSize = 0;\n }\n\n if (blockSize === void 0) {\n blockSize = 0;\n }\n\n if (switchSizes === void 0) {\n switchSizes = false;\n }\n\n return Object.freeze({\n inlineSize: (switchSizes ? blockSize : inlineSize) || 0,\n blockSize: (switchSizes ? inlineSize : blockSize) || 0\n });\n};\n\nvar zeroBoxes = Object.freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\n\nvar calculateBoxSizes = function calculateBoxSizes(target, forceRecalculation) {\n if (forceRecalculation === void 0) {\n forceRecalculation = false;\n }\n\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = Object.freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\n\nvar calculateBoxSize = function calculateBoxSize(target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation),\n borderBoxSize = _a.borderBoxSize,\n contentBoxSize = _a.contentBoxSize,\n devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n\n default:\n return contentBoxSize;\n }\n};\n\nexport { calculateBoxSize, calculateBoxSizes };","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\n\nvar ResizeObserverEntry = function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = [boxes.borderBoxSize];\n this.contentBoxSize = [boxes.contentBoxSize];\n this.devicePixelContentBoxSize = [boxes.devicePixelContentBoxSize];\n }\n\n return ResizeObserverEntry;\n}();\n\nexport { ResizeObserverEntry };","import { isHidden } from '../utils/element';\n\nvar calculateDepthForNode = function calculateDepthForNode(node) {\n if (isHidden(node)) {\n return Infinity;\n }\n\n var depth = 0;\n var parent = node.parentNode;\n\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n\n return depth;\n};\n\nexport { calculateDepthForNode };","import \"core-js/modules/es6.array.for-each\";\nimport { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\n\nvar broadcastActiveObservations = function broadcastActiveObservations() {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n\n return shallowestDepth;\n};\n\nexport { broadcastActiveObservations };","import \"core-js/modules/es6.array.for-each\";\nimport { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\n\nvar gatherActiveObservationsAtDepth = function gatherActiveObservationsAtDepth(depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n } else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\n\nexport { gatherActiveObservationsAtDepth };","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\n\nvar process = function process() {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n\n return depth > 0;\n};\n\nexport { process };","import \"core-js/modules/es6.array.some\";\nimport { resizeObservers } from '../utils/resizeObservers';\n\nvar hasActiveObservations = function hasActiveObservations() {\n return resizeObservers.some(function (ro) {\n return ro.activeTargets.length > 0;\n });\n};\n\nexport { hasActiveObservations };","import \"core-js/modules/es6.array.some\";\nimport { resizeObservers } from '../utils/resizeObservers';\n\nvar hasSkippedObservations = function hasSkippedObservations() {\n return resizeObservers.some(function (ro) {\n return ro.skippedTargets.length > 0;\n });\n};\n\nexport { hasSkippedObservations };","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.date.now\";\nimport { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\n\nvar isWatching = function isWatching() {\n return !!watching;\n};\n\nvar CATCH_PERIOD = 250;\nvar observerConfig = {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n};\nvar events = ['resize', 'load', 'transitionend', 'animationend', 'animationstart', 'animationiteration', 'keyup', 'keydown', 'mouseup', 'mousedown', 'mouseover', 'mouseout', 'blur', 'focus'];\n\nvar time = function time(timeout) {\n if (timeout === void 0) {\n timeout = 0;\n }\n\n return Date.now() + timeout;\n};\n\nvar scheduled = false;\n\nvar Scheduler = function () {\n function Scheduler() {\n var _this = this;\n\n this.stopped = true;\n\n this.listener = function () {\n return _this.schedule();\n };\n }\n\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n\n if (timeout === void 0) {\n timeout = CATCH_PERIOD;\n }\n\n if (scheduled) {\n return;\n }\n\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n\n try {\n elementsHaveResized = process();\n } finally {\n scheduled = false;\n timeout = until - time();\n\n if (!isWatching()) {\n return;\n }\n\n if (elementsHaveResized) {\n _this.run(1000);\n } else if (timeout > 0) {\n _this.run(timeout);\n } else {\n _this.start();\n }\n }\n });\n };\n\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n\n Scheduler.prototype.observe = function () {\n var _this = this;\n\n var cb = function cb() {\n return _this.observer && _this.observer.observe(document.body, observerConfig);\n };\n\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n\n Scheduler.prototype.start = function () {\n var _this = this;\n\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) {\n return global.addEventListener(name, _this.listener, true);\n });\n }\n };\n\n Scheduler.prototype.stop = function () {\n var _this = this;\n\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) {\n return global.removeEventListener(name, _this.listener, true);\n });\n this.stopped = true;\n }\n };\n\n return Scheduler;\n}();\n\nvar scheduler = new Scheduler();\n\nvar updateCount = function updateCount(n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\n\nexport { scheduler, updateCount };","import { queueMicroTask } from './queueMicroTask';\n\nvar queueResizeObserver = function queueResizeObserver(cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\n\nexport { queueResizeObserver };","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\n\nvar skipNotifyOnElement = function skipNotifyOnElement(target) {\n return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === 'inline';\n};\n\nvar ResizeObservation = function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n\n if (this.lastReportedSize.inlineSize !== size.inlineSize || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n\n return false;\n };\n\n return ResizeObservation;\n}();\n\nexport { ResizeObservation };","var ResizeObserverDetail = function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n\n return ResizeObserverDetail;\n}();\n\nexport { ResizeObserverDetail };","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.weak-map\";\nimport { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\n\nvar getObservationIndex = function getObservationIndex(observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n\n return -1;\n};\n\nvar ResizeObserverController = function () {\n function ResizeObserverController() {}\n\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) {\n return _this.unobserve(resizeObserver, ot.target);\n });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n\n return ResizeObserverController;\n}();\n\nexport { ResizeObserverController };","import \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\nimport { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\n\nvar ResizeObserver = function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n\n ResizeObserverController.connect(this, callback);\n }\n\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n\n ResizeObserverController.observe(this, target, options);\n };\n\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n\n ResizeObserverController.unobserve(this, target);\n };\n\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n\n return ResizeObserver;\n}();\n\nexport { ResizeObserver };","import \"core-js/modules/es6.array.for-each\";\n\nfunction mergeRefs(refs) {\n return function (value) {\n refs.forEach(function (ref) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nexport default mergeRefs;","import \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.array.from\";\nimport \"core-js/modules/es6.array.find\";\nimport \"core-js/modules/es6.set\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.array.some\";\nimport _construct from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/construct\";\nimport _defineProperty from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.function.name\";\nimport _toArray from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/toArray\";\nimport \"core-js/modules/es6.regexp.split\";\nimport _slicedToArray from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport \"core-js/modules/es7.object.entries\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.reduce\";\nimport _toConsumableArray from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport \"core-js/modules/es7.array.includes\";\nimport \"core-js/modules/es6.string.includes\";\nimport \"core-js/modules/es6.string.starts-with\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as THREE from 'three';\nimport { Layers, Color, Texture, sRGBEncoding, Vector2, Raycaster, Scene, OrthographicCamera, PerspectiveCamera, Clock, Vector3, PCFSoftShadowMap, ACESFilmicToneMapping, WebGLRenderer } from 'three';\nimport Reconciler from 'react-reconciler';\nimport { unstable_now, unstable_runWithPriority, unstable_IdlePriority } from 'scheduler';\nimport React__default, { createContext, useState, useRef, useMemo, useCallback, useLayoutEffect, useEffect, createElement, useContext as useContext$1 } from 'react';\nimport { TinyEmitter } from 'tiny-emitter';\nimport usePromise from 'react-promise-suspense';\nimport useMeasure from 'react-use-measure';\nimport { ResizeObserver } from '@juggle/resize-observer';\nimport mergeRefs from 'react-merge-refs';\nvar version = \"4.2.21\";\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nvar roots = new Map();\nvar emptyObject = {};\nvar is = {\n obj: function obj(a) {\n return a === Object(a) && !is.arr(a);\n },\n fun: function fun(a) {\n return typeof a === 'function';\n },\n str: function str(a) {\n return typeof a === 'string';\n },\n num: function num(a) {\n return typeof a === 'number';\n },\n und: function und(a) {\n return a === void 0;\n },\n arr: function arr(a) {\n return Array.isArray(a);\n },\n equ: function equ(a, b) {\n // Wrong type or one of the two undefined, doesn't match\n if (typeof a !== typeof b || !!a !== !!b) return false; // Atomic, just compare a against b\n\n if (is.str(a) || is.num(a) || is.obj(a)) return a === b; // Array, shallow compare first to see if it's a match\n\n if (is.arr(a) && a == b) return true; // Last resort, go through keys\n\n var i;\n\n for (i in a) {\n if (!(i in b)) return false;\n }\n\n for (i in b) {\n if (a[i] !== b[i]) return false;\n }\n\n return is.und(i) ? a === b : true;\n }\n};\n\nfunction createSubs(callback, subs) {\n var index = subs.length;\n subs.push(callback);\n return function () {\n return void subs.splice(index, 1);\n };\n}\n\nvar globalEffects = [];\nvar globalAfterEffects = [];\nvar globalTailEffects = [];\n\nvar addEffect = function addEffect(callback) {\n return createSubs(callback, globalEffects);\n};\n\nvar addAfterEffect = function addAfterEffect(callback) {\n return createSubs(callback, globalAfterEffects);\n};\n\nvar addTail = function addTail(callback) {\n return createSubs(callback, globalTailEffects);\n};\n\nfunction renderGl(state, timestamp) {\n var repeat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var runGlobalEffects = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Run global effects\n if (runGlobalEffects) globalEffects.forEach(function (effect) {\n return effect(timestamp) && repeat++;\n }); // Run local effects\n\n var delta = state.current.clock.getDelta();\n state.current.subscribers.forEach(function (sub) {\n return sub.ref.current(state.current, delta);\n }); // Decrease frame count\n\n state.current.frames = Math.max(0, state.current.frames - 1);\n repeat += !state.current.invalidateFrameloop ? 1 : state.current.frames; // Render content\n\n if (!state.current.manual) state.current.gl.render(state.current.scene, state.current.camera); // Run global effects\n\n if (runGlobalEffects) globalAfterEffects.forEach(function (effect) {\n return effect(timestamp);\n });\n return repeat;\n}\n\nvar running = false;\n\nfunction renderLoop(timestamp) {\n running = true;\n var repeat = 0; // Run global effects\n\n globalEffects.forEach(function (effect) {\n return effect(timestamp) && repeat++;\n });\n roots.forEach(function (root) {\n var state = root.containerInfo.__state; // If the frameloop is invalidated, do not run another frame\n\n if (state.current.active && state.current.ready && (!state.current.invalidateFrameloop || state.current.frames > 0)) repeat = renderGl(state, timestamp, repeat);\n }); // Run global after-effects\n\n globalAfterEffects.forEach(function (effect) {\n return effect(timestamp);\n });\n if (repeat !== 0) return requestAnimationFrame(renderLoop);else {\n // Tail call effects, they are called when rendering stops\n globalTailEffects.forEach(function (effect) {\n return effect(timestamp);\n });\n } // Flag end of operation\n\n running = false;\n}\n\nfunction _invalidate() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var frames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n if (state === true) roots.forEach(function (root) {\n return root.containerInfo.__state.current.frames = frames;\n });else if (state && state.current) {\n if (state.current.vr) return;\n state.current.frames = frames;\n }\n\n if (!running) {\n running = true;\n requestAnimationFrame(renderLoop);\n }\n}\n\nvar catalogue = {};\n\nvar extend = function extend(objects) {\n return void (catalogue = _extends({}, catalogue, objects));\n};\n\nfunction applyProps(instance, newProps) {\n var oldProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var accumulative = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Filter equals, events and reserved props\n var container = instance.__container;\n var sameProps = Object.keys(newProps).filter(function (key) {\n return is.equ(newProps[key], oldProps[key]);\n });\n var handlers = Object.keys(newProps).filter(function (key) {\n // Event-handlers ...\n // are functions, that\n // start with \"on\", and\n // contain the name \"Pointer\", \"Click\", \"ContextMenu\", or \"Wheel\"\n if (is.fun(newProps[key]) && key.startsWith('on')) {\n return key.includes('Pointer') || key.includes('Click') || key.includes('ContextMenu') || key.includes('Wheel');\n }\n });\n var leftOvers = accumulative ? Object.keys(oldProps).filter(function (key) {\n return newProps[key] === void 0;\n }) : [];\n var toFilter = [].concat(_toConsumableArray(sameProps), ['children', 'key', 'ref']); // Instances use \"object\" as a reserved identifier\n\n if (instance.__instance) toFilter.push('object');\n var filteredProps = toFilter.reduce(function (acc, prop) {\n var rest = _objectWithoutPropertiesLoose(acc, [prop].map(_toPropertyKey));\n\n return rest;\n }, newProps); // Add left-overs as undefined props so they can be removed\n\n leftOvers.forEach(function (key) {\n return key !== 'children' && (filteredProps[key] = undefined);\n });\n\n if (Object.keys(filteredProps).length > 0) {\n Object.entries(filteredProps).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n key = _ref4[0],\n value = _ref4[1];\n\n if (!handlers.includes(key)) {\n var _instance$__container;\n\n var root = instance;\n var target = root[key];\n\n if (key.includes('-')) {\n var entries = key.split('-');\n target = entries.reduce(function (acc, key) {\n return acc[key];\n }, instance); // If the target is atomic, it forces us to switch the root\n\n if (!(target && target.set)) {\n var _entries$reverse = entries.reverse(),\n _entries$reverse2 = _toArray(_entries$reverse),\n name = _entries$reverse2[0],\n reverseEntries = _entries$reverse2.slice(1);\n\n root = reverseEntries.reverse().reduce(function (acc, key) {\n return acc[key];\n }, instance);\n key = name;\n }\n } // Special treatment for objects with support for set/copy\n\n\n var isColorManagement = (_instance$__container = instance.__container) == null ? void 0 : _instance$__container.__state.current.colorManagement;\n\n if (target && target.set && (target.copy || target instanceof Layers)) {\n var _target;\n\n // If value is an array it has got to be the set function\n if (Array.isArray(value)) (_target = target).set.apply(_target, _toConsumableArray(value)); // Test again target.copy(class) next ...\n else if (target.copy && value && value.constructor && target.constructor.name === value.constructor.name) target.copy(value); // If nothing else fits, just set the single value, ignore undefined\n // https://github.com/react-spring/react-three-fiber/issues/274\n else if (value !== undefined) {\n target.set(value); // Auto-convert sRGB colors, for now ...\n // https://github.com/react-spring/react-three-fiber/issues/344\n\n if (isColorManagement && target instanceof Color) {\n target.convertSRGBToLinear();\n }\n } // Else, just overwrite the value\n } else {\n root[key] = value; // Auto-convert sRGB textures, for now ...\n // https://github.com/react-spring/react-three-fiber/issues/344\n\n if (isColorManagement && root[key] instanceof Texture) {\n root[key].encoding = sRGBEncoding;\n }\n }\n\n invalidateInstance(instance);\n }\n }); // Preemptively delete the instance from the containers interaction\n\n if (accumulative && container && instance.raycast && instance.__handlers) {\n instance.__handlers = undefined;\n\n var index = container.__interaction.indexOf(instance);\n\n if (index > -1) container.__interaction.splice(index, 1);\n } // Prep interaction handlers\n\n\n if (handlers.length) {\n // Add interactive object to central container\n if (container && instance.raycast) container.__interaction.push(instance); // Add handlers to the instances handler-map\n\n instance.__handlers = handlers.reduce(function (acc, key) {\n return _extends({}, acc, _defineProperty({}, key.charAt(2).toLowerCase() + key.substr(3), newProps[key]));\n }, {});\n } // Call the update lifecycle when it is being updated, but only when it is part of the scene\n\n\n if (instance.parent) updateInstance(instance);\n }\n}\n\nfunction invalidateInstance(instance) {\n if (instance.__container && instance.__container.__state) _invalidate(instance.__container.__state);\n}\n\nfunction updateInstance(instance) {\n if (instance.onUpdate) instance.onUpdate(instance);\n}\n\nfunction createInstance(type, _ref, container, hostContext, internalInstanceHandle) {\n var _ref$args = _ref.args,\n args = _ref$args === void 0 ? [] : _ref$args,\n props = _objectWithoutPropertiesLoose(_ref, [\"args\"]);\n\n var name = \"\" + type[0].toUpperCase() + type.slice(1);\n var instance;\n\n if (type === 'primitive') {\n instance = props.object;\n instance.__instance = true;\n } else if (type === 'new') {\n instance = new props.object(args);\n } else {\n var target = catalogue[name] || THREE[name];\n\n if (!target) {\n throw \"\\\"\" + name + \"\\\" is not part of the THREE namespace! Did you forget to extend it? See: https://github.com/react-spring/react-three-fiber#using-3rd-party-non-three-namespaced-objects-in-the-scene-graph\";\n }\n\n instance = is.arr(args) ? _construct(target, _toConsumableArray(args)) : new target(args);\n } // Bind to the root container in case portals are being used\n // This is perhaps better for event management as we can keep them on a single instance\n\n\n while (container.__container) {\n container = container.__container;\n } // TODO: https://github.com/facebook/react/issues/17147\n // If it's still not there it means the portal was created on a virtual node outside of react\n\n\n if (!roots.has(container)) {\n var fn = function fn(node) {\n if (!node[\"return\"]) return node.stateNode && node.stateNode.containerInfo;else return fn(node[\"return\"]);\n };\n\n container = fn(internalInstanceHandle);\n } // Apply initial props\n\n\n instance.__objects = [];\n instance.__container = container; // It should NOT call onUpdate on object instanciation, because it hasn't been added to the\n // view yet. If the callback relies on references for instance, they won't be ready yet, this is\n // why it passes \"false\" here\n\n applyProps(instance, props, {});\n return instance;\n}\n\nfunction appendChild(parentInstance, child) {\n if (child) {\n if (child.isObject3D) parentInstance.add(child);else {\n parentInstance.__objects.push(child);\n\n child.parent = parentInstance; // The attach attribute implies that the object attaches itself on the parent\n\n if (child.attach) parentInstance[child.attach] = child;else if (child.attachArray) {\n if (!is.arr(parentInstance[child.attachArray])) parentInstance[child.attachArray] = [];\n parentInstance[child.attachArray].push(child);\n } else if (child.attachObject) {\n if (!is.obj(parentInstance[child.attachObject[0]])) parentInstance[child.attachObject[0]] = {};\n parentInstance[child.attachObject[0]][child.attachObject[1]] = child;\n }\n }\n updateInstance(child);\n invalidateInstance(child);\n }\n}\n\nfunction insertBefore(parentInstance, child, beforeChild) {\n if (child) {\n if (child.isObject3D) {\n child.parent = parentInstance;\n child.dispatchEvent({\n type: 'added'\n });\n var restSiblings = parentInstance.children.filter(function (sibling) {\n return sibling !== child;\n }); // TODO: the order is out of whack if data objects are present, has to be recalculated\n\n var index = restSiblings.indexOf(beforeChild);\n parentInstance.children = [].concat(_toConsumableArray(restSiblings.slice(0, index)), [child], _toConsumableArray(restSiblings.slice(index)));\n updateInstance(child);\n } else appendChild(parentInstance, child); // TODO: order!!!\n\n\n invalidateInstance(child);\n }\n}\n\nfunction removeRecursive(array, parent) {\n var clone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (array) {\n // Three uses splice op's internally we may have to shallow-clone the array in order to safely remove items\n var target = clone ? _toConsumableArray(array) : array;\n target.forEach(function (child) {\n return removeChild(parent, child);\n });\n }\n}\n\nfunction removeChild(parentInstance, child) {\n if (child) {\n if (child.isObject3D) {\n parentInstance.remove(child);\n } else {\n child.parent = null;\n if (parentInstance.__objects) parentInstance.__objects = parentInstance.__objects.filter(function (x) {\n return x !== child;\n }); // Remove attachment\n\n if (child.attach) parentInstance[child.attach] = null;else if (child.attachArray) parentInstance[child.attachArray] = parentInstance[child.attachArray].filter(function (x) {\n return x !== child;\n });else if (child.attachObject) {\n delete parentInstance[child.attachObject[0]][child.attachObject[1]];\n }\n }\n\n invalidateInstance(child); // Allow objects to bail out of recursive dispose alltogether by passing dispose={null}\n\n if (child.dispose !== null) {\n unstable_runWithPriority(unstable_IdlePriority, function () {\n // Remove interactivity\n if (child.__container) child.__container.__interaction = child.__container.__interaction.filter(function (x) {\n return x !== child;\n }); // Remove nested child objects\n\n removeRecursive(child.__objects, child);\n removeRecursive(child.children, child, true); // Dispose item\n\n if (child.dispose) child.dispose(); // Remove references\n\n delete child.__container;\n delete child.__objects;\n });\n }\n }\n}\n\nfunction switchInstance(instance, type, newProps, fiber) {\n var parent = instance.parent;\n var newInstance = createInstance(type, newProps, instance.__container, null, fiber);\n removeChild(parent, instance);\n appendChild(parent, newInstance) // This evil hack switches the react-internal fiber node\n // https://github.com/facebook/react/issues/14983\n // https://github.com/facebook/react/pull/15021\n ;\n [fiber, fiber.alternate].forEach(function (fiber) {\n if (fiber !== null) {\n fiber.stateNode = newInstance;\n\n if (fiber.ref) {\n if (is.fun(fiber.ref)) fiber.ref(newInstance);else fiber.ref.current = newInstance;\n }\n }\n });\n}\n\nvar Renderer = Reconciler({\n now: unstable_now,\n createInstance: createInstance,\n removeChild: removeChild,\n appendChild: appendChild,\n insertBefore: insertBefore,\n // @ts-ignore\n warnsIfNotActing: true,\n supportsMutation: true,\n isPrimaryRenderer: false,\n scheduleTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n cancelTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n // @ts-ignore\n setTimeout: is.fun(setTimeout) ? setTimeout : undefined,\n // @ts-ignore\n clearTimeout: is.fun(clearTimeout) ? clearTimeout : undefined,\n noTimeout: -1,\n appendInitialChild: appendChild,\n appendChildToContainer: appendChild,\n removeChildFromContainer: removeChild,\n insertInContainerBefore: insertBefore,\n commitUpdate: function commitUpdate(instance, updatePayload, type, oldProps, newProps, fiber) {\n if (instance.__instance && newProps.object && newProps.object !== instance) {\n // where the object reference has changed\n switchInstance(instance, type, newProps, fiber);\n } else {\n // This is a data object, let's extract critical information about it\n var _newProps$args = newProps.args,\n argsNew = _newProps$args === void 0 ? [] : _newProps$args,\n restNew = _objectWithoutPropertiesLoose(newProps, [\"args\"]);\n\n var _oldProps$args = oldProps.args,\n argsOld = _oldProps$args === void 0 ? [] : _oldProps$args,\n restOld = _objectWithoutPropertiesLoose(oldProps, [\"args\"]); // If it has new props or arguments, then it needs to be re-instanciated\n\n\n var hasNewArgs = argsNew.some(function (value, index) {\n return is.obj(value) ? Object.entries(value).some(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n key = _ref6[0],\n val = _ref6[1];\n\n return val !== argsOld[index][key];\n }) : value !== argsOld[index];\n });\n\n if (hasNewArgs) {\n // Next we create a new instance and append it again\n switchInstance(instance, type, newProps, fiber);\n } else {\n // Otherwise just overwrite props\n applyProps(instance, restNew, restOld, true);\n }\n }\n },\n hideInstance: function hideInstance(instance) {\n if (instance.isObject3D) {\n instance.visible = false;\n invalidateInstance(instance);\n }\n },\n unhideInstance: function unhideInstance(instance, props) {\n if (instance.isObject3D && props.visible == null || props.visible) {\n instance.visible = true;\n invalidateInstance(instance);\n }\n },\n hideTextInstance: function hideTextInstance() {\n throw new Error('Text is not allowed in the react-three-fibre tree. You may have extraneous whitespace between components.');\n },\n getPublicInstance: function getPublicInstance(instance) {\n return instance;\n },\n getRootHostContext: function getRootHostContext() {\n return emptyObject;\n },\n getChildHostContext: function getChildHostContext() {\n return emptyObject;\n },\n createTextInstance: function createTextInstance() {},\n finalizeInitialChildren: function finalizeInitialChildren() {\n return false;\n },\n prepareUpdate: function prepareUpdate() {\n return emptyObject;\n },\n shouldDeprioritizeSubtree: function shouldDeprioritizeSubtree() {\n return false;\n },\n prepareForCommit: function prepareForCommit() {},\n resetAfterCommit: function resetAfterCommit() {},\n shouldSetTextContent: function shouldSetTextContent() {\n return false;\n }\n});\nvar LegacyRoot = 0;\nvar ConcurrentRoot = 2;\nvar hasSymbol = is.fun(Symbol) && Symbol[\"for\"];\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol[\"for\"]('react.portal') : 0xeaca;\n\nfunction render(element, container, state) {\n var root = roots.get(container);\n\n if (!root) {\n container.__state = state;\n var newRoot = root = Renderer.createContainer(container, //@ts-ignore\n state !== undefined && state.current.concurrent ? ConcurrentRoot : LegacyRoot, false);\n roots.set(container, newRoot);\n }\n\n Renderer.updateContainer(element, root, null, function () {\n return undefined;\n });\n return Renderer.getPublicRootInstance(root);\n}\n\nfunction unmountComponentAtNode(container) {\n var root = roots.get(container);\n if (root) Renderer.updateContainer(null, root, null, function () {\n return void roots[\"delete\"](container);\n });\n}\n\nfunction createPortal(children, containerInfo, implementation) {\n var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!containerInfo.__objects) containerInfo.__objects = [];\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: key == null ? null : '' + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\n\nRenderer.injectIntoDevTools({\n bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,\n version: version,\n rendererPackageName: 'react-three-fiber',\n //@ts-ignore\n findHostInstanceByFiber: Renderer.findHostInstance\n});\n\nfunction isOrthographicCamera(def) {\n return def.isOrthographicCamera;\n}\n\nfunction makeId(event) {\n return (event.eventObject || event.object).uuid + '/' + event.index;\n}\n\nvar stateContext = createContext({});\n\nvar useCanvas = function useCanvas(props) {\n var children = props.children,\n gl = props.gl,\n camera = props.camera,\n orthographic = props.orthographic,\n raycaster = props.raycaster,\n size = props.size,\n pixelRatio = props.pixelRatio,\n _props$vr = props.vr,\n vr = _props$vr === void 0 ? false : _props$vr,\n _props$concurrent = props.concurrent,\n concurrent = _props$concurrent === void 0 ? false : _props$concurrent,\n _props$shadowMap = props.shadowMap,\n shadowMap = _props$shadowMap === void 0 ? false : _props$shadowMap,\n _props$sRGB = props.sRGB,\n sRGB = _props$sRGB === void 0 ? false : _props$sRGB,\n _props$colorManagemen = props.colorManagement,\n colorManagement = _props$colorManagemen === void 0 ? false : _props$colorManagemen,\n _props$invalidateFram = props.invalidateFrameloop,\n invalidateFrameloop = _props$invalidateFram === void 0 ? false : _props$invalidateFram,\n _props$updateDefaultC = props.updateDefaultCamera,\n updateDefaultCamera = _props$updateDefaultC === void 0 ? true : _props$updateDefaultC,\n _props$noEvents = props.noEvents,\n noEvents = _props$noEvents === void 0 ? false : _props$noEvents,\n onCreated = props.onCreated,\n onPointerMissed = props.onPointerMissed; // Local, reactive state\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n ready = _useState2[0],\n setReady = _useState2[1];\n\n var _useState3 = useState(function () {\n return new Vector2();\n }),\n _useState4 = _slicedToArray(_useState3, 1),\n mouse = _useState4[0];\n\n var _useState5 = useState(function () {\n var ray = new Raycaster();\n\n if (raycaster) {\n var raycasterProps = _objectWithoutPropertiesLoose(raycaster, [\"filter\"]);\n\n applyProps(ray, raycasterProps, {});\n }\n\n return ray;\n }),\n _useState6 = _slicedToArray(_useState5, 1),\n defaultRaycaster = _useState6[0];\n\n var _useState7 = useState(function () {\n var scene = new Scene();\n scene.__interaction = [];\n scene.__objects = [];\n return scene;\n }),\n _useState8 = _slicedToArray(_useState7, 1),\n defaultScene = _useState8[0];\n\n var _useState9 = useState(function () {\n var cam = orthographic ? new OrthographicCamera(0, 0, 0, 0, 0.1, 1000) : new PerspectiveCamera(75, 0, 0.1, 1000);\n cam.position.z = 5;\n if (camera) applyProps(cam, camera, {}); // Always look at [0, 0, 0]\n\n cam.lookAt(0, 0, 0);\n return cam;\n }),\n _useState10 = _slicedToArray(_useState9, 2),\n defaultCam = _useState10[0],\n _setDefaultCamera = _useState10[1];\n\n var _useState11 = useState(function () {\n return new Clock();\n }),\n _useState12 = _slicedToArray(_useState11, 1),\n clock = _useState12[0]; // Public state\n\n\n var state = useRef({\n ready: false,\n active: true,\n manual: 0,\n colorManagement: colorManagement,\n sRGB: sRGB,\n vr: vr,\n concurrent: concurrent,\n noEvents: noEvents,\n invalidateFrameloop: false,\n frames: 0,\n aspect: 0,\n subscribers: [],\n camera: defaultCam,\n scene: defaultScene,\n raycaster: defaultRaycaster,\n mouse: mouse,\n clock: clock,\n gl: gl,\n size: size,\n viewport: {\n width: 0,\n height: 0,\n factor: 0\n },\n initialClick: [0, 0],\n initialHits: [],\n pointer: new TinyEmitter(),\n captured: undefined,\n events: undefined,\n subscribe: function subscribe(ref) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // If this subscription was given a priority, it takes rendering into its own hands\n // For that reason we switch off automatic rendering and increase the manual flag\n // As long as this flag is positive (there could be multiple render subscription)\n // ..there can be no internal rendering at all\n if (priority) state.current.manual++;\n state.current.subscribers.push({\n ref: ref,\n priority: priority\n }); // Sort layers from lowest to highest, meaning, highest priority renders last (on top of the other frames)\n\n state.current.subscribers = state.current.subscribers.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return function () {\n // Decrease manual flag if this subscription had a priority\n if (priority) state.current.manual--;\n state.current.subscribers = state.current.subscribers.filter(function (s) {\n return s.ref !== ref;\n });\n };\n },\n setDefaultCamera: function setDefaultCamera(camera) {\n return _setDefaultCamera(camera);\n },\n invalidate: function invalidate() {\n return _invalidate(state);\n },\n intersect: function intersect() {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var prepare = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return handlePointerMove(event, prepare);\n }\n }); // Writes locals into public state for distribution among subscribers, context, etc\n\n useMemo(function () {\n state.current.ready = ready;\n state.current.size = size;\n state.current.camera = defaultCam;\n state.current.invalidateFrameloop = invalidateFrameloop;\n state.current.vr = vr;\n state.current.gl = gl;\n state.current.concurrent = concurrent;\n state.current.noEvents = noEvents;\n }, [invalidateFrameloop, vr, concurrent, noEvents, ready, size, defaultCam, gl]); // Adjusts default camera\n\n useMemo(function () {\n state.current.aspect = size.width / size.height;\n\n if (isOrthographicCamera(defaultCam)) {\n state.current.viewport = {\n width: size.width,\n height: size.height,\n factor: 1\n };\n } else {\n var target = new Vector3(0, 0, 0);\n var distance = defaultCam.position.distanceTo(target);\n var fov = defaultCam.fov * Math.PI / 180; // convert vertical fov to radians\n\n var height = 2 * Math.tan(fov / 2) * distance; // visible height\n\n var width = height * state.current.aspect;\n state.current.viewport = {\n width: width,\n height: height,\n factor: size.width / width\n };\n } // #92 (https://github.com/drcmda/react-three-fiber/issues/92)\n // Sometimes automatic default camera adjustment isn't wanted behaviour\n\n\n if (updateDefaultCamera) {\n if (isOrthographicCamera(defaultCam)) {\n defaultCam.left = size.width / -2;\n defaultCam.right = size.width / 2;\n defaultCam.top = size.height / 2;\n defaultCam.bottom = size.height / -2;\n } else {\n defaultCam.aspect = state.current.aspect;\n }\n\n defaultCam.updateProjectionMatrix(); // #178: https://github.com/react-spring/react-three-fiber/issues/178\n // Update matrix world since the renderer is a frame late\n\n defaultCam.updateMatrixWorld();\n }\n\n gl.setSize(size.width, size.height);\n if (ready) _invalidate(state);\n }, [defaultCam, gl, size, updateDefaultCamera]);\n /** Events ------------------------------------------------------------------------------------------------ */\n\n /** Sets up defaultRaycaster */\n\n var prepareRay = useCallback(function (_ref7) {\n var clientX = _ref7.clientX,\n clientY = _ref7.clientY;\n\n if (clientX !== void 0) {\n var _state$current$size = state.current.size,\n left = _state$current$size.left,\n right = _state$current$size.right,\n top = _state$current$size.top,\n bottom = _state$current$size.bottom;\n mouse.set((clientX - left) / (right - left) * 2 - 1, -((clientY - top) / (bottom - top)) * 2 + 1);\n defaultRaycaster.setFromCamera(mouse, state.current.camera);\n }\n }, []);\n /** Intersects interaction objects using the event input */\n\n var intersect = useCallback(function (event, filter) {\n // Skip event handling when noEvents is set\n if (state.current.noEvents) return [];\n var seen = new Set();\n var hits = []; // Allow callers to eliminate event objects\n\n var eventsObjects = filter ? filter(state.current.scene.__interaction) : state.current.scene.__interaction; // Intersect known handler objects and filter against duplicates\n\n var intersects = defaultRaycaster.intersectObjects(eventsObjects, true).filter(function (item) {\n var id = makeId(item);\n if (seen.has(id)) return false;\n seen.add(id);\n return true;\n }); // #16031: (https://github.com/mrdoob/three.js/issues/16031)\n // Allow custom userland intersect sort order\n\n if (raycaster && raycaster.filter && sharedState.current) {\n intersects = raycaster.filter(intersects, sharedState.current);\n }\n\n var _iterator = _createForOfIteratorHelper(intersects),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _intersect = _step.value;\n var eventObject = _intersect.object; // Bubble event up\n\n while (eventObject) {\n var handlers = eventObject.__handlers;\n if (handlers) hits.push(_extends({}, _intersect, {\n eventObject: eventObject\n }));\n eventObject = eventObject.parent;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return hits;\n }, []);\n /** Calculates click deltas */\n\n var calculateDistance = useCallback(function (event) {\n var dx = event.clientX - state.current.initialClick[0];\n var dy = event.clientY - state.current.initialClick[1];\n return Math.round(Math.sqrt(dx * dx + dy * dy));\n }, []);\n var hovered = useMemo(function () {\n return new Map();\n }, []);\n /** Handles intersections by forwarding them to handlers */\n\n var temp = new Vector3();\n var handleIntersects = useCallback(function (event, fn, filter) {\n // Get fresh intersects\n var intersections = intersect(event, filter); // If the interaction is captured take that into account, the captured event has to be part of the intersects\n\n if (state.current.captured && event.type !== 'click' && event.type !== 'wheel') {\n state.current.captured.forEach(function (captured) {\n if (!intersections.find(function (hit) {\n return hit.eventObject === captured.eventObject;\n })) intersections.push(captured);\n });\n } // If anything has been found, forward it to the event listeners\n\n\n if (intersections.length) {\n (function () {\n var unprojectedPoint = temp.set(mouse.x, mouse.y, 0).unproject(state.current.camera);\n var delta = event.type === 'click' ? calculateDistance(event) : 0;\n\n var releasePointerCapture = function releasePointerCapture(id) {\n return event.target.releasePointerCapture(id);\n };\n\n var localState = {\n stopped: false,\n captured: false\n };\n\n var _iterator2 = _createForOfIteratorHelper(intersections),\n _step2;\n\n try {\n var _loop = function _loop() {\n var hit = _step2.value;\n\n var setPointerCapture = function setPointerCapture(id) {\n // If the hit is going to be captured flag that we're in captured state\n if (!localState.captured) {\n localState.captured = true; // The captured hit array is reset to collect hits\n\n state.current.captured = [];\n } // Push hits to the array\n\n\n if (state.current.captured) {\n state.current.captured.push(hit);\n } // Call the original event now\n\n\n event.target.setPointerCapture(id);\n };\n\n var raycastEvent = _extends({}, event, hit, {\n intersections: intersections,\n stopped: localState.stopped,\n delta: delta,\n unprojectedPoint: unprojectedPoint,\n ray: defaultRaycaster.ray,\n camera: state.current.camera,\n // Hijack stopPropagation, which just sets a flag\n stopPropagation: function stopPropagation() {\n // https://github.com/react-spring/react-three-fiber/issues/596\n // Events are not allowed to stop propagation if the pointer has been captured\n var cap = state.current.captured;\n\n if (!cap || cap.find(function (h) {\n return h.eventObject.id === hit.eventObject.id;\n })) {\n raycastEvent.stopped = localState.stopped = true;\n }\n },\n // Pointer-capture needs the hit, on which the user may call stopPropagation()\n // This makes it harder to use the actual event, because then we loose the connection\n // to the actual hit, which would mean it's picking up all intersects ...\n target: _extends({}, event.target, {\n setPointerCapture: setPointerCapture,\n releasePointerCapture: releasePointerCapture\n }),\n currentTarget: _extends({}, event.currentTarget, {\n setPointerCapture: setPointerCapture,\n releasePointerCapture: releasePointerCapture\n }),\n sourceEvent: event\n });\n\n fn(raycastEvent);\n\n if (localState.stopped === true) {\n // Propagation is stopped, remove all other hover records\n // An event handler is only allowed to flush other handlers if it is hovered itself\n if (hovered.size && Array.from(hovered.values()).find(function (i) {\n return i.object === hit.object;\n })) {\n handlePointerCancel(raycastEvent, [hit]);\n }\n\n return \"break\";\n }\n };\n\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n })();\n }\n\n return intersections;\n }, []);\n var handlePointerMove = useCallback(function (event) {\n var prepare = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n state.current.pointer.emit('pointerMove', event);\n if (prepare) prepareRay(event);\n var hits = handleIntersects(event, function (data) {\n var eventObject = data.eventObject;\n var handlers = eventObject.__handlers; // Check presence of handlers\n\n if (!handlers) return; // Call mouse move\n\n if (handlers.pointerMove) handlers.pointerMove(data); // Check if mouse enter or out is present\n\n if (handlers.pointerOver || handlers.pointerEnter || handlers.pointerOut || handlers.pointerLeave) {\n var id = makeId(data);\n var hoveredItem = hovered.get(id);\n\n if (!hoveredItem) {\n // If the object wasn't previously hovered, book it and call its handler\n hovered.set(id, data);\n if (handlers.pointerOver) handlers.pointerOver(_extends({}, data, {\n type: 'pointerover'\n }));\n if (handlers.pointerEnter) handlers.pointerEnter(_extends({}, data, {\n type: 'pointerenter'\n }));\n } else if (hoveredItem.stopped) {\n // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n data.stopPropagation();\n }\n }\n }, // This is onPointerMove, we're only interested in events that exhibit this particular event\n function (objects) {\n return objects.filter(function (obj) {\n return ['Move', 'Over', 'Enter', 'Out', 'Leave'].some(function (name) {\n return obj.__handlers['pointer' + name];\n });\n });\n }); // Take care of unhover\n\n handlePointerCancel(event, hits, prepare);\n return hits;\n }, []);\n var handlePointerCancel = useCallback(function (event, hits) {\n var prepare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n state.current.pointer.emit('pointerCancel', event);\n if (prepare) prepareRay(event);\n if (!hits) hits = handleIntersects(event, function () {\n return null;\n });\n Array.from(hovered.values()).forEach(function (data) {\n // When no objects were hit or the the hovered object wasn't found underneath the cursor\n // we call onPointerOut and delete the object from the hovered-elements map\n if (hits && (!hits.length || !hits.find(function (i) {\n return i.eventObject === data.eventObject;\n }))) {\n var eventObject = data.eventObject;\n var handlers = eventObject.__handlers;\n\n if (handlers) {\n if (handlers.pointerOut) handlers.pointerOut(_extends({}, data, {\n type: 'pointerout'\n }));\n if (handlers.pointerLeave) handlers.pointerLeave(_extends({}, data, {\n type: 'pointerleave'\n }));\n }\n\n hovered[\"delete\"](makeId(data));\n }\n });\n }, []);\n var handlePointer = useCallback(function (name) {\n return function (event) {\n var prepare = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n state.current.pointer.emit(name, event);\n if (prepare) prepareRay(event);\n var hits = handleIntersects(event, function (data) {\n var eventObject = data.eventObject;\n var handlers = eventObject.__handlers;\n\n if (handlers && handlers[name]) {\n // Forward all events back to their respective handlers with the exception of click events,\n // which must use the initial target\n if (name !== 'click' && name !== 'contextMenu' && name !== 'doubleClick' || state.current.initialHits.includes(eventObject)) {\n handlers[name](data);\n }\n }\n }); // If a click yields no results, pass it back to the user as a miss\n\n if (name === 'pointerDown') {\n state.current.initialClick = [event.clientX, event.clientY];\n state.current.initialHits = hits.map(function (hit) {\n return hit.eventObject;\n });\n }\n\n if ((name === 'click' || name === 'contextMenu' || name === 'doubleClick') && !hits.length && onPointerMissed) {\n if (calculateDistance(event) <= 2) onPointerMissed();\n }\n };\n }, [onPointerMissed]);\n useMemo(function () {\n state.current.events = {\n onClick: handlePointer('click'),\n onContextMenu: handlePointer('contextMenu'),\n onDoubleClick: handlePointer('doubleClick'),\n onWheel: handlePointer('wheel'),\n onPointerDown: handlePointer('pointerDown'),\n onPointerUp: handlePointer('pointerUp'),\n onPointerLeave: function onPointerLeave(e) {\n return handlePointerCancel(e, []);\n },\n onPointerMove: handlePointerMove,\n // onGotPointerCapture is not needed any longer because the behaviour is hacked into\n // the event itself (see handleIntersects). But in order for non-web targets to simulate\n // it we keep the legacy event, which simply flags all current intersects as captured\n onGotPointerCaptureLegacy: function onGotPointerCaptureLegacy(e) {\n return state.current.captured = intersect(e);\n },\n onLostPointerCapture: function onLostPointerCapture(e) {\n return state.current.captured = undefined, handlePointerCancel(e);\n }\n };\n }, [onPointerMissed]);\n /** Events ------------------------------------------------------------------------------------------------- */\n // Only trigger the context provider when necessary\n\n var sharedState = useRef();\n useMemo(function () {\n var _state$current = state.current,\n props = _objectWithoutPropertiesLoose(_state$current, [\"ready\", \"manual\", \"vr\", \"noEvents\", \"invalidateFrameloop\", \"frames\", \"subscribers\", \"captured\", \"initialClick\", \"initialHits\"]);\n\n sharedState.current = props;\n }, [size, defaultCam]); // Update pixel ratio\n\n useLayoutEffect(function () {\n return void (pixelRatio && gl.setPixelRatio(pixelRatio));\n }, [pixelRatio]); // Update shadow map\n\n useLayoutEffect(function () {\n if (shadowMap) {\n gl.shadowMap.enabled = true;\n if (typeof shadowMap === 'object') Object.assign(gl.shadowMap, shadowMap);else gl.shadowMap.type = PCFSoftShadowMap;\n }\n\n if (sRGB || colorManagement) {\n gl.toneMapping = ACESFilmicToneMapping;\n gl.outputEncoding = sRGBEncoding;\n }\n }, [shadowMap, sRGB, colorManagement]); // This component is a bridge into the three render context, when it gets rendered\n // we know we are ready to compile shaders, call subscribers, etc\n\n var Canvas = useCallback(function Canvas(props) {\n var activate = function activate() {\n return setReady(true);\n }; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n\n useEffect(function () {\n var result = onCreated && onCreated(state.current);\n return void (result && result.then ? result.then(activate) : activate());\n }, []);\n return props.children;\n }, []); // Render v-dom into scene\n\n useLayoutEffect(function () {\n render( /*#__PURE__*/createElement(Canvas, null, /*#__PURE__*/createElement(stateContext.Provider, {\n value: sharedState.current\n }, typeof children === 'function' ? children(state.current) : children)), defaultScene, state);\n }, [ready, children, sharedState.current]);\n useLayoutEffect(function () {\n if (ready) {\n // Start render-loop, either via RAF or setAnimationLoop for VR\n if (!state.current.vr) {\n _invalidate(state);\n } else if ((gl.xr || gl.vr) && gl.setAnimationLoop) {\n (gl.xr || gl.vr).enabled = true;\n gl.setAnimationLoop(function (t) {\n return renderGl(state, t, 0, true);\n });\n } else console.warn('the gl instance does not support VR!');\n }\n }, [ready, invalidateFrameloop]); // Dispose renderer on unmount\n\n useEffect(function () {\n return function () {\n if (state.current.gl) {\n if (state.current.gl.forceContextLoss) state.current.gl.forceContextLoss();\n if (state.current.gl.dispose) state.current.gl.dispose();\n state.current.gl = undefined;\n unmountComponentAtNode(state.current.scene);\n state.current.active = false;\n }\n };\n }, []);\n return state.current.events;\n};\n\nfunction useContext(context) {\n var result = useContext$1(context);\n\n if (!result) {\n console.warn('hooks can only be used within the canvas! https://github.com/react-spring/react-three-fiber#hooks');\n }\n\n return result;\n}\n\nfunction useFrame(callback) {\n var renderPriority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var _useContext = useContext(stateContext),\n subscribe = _useContext.subscribe; // Update ref\n\n\n var ref = useRef(callback);\n useLayoutEffect(function () {\n return void (ref.current = callback);\n }, [callback]); // Subscribe/unsub\n\n useEffect(function () {\n var unsubscribe = subscribe(ref, renderPriority);\n return function () {\n return unsubscribe();\n };\n }, [renderPriority]);\n return null;\n}\n\nfunction useThree() {\n return useContext(stateContext);\n}\n\nfunction useUpdate(callback, dependents, optionalRef) {\n var _useContext2 = useContext(stateContext),\n invalidate = _useContext2.invalidate;\n\n var localRef = useRef();\n var ref = optionalRef ? optionalRef : localRef;\n useLayoutEffect(function () {\n if (ref.current) {\n callback(ref.current);\n invalidate();\n }\n }, dependents);\n return ref;\n}\n\nfunction useResource(optionalRef) {\n var _useState13 = useState(false),\n _useState14 = _slicedToArray(_useState13, 2),\n _ = _useState14[0],\n forceUpdate = _useState14[1];\n\n var localRef = useRef(undefined);\n var ref = optionalRef ? optionalRef : localRef;\n useLayoutEffect(function () {\n return void forceUpdate(function (i) {\n return !i;\n });\n }, [ref.current]);\n return [ref, ref.current];\n}\n\nvar blackList = ['id', 'uuid', 'type', 'children', 'parent', 'matrix', 'matrixWorld', 'matrixWorldNeedsUpdate', 'modelViewMatrix', 'normalMatrix'];\n\nfunction prune(props) {\n var reducedProps = _extends({}, props); // Remove black listed props\n\n\n blackList.forEach(function (name) {\n return delete reducedProps[name];\n }); // Remove functions\n\n Object.keys(reducedProps).forEach(function (name) {\n return typeof reducedProps[name] === 'function' && delete reducedProps[name];\n }); // Prune materials and geometries\n\n if (reducedProps.material) reducedProps.material = prune(reducedProps.material);\n if (reducedProps.geometry) reducedProps.geometry = prune(reducedProps.geometry); // Return cleansed object\n\n return reducedProps;\n}\n\nfunction useLoader(Proto, url, extensions) {\n var loader = useMemo(function () {\n // Construct new loader\n var temp = new Proto(); // Run loader extensions\n\n if (extensions) extensions(temp);\n return temp;\n }, [Proto]); // Use suspense to load async assets\n\n var results = usePromise(function (Proto, url) {\n var urlArray = Array.isArray(url) ? url : [url];\n return Promise.all(urlArray.map(function (url) {\n return new Promise(function (res) {\n return loader.load(url, function (data) {\n if (data.scene) {\n // This has to be deprecated at some point!\n data.__$ = []; // Nodes and materials are better\n\n data.nodes = {};\n data.materials = {};\n data.scene.traverse(function (obj) {\n data.__$.push(prune(obj));\n\n if (obj.name) data.nodes = _extends({}, data.nodes, _defineProperty({}, obj.name, obj));\n if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n });\n }\n\n res(data);\n });\n });\n }));\n }, [Proto, url]); // Return the object/s\n\n return Array.isArray(url) ? results : results[0];\n}\n\nvar useCamera = function useCamera() {\n console.warn('The useCamera hook was moved to: https://github.com/react-spring/drei');\n return null;\n};\n\nvar defaultStyles = {\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n};\n\nfunction Content(_ref) {\n var children = _ref.children,\n setEvents = _ref.setEvents,\n container = _ref.container,\n renderer = _ref.renderer,\n effects = _ref.effects,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"setEvents\", \"container\", \"renderer\", \"effects\"]); // Create renderer\n\n\n var _useState15 = useState(renderer),\n _useState16 = _slicedToArray(_useState15, 1),\n gl = _useState16[0];\n\n if (!gl) console.warn('No renderer created!'); // Mount and unmount managemenbt\n\n useEffect(function () {\n return effects && effects(gl, container);\n }, []); // Init canvas, fetch events, hand them back to the wrapping div\n\n var events = useCanvas(_extends({}, props, {\n children: children,\n gl: gl\n }));\n useEffect(function () {\n return void setEvents(events);\n }, [events]);\n return null;\n}\n\nvar ResizeContainer = React__default.memo(function ResizeContainer(props) {\n var preRender = props.preRender,\n resize = props.resize,\n style = props.style,\n restSpread = _objectWithoutPropertiesLoose(props, [\"renderer\", \"effects\", \"children\", \"vr\", \"gl2\", \"concurrent\", \"shadowMap\", \"sRGB\", \"colorManagement\", \"orthographic\", \"invalidateFrameloop\", \"updateDefaultCamera\", \"noEvents\", \"gl\", \"camera\", \"raycaster\", \"pixelRatio\", \"onCreated\", \"onPointerMissed\", \"preRender\", \"resize\", \"style\"]);\n\n var containerRef = useRef(); // onGotPointerCaptureLegacy is a fake event used by non-web targets to simulate poinzter capture\n\n var _useState17 = useState({}),\n _useState18 = _slicedToArray(_useState17, 2),\n _ref2 = _useState18[0],\n setEvents = _useState18[1];\n\n var events = _objectWithoutPropertiesLoose(_ref2, [\"onGotPointerCaptureLegacy\"]);\n\n var _useMeasure = useMeasure(resize || {\n scroll: true,\n debounce: {\n scroll: 50,\n resize: 0\n },\n polyfill: typeof window === 'undefined' || !window.ResizeObserver ? ResizeObserver : undefined\n }),\n _useMeasure2 = _slicedToArray(_useMeasure, 2),\n bind = _useMeasure2[0],\n size = _useMeasure2[1]; // Flag view ready once it's been measured out\n\n\n var readyFlag = useRef(false);\n var ready = useMemo(function () {\n return readyFlag.current = readyFlag.current || !!size.width && !!size.height;\n }, [size]);\n var state = useMemo(function () {\n return {\n size: size,\n setEvents: setEvents,\n container: containerRef.current\n };\n }, [size]); // Allow Gatsby, Next and other server side apps to run. Will output styles to reduce flickering.\n\n if (typeof window === 'undefined') return /*#__PURE__*/React__default.createElement(\"div\", _extends({\n style: _extends({}, defaultStyles, style)\n }, restSpread), preRender); // Render the canvas into the dom\n\n return /*#__PURE__*/React__default.createElement(\"div\", _extends({\n ref: mergeRefs([bind, containerRef]),\n style: _extends({}, defaultStyles, style)\n }, events, restSpread), preRender, ready && /*#__PURE__*/React__default.createElement(Content, _extends({}, props, state)));\n});\nvar Canvas = React__default.memo(function Canvas(_ref) {\n var children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n var canvasRef = useRef();\n return /*#__PURE__*/React__default.createElement(ResizeContainer, _extends({}, props, {\n renderer: function renderer() {\n if (canvasRef.current) {\n var params = _extends({\n antialias: true,\n alpha: true\n }, props.gl);\n\n var temp = new WebGLRenderer(_extends({\n powerPreference: 'high-performance',\n //stencil: false,\n //depth: false,\n canvas: canvasRef.current,\n context: props.gl2 ? canvasRef.current.getContext('webgl2', params) : undefined\n }, params));\n return temp;\n }\n },\n preRender: /*#__PURE__*/React__default.createElement(\"canvas\", {\n ref: canvasRef,\n style: {\n display: 'block'\n }\n })\n }), children);\n});\n\nvar Dom = function Dom() {\n console.warn('The experimental component was renamed to and moved to: https://github.com/react-spring/drei');\n return null;\n};\n\nexport { Canvas, Dom, Renderer, addAfterEffect, addEffect, addTail, applyProps, createPortal, extend, _invalidate as invalidate, isOrthographicCamera, render, renderGl, stateContext, unmountComponentAtNode, useCamera, useCanvas, useFrame, useLoader, useResource, useThree, useUpdate };","/**\n * Simple underwater shader\n *\n\n parameters:\n tDiffuse: texture\n time: this should increase with time passing\n distort_speed: how fast you want the distortion effect of water to proceed\n distortion: to what degree will the shader distort the screen\n centerX: the distortion center X coord\n centerY: the distortion center Y coord\n\n explaination:\n the shader is quite simple\n it chooses a center and start from there make pixels around it to \"swell\" then \"shrink\" then \"swell\"...\n this is of course nothing really similar to underwater scene\n but you can combine several this shaders together to create the effect you need...\n And yes, this shader could be used for something other than underwater effect, for example, magnifier effect :)\n\n * @author vergil Wang\n */\n\nimport { Mesh, OrthographicCamera, PlaneBufferGeometry, Scene, ShaderMaterial, UniformsUtils, Vector2 } from 'three'\nimport { Pass } from 'three/examples/jsm/postprocessing/Pass'\n\nvar WaterShader = {\n uniforms: {\n byp: { value: 0 }, //apply the glitch ?\n texture: { type: 't', value: null },\n time: { type: 'f', value: 0.0 },\n factor: { type: 'f', value: 0.0 },\n resolution: { type: 'v2', value: null }\n },\n\n vertexShader: `varying vec2 vUv;\n void main(){\n vUv = uv;\n vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewPosition;\n }`,\n\n fragmentShader: `uniform int byp; //should we apply the glitch ?\n uniform float time;\n uniform float factor;\n uniform vec2 resolution;\n uniform sampler2D texture;\n\n varying vec2 vUv;\n\n void main() {\n if (byp<1) {\n vec2 uv1 = vUv;\n vec2 uv = gl_FragCoord.xy/resolution.xy;\n float frequency = 6.0;\n float amplitude = 0.015 * factor;\n float x = uv1.y * frequency + time * .7;\n float y = uv1.x * frequency + time * .3;\n uv1.x += cos(x+y) * amplitude * cos(y);\n uv1.y += sin(x-y) * amplitude * cos(y);\n vec4 rgba = texture2D(texture, uv1);\n gl_FragColor = rgba;\n } else {\n gl_FragColor = texture2D(texture, vUv);\n }\n }`\n}\n\nvar WaterPass = function(dt_size) {\n\n if (WaterShader === undefined) console.error('THREE.WaterPass relies on THREE.WaterShader')\n var shader = WaterShader\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n if (dt_size === undefined) dt_size = 64\n this.uniforms['resolution'].value = new Vector2(dt_size, dt_size)\n this.material = new ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader\n })\n this.camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n this.scene = new Scene()\n this.quad = new Mesh(new PlaneBufferGeometry(2, 2), null)\n this.quad.frustumCulled = false // Avoid getting clipped\n this.scene.add(this.quad)\n this.factor = 0\n this.time = 0\n}\n\nWaterPass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: WaterPass,\n\n render: function(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {\n const factor = Math.max(0, this.factor)\n this.uniforms['byp'].value = factor ? 0 : 1\n this.uniforms['texture'].value = readBuffer.texture\n this.uniforms['time'].value = this.time\n this.uniforms['factor'].value = this.factor\n this.time += 0.05\n this.quad.material = this.material\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n renderer.render(this.scene, this.camera)\n } else {\n renderer.setRenderTarget(writeBuffer)\n if (this.clear) renderer.clear()\n renderer.render(this.scene, this.camera)\n }\n }\n})\n\nexport { WaterPass }\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-reconciler.production.min.js');\n} else {\n module.exports = require('./cjs/react-reconciler.development.js');\n}","module.exports = __webpack_public_path__ + \"static/foam_normal-a9886e306b91fdb6ed07207043a59b1b.jpg\";","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default \"// LICENSE: MIT\\n// Copyright (c) 2017 by Mike Linkovich\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\n#define PI 3.141592654\\n\\nuniform sampler2D map;\\nuniform float waterLevel;\\nuniform vec3 viewPos;\\nuniform float time;\\nuniform vec3 waterColor;\\nuniform vec3 fogColor;\\nuniform float fogNear;\\nuniform float fogFar;\\n\\nvarying vec3 vSurfacePos;\\n\\nvoid main() {\\n\\t// Get the direction from camera through this point on the surface of the water.\\n\\t// Then project that on to an upside-down skydome to get the UV from the skydome texture.\\n\\t// X & Y of plane are moving with viewer, so we only need Z difference to get dir.\\n\\tvec3 viewDir = normalize(vec3(vSurfacePos.xy, waterLevel - viewPos.z));\\n\\n\\tvec2 uv = vec2(\\n\\t\\t// horizontal angle converted to a texcoord between 0.0 and 1.0\\n\\t\\tatan(viewDir.y, viewDir.x) / (PI * 2.0),\\n\\t\\t// down angle converted to V tex coord between 0.0 and 1.0\\n\\t\\tasin(-viewDir.z) / (PI / 2.0)\\n\\t);\\n\\n\\t// wave distortion\\n\\tfloat distortScale = 1.0 / length(vSurfacePos - viewPos);\\n\\tvec2 distort = vec2(\\n\\t\\tcos((vSurfacePos.x - viewPos.x) / 1.5 + time) + sin((vSurfacePos.y - viewPos.y) / 1.5 + time),\\n\\t\\t0.0\\n\\t) * distortScale;\\n\\tuv += distort;\\n\\n\\t// Now we can sample the env map\\n\\tvec4 color = texture2D(map, uv);\\n\\n\\t// Mix with water colour\\n\\tcolor.rgb = color.rgb * waterColor;\\n\\n\\t// Apply fog\\n\\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\\n\\tfloat fogFactor = smoothstep(fogNear, fogFar, depth);\\n\\tcolor.rgb = mix(color.rgb, fogColor, fogFactor);\\n\\tgl_FragColor = color;\\n}\\n\"","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar ObserverMap = new Map();\nvar RootIds = new Map();\nvar rootId = 0;\n/**\r\n * Generate a unique ID for the root element\r\n * @param root\r\n */\n\nfunction getRootId(root) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n/**\r\n * Convert the options to a string Id, based on the values.\r\n * Ensures we can reuse the same observer when observing elements with the same options.\r\n * @param options\r\n */\n\n\nfunction optionsToId(options) {\n return Object.keys(options).filter(Boolean).sort().map(function (key) {\n return key + \"_\" + (key === 'root' ? getRootId(options.root) : options[key]);\n }).toString();\n}\n\nfunction createObserver(options) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n var id = optionsToId(options);\n var instance = ObserverMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n var elements = new Map();\n var observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var _elements$get; // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n\n\n var inView = entry.isIntersecting && observer.thresholds.some(function (threshold) {\n return entry.intersectionRatio >= threshold;\n }); // @ts-ignore support IntersectionObserver v2\n\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n (_elements$get = elements.get(entry.target)) == null ? void 0 : _elements$get.forEach(function (callback) {\n callback(inView, entry);\n });\n });\n }, options);\n instance = {\n id: id,\n observer: observer,\n elements: elements\n };\n ObserverMap.set(id, instance);\n }\n\n return instance;\n}\n\nfunction observe(element, callback, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!element) return function () {}; // An observer with the same options can be reused, so lets use this fact\n\n var _createObserver = createObserver(options),\n id = _createObserver.id,\n observer = _createObserver.observer,\n elements = _createObserver.elements; // Register the callback listener for this element\n\n\n var callbacks = elements.get(element) || [];\n\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements[\"delete\"](element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n ObserverMap[\"delete\"](id);\n }\n };\n}\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\r\n * Monitors scroll, and triggers the children function with updated props\r\n */\n\n\nvar InView = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InView, _React$Component);\n\n function InView(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.node = null;\n _this._unobserveCb = null;\n\n _this.handleNode = function (node) {\n if (_this.node) {\n // Clear the old observer, before we start observing a new element\n _this.unobserve();\n\n if (!node && !_this.props.triggerOnce && !_this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n _this.setState({\n inView: !!_this.props.initialInView,\n entry: undefined\n });\n }\n }\n\n _this.node = node ? node : null;\n\n _this.observeNode();\n };\n\n _this.handleChange = function (inView, entry) {\n if (inView && _this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n _this.unobserve();\n }\n\n if (!isPlainChildren(_this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n _this.setState({\n inView: inView,\n entry: entry\n });\n }\n\n if (_this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n _this.props.onChange(inView, entry);\n }\n };\n\n _this.state = {\n inView: !!props.initialInView,\n entry: undefined\n };\n return _this;\n }\n\n var _proto = InView.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unobserve();\n this.node = null;\n };\n\n _proto.observeNode = function observeNode() {\n if (!this.node || this.props.skip) return;\n var _this$props = this.props,\n threshold = _this$props.threshold,\n root = _this$props.root,\n rootMargin = _this$props.rootMargin,\n trackVisibility = _this$props.trackVisibility,\n delay = _this$props.delay;\n this._unobserveCb = observe(this.node, this.handleChange, {\n threshold: threshold,\n root: root,\n rootMargin: rootMargin,\n // @ts-ignore\n trackVisibility: trackVisibility,\n // @ts-ignore\n delay: delay\n });\n };\n\n _proto.unobserve = function unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n\n this._unobserveCb = null;\n }\n };\n\n _proto.render = function render() {\n if (!isPlainChildren(this.props)) {\n var _this$state = this.state,\n inView = _this$state.inView,\n entry = _this$state.entry;\n return this.props.children({\n inView: inView,\n entry: entry,\n ref: this.handleNode\n });\n }\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n as = _this$props2.as,\n tag = _this$props2.tag,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"as\", \"tag\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\", \"onChange\", \"skip\", \"trackVisibility\", \"delay\", \"initialInView\"]);\n\n return /*#__PURE__*/createElement(as || tag || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n };\n\n return InView;\n}(Component);\n\nInView.displayName = 'InView';\nInView.defaultProps = {\n threshold: 0,\n triggerOnce: false,\n initialInView: false\n};\n\nfunction useInView(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n threshold = _ref.threshold,\n delay = _ref.delay,\n trackVisibility = _ref.trackVisibility,\n rootMargin = _ref.rootMargin,\n root = _ref.root,\n triggerOnce = _ref.triggerOnce,\n skip = _ref.skip,\n initialInView = _ref.initialInView;\n\n var unobserve = useRef();\n\n var _React$useState = useState({\n inView: !!initialInView\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var setRef = useCallback(function (node) {\n if (unobserve.current !== undefined) {\n unobserve.current();\n unobserve.current = undefined;\n } // Skip creating the observer\n\n\n if (skip) return;\n\n if (node) {\n unobserve.current = observe(node, function (inView, entry) {\n setState({\n inView: inView,\n entry: entry\n });\n\n if (entry.isIntersecting && triggerOnce && unobserve.current) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve.current();\n unobserve.current = undefined;\n }\n }, {\n root: root,\n rootMargin: rootMargin,\n threshold: threshold,\n // @ts-ignore\n trackVisibility: trackVisibility,\n // @ts-ignore\n delay: delay\n });\n }\n }, [threshold, root, rootMargin, triggerOnce, skip, trackVisibility, delay]);\n /* eslint-disable-next-line */\n\n useEffect(function () {\n if (!unobserve.current && state.entry && !triggerOnce && !skip) {\n // If we don't have a ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n setState({\n inView: !!initialInView\n });\n }\n });\n var result = [setRef, state.inView, state.entry]; // Support object destructuring, by adding the specific values.\n\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\nexport default InView;\nexport { InView, useInView };","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","export default \"#define GLSLIFY 1\\nvarying vec2 vUv;\\n void main(){\\n vUv = uv;\\n vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\\n gl_Position = projectionMatrix * modelViewPosition;\\n }\\n\"","module.exports = __webpack_public_path__ + \"static/water-73c30606c9c08a7e3d9a990c72f4de22.jpg\";","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","module.exports = __webpack_public_path__ + \"static/skyenv-8a63ae9d9949cda5b75a2d1c6fa2c4c1.jpg\";","module.exports = __webpack_public_path__ + \"static/sky2env-6806be716a60570b143fdec1c35a9308.jpg\";","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","module.exports = \"data:image/jpeg;base64,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\"","import superPropBase from \"./superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import colors from './colors.json'\n\nexport default {\n colors,\n}\n","export default \"#define GLSLIFY 1\\nvarying vec2 vUv;\\n void main(){\\n vUv = uv;\\n vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\\n gl_Position = projectionMatrix * modelViewPosition;\\n }\\n\"","import React, { forwardRef , useEffect, useRef } from 'react'\n\nimport gsap from 'gsap'\nimport ScrollTrigger from 'gsap/ScrollTrigger';\nimport ReactMarkdown from \"react-markdown\"\n\ngsap.registerPlugin(ScrollTrigger);\n\nconst Reveal2 = ({ children, data, pinspace, pagenav, section,sectionnumber,title,text,controller,scrollProgress, fullview ,scrollref, setScrollPos,scrubspeed,anticipate}) => {\n const revealRef = useRef(null);\n let TitleRef = React.createRef();\n let TextRef = React.createRef();\n let tl = gsap.timeline()\n let ScrollPos = 0\n\n\n\n useEffect(() => {\n let tl = gsap.timeline()\n\n\n\n tl = gsap.timeline({\n\n scrollTrigger: {\n trigger: revealRef.current,\n start: \"top top\",\n end: \"+=300%\",\n scrub: scrubspeed,\n anticipatePin: anticipate,\n pin: true,\n onEnter: () => controller(section,sectionnumber),\n onEnterBack: () => controller(section,sectionnumber),\n onUpdate: self => scrollProgress(self.progress)\n }\n\n\n });\n // console.log(pagenav)\n\n if(pagenav === undefined){\n tl.from(TitleRef.current, {duration: 1, x: \"-100vw\"})\n .from(TextRef.current, {duration: 1, x: \"100vw\"}, \"-=1\")\n .to(TitleRef.current, {duration: 1, x: \"-100vw\"}, \"+=1\")\n .to(TextRef.current, {duration: 1, x: \"100vw\"}, \"-=1\");\n\n }else{\n\n tl.from(pagenav.current, {duration: 1, y: \"100vh\", scale: 4})\n .from(TitleRef.current, {duration: 1, x: \"-100vw\"})\n .from(TextRef.current, {duration: 1, x: \"100vw\"}, \"-=1\")\n .addLabel(\"fullview\")\n .to(TitleRef.current, {duration: 1, x: \"-100vw\"}, \"+=1\")\n .to(TextRef.current, {duration: 1, x: \"100vw\"}, \"-=1\");\n }\n\n const timer2 = setTimeout(() => {\n const percent = tl.labels[\"fullview\"] / tl.totalDuration();\n ScrollPos = tl.scrollTrigger.start + (tl.scrollTrigger.end - tl.scrollTrigger.start) * percent;\n if(scrollref !== undefined){\n setScrollPos(scrollref , ScrollPos)\n }\n }, 100);\n\n\n\n\n\n }, []);\n\n\n\n\n\n return(\n\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n

\n {data.title === undefined ? data.Title : data.title}\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\nexport default Reveal2;\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","module.exports = __webpack_public_path__ + \"static/foam_bump-902cea88d19d437ae209edfcba15d337.jpg\";","\nimport {pmod} from './gmath'\nimport {Vec3} from './vec'\n\n\n// const HInfo = {\n// \t/** cell (quad) index */\n// \ti:0,\n// \t/** triangle (0 top-left or 1 bottom-right) */\n// \tt: 0,\n// \t/** height */\n// \tz: number,\n// \t/** normal */\n// \tn: Vec3\n// }\n\nconst HeightfieldOptions = {\n\tcellSize: 0,\n\tminHeight: 0,\n\tmaxHeight: 0,\n\txCount: 0,\n\tyCount: 0,\n\theights: [], // supply counts & heights array OR image\n\timage: {}\n}\n\n\nexport function HInfo(){\n\treturn {\n\t\ti: 0, t: 0, z: 0.0, n: Vec3.create()\n\t}\n}\n/**\n * Create a Heightfield using the given options.\n * Use either an image OR xCount, yCount and a heights array.\n */\nexport default function Heightfield (info) {\n\tconst hf = {\n\t\tcellSize: (info.cellSize && info.cellSize > 0) ? info.cellSize : 1.0,\n\t\tminHeight: (typeof info.minHeight === 'number') ? info.minHeight : 0.0,\n\t\tmaxHeight: (typeof info.maxHeight === 'number') ? info.maxHeight : 1.0,\n\t\txCount: 0, // remaining will be computed later\n\t\tyCount: 0,\n\t\txSize: 0,\n\t\tySize: 0,\n\t\theights: new Float32Array(0),\n\t\tfaceNormals: new Float32Array(0), // packed: [x0, y0, z0, x1, y1, z1]\n\t\tvtxNormals: new Float32Array(0)\n\t}\n\n\tif (info.image) {\n\t\tHeightfieldInternal.genFromImg(info.image, hf)\n\t}\n\telse {\n\t\thf.xCount = info.xCount && info.xCount > 0 ? Math.floor(info.xCount) : 1\n\t\thf.yCount = info.yCount && info.yCount > 0 ? Math.floor(info.yCount) : 1\n\t\thf.xSize = hf.xCount * hf.cellSize\n // Tizz this errored hf.ySize = info.yCount! * hf.cellSize\n\t\thf.ySize = info.yCount * hf.cellSize\n\t\thf.heights = info.heights || new Float32Array((hf.xCount + 1) * (hf.yCount + 1))\n\t\t// 2 normals per cell (quad)\n\t\thf.faceNormals = new Float32Array(3 * 2 * hf.xCount * hf.yCount)\n\t\thf.vtxNormals = new Float32Array(3 * (hf.xCount + 1) * (hf.yCount + 1))\n\t\tHeightfieldInternal.calcFaceNormals(hf)\n\t}\n\n\treturn hf\n}\n\n\nexport var HeightFieldFunctions ={\n /**\n * Get heightfield info at point x,y. Outputs to hi.\n * @param wrap If true, x,y coords will be wrapped around if out of bounds,\n * otherwise minHeight returned.\n * @param hi Struct to output result into.\n */\ninfoAt: function(hf, x, y, wrap, hi) {\n\t//\n\t// console.log(\"infoAt\",hf, x, y, wrap, hi)\n const ox = -(hf.xSize / 2.0) // bottom left of heightfield\n \t\tconst oy = -(hf.ySize / 2.0)\n\n \t\tif (x < ox || x >= -ox || y < oy || y >= -oy) {\n \t\t\tif (!wrap) {\n \t\t\t\t// out of bounds\n \t\t\t\thi.i = -1\n \t\t\t\thi.z = hf.minHeight\n \t\t\t\thi.n.x = hi.n.y = hi.n.z = 0\n \t\t\t\thi.t = 0\n \t\t\t\treturn\n \t\t\t}\n \t\t\t// wrap around\n \t\t\tx = pmod(x - ox, hf.xSize) + ox\n \t\t\ty = pmod(y - oy, hf.ySize) + oy\n \t\t}\n\n \t\tconst csz = hf.cellSize,\n \t\t\tnormals = hf.faceNormals,\n \t\t\tn = hi.n,\n \t\t\tix = Math.floor((x - ox) / csz),\n \t\t\tiy = Math.floor((y - oy) / csz),\n \t\t\tih = ix + iy * (hf.xCount + 1), // height index\n \t\t\tpx = (x - ox) % csz, // relative x,y within this quad\n \t\t\tpy = (y - oy) % csz\n\n \t\tconst i = ix + iy * hf.xCount // tile index\n\n \t\tif (py > 0 && px / py < 1.0) {\n \t\t\t// top left tri\n \t\t\thi.t = 0\n \t\t\tn.x = normals[i * 6 + 0]\n \t\t\tn.y = normals[i * 6 + 1]\n \t\t\tn.z = normals[i * 6 + 2]\n \t\t}\n \t\telse {\n \t\t\t// bottom right tri\n \t\t\thi.t = 1\n \t\t\tn.x = normals[i * 6 + 3]\n \t\t\tn.y = normals[i * 6 + 4]\n \t\t\tn.z = normals[i * 6 + 5]\n \t\t}\n \t\thi.i = i\n \t\thi.z = HeightFieldFunctions.getPlaneZ(n, hf.heights[ih], px, py)\n },\n heightAt : function (hf, x, y, wrap =false) {\n\t\t // console.log(\"heightAt\",hf, x, y, wrap )\n\t\tlet _hi= HInfo()\n\t\tHeightFieldFunctions.infoAt(hf, x, y, wrap, _hi)\n\t\treturn _hi.z\n\t},\n /**\n\t * Given a plane with normal n and z=z0 at (x=0,y=0) find z at x,y.\n\t * @param n Normal vector of the plane.\n\t * @param z0 Height (z) coordinate of the plane at x=0,y=0.\n\t * @param x X coordinate to find height (z) at.\n\t * @param y Y coordinate to find height (z) at.\n\t */\n\tgetPlaneZ:function (n, z0, x, y) {\n\t\treturn z0 - (n.x * x + n.y * y) / n.z\n\t}\n}\n\n\nvar HeightfieldInternal ={\n\n genFromImg:function (image, hf) {\n \t// let x: number, y: number, i: number, height: number\n\n\t\tlet x = 0\n\t\tlet y = 0\n\t\tlet i = 0\n\t\tlet height =0\n\n \tconst w = image.width,\n \t\th = image.height,\n \t\theightRange = hf.maxHeight - hf.minHeight\n\n \thf.xCount = w - 1\n \thf.yCount = h - 1\n \thf.xSize = hf.xCount * hf.cellSize\n \thf.ySize = hf.yCount * hf.cellSize\n\n \t// Draw to a canvas so we can get the data\n \tlet canvas = document.createElement('canvas')\n \tcanvas.width = w\n \tcanvas.height = h\n // Tizz this errored\n \t// let ctx = canvas.getContext('2d')!\n \tlet ctx = canvas.getContext('2d')\n \tctx.drawImage(image, 0, 0, w, h)\n \t// array of canvas pixel data [r,g,b,a, r,g,b,a, ...]\n \tlet data = ctx.getImageData(0, 0, w, h).data\n \tconst heights = new Float32Array(w * h)\n \tfor (y = 0; y < h; ++y) {\n \t\tfor (x = 0; x < w; ++x) {\n \t\t\t// flip vertical because textures are Y+\n \t\t\ti = (x + (h - y - 1) * w) * 4\n \t\t\t//i = (x + y * w) * 4\n\n \t\t\t// normalized altitude value (0-1)\n \t\t\t// assume image is grayscale, so we only need 1 color component\n \t\t\theight = data[i] / 255.0\n \t\t\t//height = (data[i+0] + data[i+1] + data[i+2]) / (255+255+255)\n\n \t\t\t// scale & store this altitude\n \t\t\theights[x + y * w] = hf.minHeight + height * heightRange\n \t\t}\n \t}\n \t// Free these resources soon as possible\n \tdata = ctx = canvas = null\n\n \thf.heights = heights\n\n \t// 2 normals per cell (quad)\n \thf.faceNormals = new Float32Array(3 * 2 * hf.xCount * hf.yCount)\n \thf.vtxNormals = new Float32Array(3 * (hf.xCount + 1) * (hf.yCount + 1))\n \tHeightfieldInternal.calcFaceNormals(hf)\n \tHeightfieldInternal.calcVertexNormals(hf)\n },\n\n/**\n * Calculate normals.\n * 2 face normals per quad (1 per tri)\n */\ncalcFaceNormals: function(hf) {\n\tconst csz = hf.cellSize,\n\t\txc = hf.xCount, // tile X & Y counts\n\t\tyc = hf.yCount,\n\t\thxc = hf.xCount + 1, // height X count (1 larger than tile count)\n\t\theights = hf.heights, // 1 less indirection\n\t\tnormals = hf.faceNormals,\n\t\tv0 = Vec3.create(),\n\t\tv1 = Vec3.create(),\n\t\tn = Vec3.create() // used to compute normals\n\tlet i = 0\n\n\tconst tStart = Date.now()\n\tfor (let iy = 0; iy < yc; ++iy) {\n\t\tfor (let ix = 0; ix < xc; ++ix) {\n\t\t\ti = 6 * (ix + iy * xc)\n\t\t\tconst ih = ix + iy * hxc\n\t\t\tconst z = heights[ih]\n\n\t\t\t// 2 vectors of top-left tri\n\t\t\tv0.x = csz\n\t\t\tv0.y = csz\n\t\t\tv0.z = heights[ih + hxc + 1] - z\n\n\t\t\tv1.x = 0.0\n\t\t\tv1.y = csz\n\t\t\tv1.z = heights[ih + hxc] - z\n\n\t\t\tVec3.cross(v0, v1, n)\n\t\t\tVec3.normalize(n, n)\n\t\t\tnormals[i + 0] = n.x\n\t\t\tnormals[i + 1] = n.y\n\t\t\tnormals[i + 2] = n.z\n\n\t\t\t// 2 vectors of bottom-right tri\n\t\t\tv0.x = csz\n\t\t\tv0.y = 0.0\n\t\t\tv0.z = heights[ih + 1] - z\n\n\t\t\tv1.x = csz\n\t\t\tv1.y = csz\n\t\t\tv1.z = heights[ih + hxc + 1] - z\n\n\t\t\tVec3.cross(v0, v1, n)\n\t\t\tVec3.normalize(n, n)\n\t\t\tnormals[i + 3] = n.x\n\t\t\tnormals[i + 4] = n.y\n\t\t\tnormals[i + 5] = n.z\n\t\t}\n\t}\n\tconst dt = Date.now() - tStart\n\t// console.log(`computed ${i} heightfield face normals in ${dt}ms`)\n},\ncalcVertexNormals:function(hf) {\n\tconst vnorms = hf.vtxNormals\n\tconst w = hf.xCount + 1\n\tconst h = hf.yCount + 1\n\tconst n = Vec3.create()\n\tlet i = 0\n\tconst tStart = Date.now()\n\tfor (let y = 0; y < h; ++y) {\n\t\tfor (let x = 0; x < w; ++x) {\n\t\t\tHeightfieldInternal.computeVertexNormal(hf, x, y, n)\n\t\t\ti = (y * w + x) * 3\n\t\t\tvnorms[i++] = n.x\n\t\t\tvnorms[i++] = n.y\n\t\t\tvnorms[i++] = n.z\n\t\t}\n\t}\n\tconst dt = Date.now() - tStart\n\t// console.log(`computed ${w * h} vertex normals in ${dt}ms`)\n},\ncomputeVertexNormal:function(hf, vx, vy, n) {\n\tconst fnorms = hf.faceNormals\n\t// This vertex is belongs to 4 quads\n\t// Do the faces this vertex is the 1st point of for this quad.\n\t// This is the quad up and to the right\n\tlet qx = vx % hf.xCount\n\tlet qy = vy % hf.yCount\n\tlet ni = (qy * hf.xCount + qx) * 3 * 2\n\tn.x = fnorms[ni + 0]\n\tn.y = fnorms[ni + 1]\n\tn.z = fnorms[ni + 2]\n\tni += 3\n\tn.x += fnorms[ni + 0]\n\tn.y += fnorms[ni + 1]\n\tn.z += fnorms[ni + 2]\n\n\t// 2nd tri of quad up and to the left\n\tqx = pmod(qx - 1, hf.xCount)\n\tni = (qy * hf.xCount + qx) * 3 * 2 + 3\n\tn.x += fnorms[ni + 0]\n\tn.y += fnorms[ni + 1]\n\tn.z += fnorms[ni + 2]\n\n\t// both tris of quad down and to the left\n\tqy = pmod(qy - 1, hf.yCount)\n\tni = (qy * hf.xCount + qx) * 3 * 2\n\tn.x += fnorms[ni + 0]\n\tn.y += fnorms[ni + 1]\n\tn.z += fnorms[ni + 2]\n\tni += 3\n\tn.x += fnorms[ni + 0]\n\tn.y += fnorms[ni + 1]\n\tn.z += fnorms[ni + 2]\n\n\t// 1st tri of quad down and to the right\n\tqx = (qx + 1) % hf.xCount\n\tni = (qy * hf.xCount + qx) * 3 * 2\n\tn.x += fnorms[ni + 0]\n\tn.y += fnorms[ni + 1]\n\tn.z += fnorms[ni + 2]\n\n\t// Normalize to 'average' the result normal\n\tVec3.normalize(n, n)\n}\n\n}\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as THREE from \"three\";\nimport Loader, {Assets} from './loader'\nimport World from \"./world.js\"\n\n\n\n\nclass Terrain extends Component {\n constructor(props) {\n super(props)\n\nthis.state = {\n Assets:null,\n}\n this.onAssetsLoaded = this.onAssetsLoaded.bind(this)\n\n this.cfgId = 'desktop'\n this.cfg = {blades: 84000, depth: 85.0, antialias: true}\n this.numGrassBlades = 84000\n this.grassPatchRadius = 85\n this.antialias = true\n this.displayWidth = window.innerWidth\n\t\tthis.displayHeight = window.innerHeight\n\n }\n\n componentDidMount() {\n this.loadAssets()\n }\n\n loadAssets() {\n const loader = Loader();\n loader.load({\n text: [\n { name: 'grass.vert', url: 'shader/grass.vert.glsl' },\n { name: 'grass.frag', url: 'shader/grass.frag.glsl' },\n { name: 'terrain.vert', url: 'shader/terrain.vert.glsl' },\n { name: 'terrain.frag', url: 'shader/terrain.frag.glsl' },\n { name: 'water.vert', url: 'shader/water.vert.glsl' },\n { name: 'water.frag', url: 'shader/water.frag.glsl' }\n ],\n images: [\n {name: 'heightmap', url: 'data/heightmap.jpg'},\n {name: 'noise', url: 'data/noise.jpg'}\n ],\n textures: [\n {name: 'grass', url: 'data/grass.jpg'},\n {name: 'terrain1', url: 'data/terrain1.jpg'},\n {name: 'terrain2', url: 'data/terrain2.jpg'},\n {name: 'skydome', url: 'data/skydome.jpg'},\n {name: 'skyenv', url: 'data/skyenv.jpg'}\n ]\n }, this.onAssetsLoaded, this.onAssetsProgress, this.onAssetsError);\n }\n\n\n onAssetsProgress(p) {\n // p: number\n const pct = Math.floor(p * 90)\n console.log(\"terrain Loading\", pct , \"%\")\n }\n onAssetsError(e) {\n // e: string\n // $e('loading_text').textContent = e\n console.log(\"Assets Error\", e)\n }\n onAssetsLoaded(a) {\n // a: Assets\n\n let assets = a\n // console.log(this.state.Assets)\n this.setState({Assets:a})\n setTimeout(() => {\n console.log(\"AssetsLoaded\", assets )\n // start()\n\n }, 10)\n }\n\n render() {\n\n if(this.state.Assets !== null){\n return (\n \n )\n }else{\n return (\n
Loading
\n )\n }\n }\n}\n\n\nexport default Terrain\n","// LICENSE: MIT\n// Copyright (c) 2016 by Mike Linkovich\n\n// Creates & animates a large patch of grass to fill the foreground.\n// One simple blade of grass mesh is repeated many times using instanced arrays.\n\n// Uses grass shaders (see: shader/grass.*.glsl)\n\n/// \nimport * as THREE from \"three\";\nimport {nrand} from './gmath'\nimport {Vec2, Vec3, Color} from './vec'\nimport simplex from './simplex'\n\nconst BLADE_SEGS = 4 // # of blade segments\nconst BLADE_VERTS = (BLADE_SEGS + 1) * 2 // # of vertices per blade (1 side)\nconst BLADE_INDICES = BLADE_SEGS * 12\nconst BLADE_WIDTH = 0.15\nconst BLADE_HEIGHT_MIN = 2.25\nconst BLADE_HEIGHT_MAX = 3.0\n\n/**\n * Setup options for grass patch\n */\nconst Options = {\n\tlightDir: Vec3,\n\tnumBlades: 0,\n\tradius: 0, // distance from centre of patch to edge - half the width of the square\n\ttexture: THREE.Texture,\n\tvertScript: \"\",\n\tfragScript: \"\",\n\theightMap: THREE.Texture,\n\theightMapScale: Vec3,\n\tfogColor: Color,\n\tfogFar: 0,\n\tgrassColor: Color,\n\tgrassFogFar: 0,\n\ttransitionLow: 0, // lower bound (0-1) of transition from beach-grass\n\ttransitionHigh: 0, // high bound\n\twindIntensity: 0\n}\n\n/**\n * Creates a patch of grass mesh.\n */\nexport function createMesh (opts) {\n\t// Buffers to use for instances of blade mesh\n\tconst buffers = {\n\t\t// Tells the shader which vertex of the blade its working on.\n\t\t// Rather than supplying positions, they are computed from this vindex.\n\t\tvindex: new Float32Array(BLADE_VERTS * 2 * 1),\n\t\t// Shape properties of all blades\n\t\tshape: new Float32Array(4 * opts.numBlades),\n\t\t// Positon & rotation of all blades\n\t\toffset: new Float32Array(4 * opts.numBlades),\n\t\t// Indices for a blade\n\t\tindex: new Uint16Array(BLADE_INDICES)\n\t}\n\n\tinitBladeIndices(buffers.index, 0, BLADE_VERTS, 0)\n\tinitBladeOffsetVerts(buffers.offset, opts.numBlades, opts.radius)\n\tinitBladeShapeVerts(buffers.shape, opts.numBlades, buffers.offset)\n\tinitBladeIndexVerts(buffers.vindex)\n\n\tconst geo = new THREE.InstancedBufferGeometry()\n\t// Because there are no position vertices, we must create our own bounding sphere.\n\t// (Not used because we disable frustum culling)\n\tgeo.boundingSphere = new THREE.Sphere(\n\t\tnew THREE.Vector3(0,0,0), Math.sqrt(opts.radius * opts.radius * 2.0) * 10000.0\n\t)\n\tgeo.addAttribute('vindex', new THREE.BufferAttribute(buffers.vindex, 1))\n\tgeo.addAttribute('shape', new THREE.InstancedBufferAttribute(buffers.shape, 4))\n\tgeo.addAttribute('offset', new THREE.InstancedBufferAttribute(buffers.offset, 4))\n\tgeo.setIndex(new THREE.BufferAttribute(buffers.index, 1))\n\n\tconst tex = opts.texture\n\ttex.wrapS = tex.wrapT = THREE.RepeatWrapping\n\tconst htex = opts.heightMap\n\thtex.wrapS = htex.wrapT = THREE.RepeatWrapping\n\tconst hscale = opts.heightMapScale\n\n\tconst lightDir = Vec3.clone(opts.lightDir)\n\tlightDir.z *= 0.5\n\tVec3.normalize(lightDir, lightDir)\n\n\t// Fill in some constants that never change between draw calls\n\tconst vertScript = opts.vertScript.replace(\n\t\t'%%BLADE_HEIGHT_TALL%%', (BLADE_HEIGHT_MAX * 1.5).toFixed(1)\n\t).replace(\n\t\t'%%BLADE_SEGS%%', BLADE_SEGS.toFixed(1)\n\t).replace(\n\t\t'%%PATCH_SIZE%%', (opts.radius * 2.0).toFixed(1)\n\t).replace(\n\t\t'%%TRANSITION_LOW%%', opts.transitionLow.toString()\n\t).replace(\n\t\t'%%TRANSITION_HIGH%%', opts.transitionHigh.toString()\n\t)\n\n\t// Setup shader\n\tconst mat = new THREE.RawShaderMaterial({\n\t\tuniforms: {\n\t\t\tlightDir: {type: '3f', value: Vec3.toArray(lightDir)},\n\t\t\ttime: {type: 'f', value: 0.0},\n\t\t\tmap: {type: 't', value: tex},\n\t\t\theightMap: {type: 't', value: htex},\n\t\t\theightMapScale: {type: '3f', value: [hscale.x, hscale.y, hscale.z]},\n\t\t\tcamDir: {type: '3f', value: [1.0, 0.0, 0.0]},\n\t\t\tdrawPos: {type: '2f', value: [100.0, 0.0]},\n\t\t\tfogColor: {type: '3f', value: Color.toArray(opts.fogColor)},\n\t\t\tfogNear: {type: 'f', value: 1.0},\n\t\t\tfogFar: {type: 'f', value: opts.fogFar},\n\t\t\tgrassColor: {type: '3f', value: Color.toArray(opts.grassColor)},\n\t\t\tgrassFogFar: {type: 'f', value: opts.grassFogFar},\n\t\t\twindIntensity: {type: 'f', value: opts.windIntensity}\n\t\t},\n\t\tvertexShader: vertScript,\n\t\tfragmentShader: opts.fragScript,\n\t\ttransparent: true\n\t})\n\tconst mesh = new THREE.Mesh(geo, mat)\n\tmesh.frustumCulled = false // always draw, never cull\n\treturn mesh\n}\n\n/**\n * Sets up indices for single blade mesh.\n * @param id array of indices\n * @param vc1 vertex start offset for front side of blade\n * @param vc2 vertex start offset for back side of blade\n * @param i index offset\n */\nfunction initBladeIndices(id, vc1, vc2, i) {\n\tlet seg = 0\n\t// blade front side\n\tfor (seg = 0; seg < BLADE_SEGS; ++seg) {\n\t\tid[i++] = vc1 + 0 // tri 1\n\t\tid[i++] = vc1 + 1\n\t\tid[i++] = vc1 + 2\n\t\tid[i++] = vc1 + 2 // tri 2\n\t\tid[i++] = vc1 + 1\n\t\tid[i++] = vc1 + 3\n\t\tvc1 += 2\n\t}\n\t// blade back side\n\tfor (seg = 0; seg < BLADE_SEGS; ++seg) {\n\t\tid[i++] = vc2 + 2 // tri 1\n\t\tid[i++] = vc2 + 1\n\t\tid[i++] = vc2 + 0\n\t\tid[i++] = vc2 + 3 // tri 2\n\t\tid[i++] = vc2 + 1\n\t\tid[i++] = vc2 + 2\n\t\tvc2 += 2\n\t}\n}\n\n/** Set up shape variations for each blade of grass */\nfunction initBladeShapeVerts(shape, numBlades, offset) {\n\tlet noise = 0\n\tfor (let i = 0; i < numBlades; ++i) {\n\t\tnoise = Math.abs(simplex(offset[i * 4 + 0] * 0.03, offset[i * 4 + 1] * 0.03))\n\t\tnoise = noise * noise * noise\n\t\tnoise *= 5.0\n\t\tshape[i * 4 + 0] = BLADE_WIDTH + Math.random() * BLADE_WIDTH * 0.5 // width\n\t\tshape[i * 4 + 1] = BLADE_HEIGHT_MIN + Math.pow(Math.random(), 4.0) * (BLADE_HEIGHT_MAX - BLADE_HEIGHT_MIN) + // height\n\t\t\tnoise\n\t\tshape[i * 4 + 2] = 0.0 + Math.random() * 0.3 // lean\n\t\tshape[i * 4 + 3] = 0.05 + Math.random() * 0.3 // curve\n\t}\n}\n\n/** Set up positons & rotation for each blade of grass */\nfunction initBladeOffsetVerts(offset, numBlades, patchRadius) {\n\tfor (let i = 0; i < numBlades; ++i) {\n\t\toffset[i * 4 + 0] = nrand() * patchRadius // x\n\t\toffset[i * 4 + 1] = nrand() * patchRadius // y\n\t\toffset[i * 4 + 2] = 0.0 // z\n\t\toffset[i * 4 + 3] = Math.PI * 2.0 * Math.random() // rot\n\t}\n}\n\n/** Set up indices for 1 blade */\nfunction initBladeIndexVerts(vindex) {\n\tfor (let i = 0; i < vindex.length; ++i) {\n\t\tvindex[i] = i\n\t}\n}\n\n/**\n * Call each frame to animate grass blades.\n * @param mesh The patch of grass mesh returned from createMesh\n * @param time Time in seconds\n * @param x X coordinate of centre position to draw at\n * @param y Y coord\n */\nexport function update (mesh, time,camPos, camDir, drawPos) {\n\t//Tizz errorrod\n\t//original\n\t// const mat = mesh.material as new THREE.RawShaderMaterial\n\t//possible\n\t// const mat = new THREE.RawShaderMaterial(mesh.material)\n\tconst mat = mesh.material\n\tmat.uniforms['time'].value = time\n\tlet p = mat.uniforms['camDir'].value\n\tp[0] = camDir.x\n\tp[1] = camDir.y\n\tp[2] = camDir.z\n\tp = mat.uniforms['drawPos'].value\n\tp[0] = drawPos.x\n\tp[1] = drawPos.y\n}\n","module.exports = __webpack_public_path__ + \"static/terrain2-18b77a7d86973ed2646c229008490971.jpg\";","module.exports = __webpack_public_path__ + \"static/foam_normal-a9886e306b91fdb6ed07207043a59b1b.jpg\";","import React, {useRef, useEffect} from 'react'\nimport {useThree,useFrame} from 'react-three-fiber'\n\n\n\n\n\nexport default () => {\n const camera = useRef()\n const {size, setDefaultCamera} = useThree()\n const {width, height} = size\n\n\n useEffect( () => {\n setDefaultCamera(camera.current)\n }, [])\n\n\n\n return (\n <>\n \n\n \n )\n}\n","module.exports = __webpack_public_path__ + \"static/height_3-5abd6ef84901fe723404f6b1e87e0acf.jpg\";","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","module.exports = __webpack_public_path__ + \"static/foam-57b385de022a554cddecd92f560bc5a5.jpg\";","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","module.exports = __webpack_public_path__ + \"static/2-f990654b656dbd396a92f7322f157152.jpg\";","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","module.exports = __webpack_public_path__ + \"static/1-6152f4249a57261e1434cd65c78313be.jpg\";","\n/**\n * Based on Nvidia Cg tutorial\n */\n\nvar FresnelShader = {\n\n\tuniforms: {\n\n\t\t\"mRefractionRatio\": { value: 1.02 },\n\t\t\"mFresnelBias\": { value: 0.1 },\n\t\t\"mFresnelPower\": { value: 2.0 },\n\t\t\"mFresnelScale\": { value: 1.0 },\n\t\t\"tCube\": { value: null }\n\n\t},\n\n\tvertexShader: [\n\n\t\t\"uniform float mRefractionRatio;\",\n\t\t\"uniform float mFresnelBias;\",\n\t\t\"uniform float mFresnelScale;\",\n\t\t\"uniform float mFresnelPower;\",\n\n\t\t\"varying vec3 vReflect;\",\n\t\t\"varying vec3 vRefract[3];\",\n\t\t\"varying float vReflectionFactor;\",\n\n\t\t\"void main() {\",\n\n\t\t\"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\n\t\t\"\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\",\n\n\t\t\"\tvec3 worldNormal = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\",\n\n\t\t\"\tvec3 I = worldPosition.xyz - cameraPosition;\",\n\n\t\t\"\tvReflect = reflect( I, worldNormal );\",\n\t\t\"\tvRefract[0] = refract( normalize( I ), worldNormal, mRefractionRatio );\",\n\t\t\"\tvRefract[1] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.99 );\",\n\t\t\"\tvRefract[2] = refract( normalize( I ), worldNormal, mRefractionRatio * 0.98 );\",\n\t\t\"\tvReflectionFactor = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( I ), worldNormal ), mFresnelPower );\",\n\n\t\t\"\tgl_Position = projectionMatrix * mvPosition;\",\n\n\t\t\"}\"\n\n\t].join( \"\\n\" ),\n\n\tfragmentShader: [\n\n\t\t\"uniform samplerCube tCube;\",\n\n\t\t\"varying vec3 vReflect;\",\n\t\t\"varying vec3 vRefract[3];\",\n\t\t\"varying float vReflectionFactor;\",\n\n\t\t\"void main() {\",\n\n\t\t\"\tvec4 reflectedColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\",\n\t\t\"\tvec4 refractedColor = vec4( 1.0 );\",\n\n\t\t\"\trefractedColor.r = textureCube( tCube, vec3( -vRefract[0].x, vRefract[0].yz ) ).r;\",\n\t\t\"\trefractedColor.g = textureCube( tCube, vec3( -vRefract[1].x, vRefract[1].yz ) ).g;\",\n\t\t\"\trefractedColor.b = textureCube( tCube, vec3( -vRefract[2].x, vRefract[2].yz ) ).b;\",\n\n\t\t\"\tgl_FragColor = mix( refractedColor, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );\",\n\n\t\t\"}\"\n\n\t].join( \"\\n\" )\n\n};\n\nexport { FresnelShader };\n","module.exports = __webpack_public_path__ + \"static/pfas_logo-2a799b09159ad8d9334f06e227b932fe.png\";","module.exports = \"data:image/jpeg;base64,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\"","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","module.exports = __webpack_public_path__ + \"static/why-ed63570b89a71401ff784fe8af58274e.jpg\";","module.exports = __webpack_public_path__ + \"static/skydome-f0811e8c91db0379087f511bfa1863a4.jpg\";","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","import \"core-js/modules/es6.array.is-array\";\nimport _toConsumableArray from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport \"core-js/modules/es6.array.some\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.object.freeze\";\nimport _slicedToArray from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"/datadrive/gatsby/pfas/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport { useState, useRef, useMemo, useEffect } from 'react';\nimport { debounce } from 'debounce';\n\nfunction useMeasure() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n debounce: 0,\n scroll: false\n },\n debounce$1 = _ref.debounce,\n scroll = _ref.scroll,\n polyfill = _ref.polyfill;\n\n var ResizeObserver = polyfill || (typeof window === 'undefined' ? function ResizeObserver() {\n _classCallCheck(this, ResizeObserver);\n } : window.ResizeObserver);\n\n if (!ResizeObserver) {\n throw new Error('This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills');\n }\n\n var _useState = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0\n }),\n _useState2 = _slicedToArray(_useState, 2),\n bounds = _useState2[0],\n set = _useState2[1]; // keep all state in a ref\n\n\n var state = useRef({\n element: null,\n scrollContainers: null,\n resizeObserver: null,\n lastBounds: bounds\n }); // set actual debounce values early, so effects know if they should react accordingly\n\n var scrollDebounce = debounce$1 ? typeof debounce$1 === 'number' ? debounce$1 : debounce$1.scroll : null;\n var resizeDebounce = debounce$1 ? typeof debounce$1 === 'number' ? debounce$1 : debounce$1.resize : null; // memoize handlers, so event-listeners know when they should update\n\n var _useMemo = useMemo(function () {\n var callback = function callback() {\n if (!state.current.element) return;\n\n var _state$current$elemen = state.current.element.getBoundingClientRect(),\n left = _state$current$elemen.left,\n top = _state$current$elemen.top,\n width = _state$current$elemen.width,\n height = _state$current$elemen.height,\n bottom = _state$current$elemen.bottom,\n right = _state$current$elemen.right,\n x = _state$current$elemen.x,\n y = _state$current$elemen.y;\n\n var size = {\n left: left,\n top: top,\n width: width,\n height: height,\n bottom: bottom,\n right: right,\n x: x,\n y: y\n };\n Object.freeze(size);\n if (!areBoundsEqual(state.current.lastBounds, size)) set(state.current.lastBounds = size);\n };\n\n return [callback, resizeDebounce ? debounce(callback, resizeDebounce) : callback, scrollDebounce ? debounce(callback, scrollDebounce) : callback];\n }, [set, scrollDebounce, resizeDebounce]),\n _useMemo2 = _slicedToArray(_useMemo, 3),\n forceRefresh = _useMemo2[0],\n resizeChange = _useMemo2[1],\n scrollChange = _useMemo2[2]; // cleanup current scroll-listeners / observers\n\n\n function removeListeners() {\n if (state.current.scrollContainers) {\n state.current.scrollContainers.forEach(function (element) {\n return element.removeEventListener('scroll', scrollChange, true);\n });\n state.current.scrollContainers = null;\n }\n\n if (state.current.resizeObserver) {\n state.current.resizeObserver.disconnect();\n state.current.resizeObserver = null;\n }\n } // add scroll-listeners / observers\n\n\n function addListeners() {\n if (!state.current.element) return;\n state.current.resizeObserver = new ResizeObserver(scrollChange);\n state.current.resizeObserver.observe(state.current.element);\n\n if (scroll && state.current.scrollContainers) {\n state.current.scrollContainers.forEach(function (scrollContainer) {\n return scrollContainer.addEventListener('scroll', scrollChange, {\n capture: true,\n passive: true\n });\n });\n }\n } // the ref we expose to the user\n\n\n var ref = function ref(node) {\n if (!node || node === state.current.element) return;\n removeListeners();\n state.current.element = node;\n state.current.scrollContainers = findScrollContainers(node);\n addListeners();\n }; // add general event listeners\n\n\n useOnWindowScroll(scrollChange, Boolean(scroll));\n useOnWindowResize(resizeChange); // respond to changes that are relevant for the listeners\n\n useEffect(function () {\n removeListeners();\n addListeners();\n }, [scroll, scrollChange, resizeChange]); // remove all listeners when the components unmounts\n\n useEffect(function () {\n return removeListeners;\n }, []);\n return [ref, bounds, forceRefresh];\n} // Adds native resize listener to window\n\n\nfunction useOnWindowResize(onWindowResize) {\n useEffect(function () {\n var cb = onWindowResize;\n window.addEventListener('resize', cb);\n return function () {\n return void window.removeEventListener('resize', cb);\n };\n }, [onWindowResize]);\n}\n\nfunction useOnWindowScroll(onScroll, enabled) {\n useEffect(function () {\n if (enabled) {\n var cb = onScroll;\n window.addEventListener('scroll', cb, {\n capture: true,\n passive: true\n });\n return function () {\n return void window.removeEventListener('scroll', cb, true);\n };\n }\n }, [onScroll, enabled]);\n} // Returns a list of scroll offsets\n\n\nfunction findScrollContainers(element) {\n var result = [];\n if (!element || element === document.body) return result;\n\n var _window$getComputedSt = window.getComputedStyle(element),\n overflow = _window$getComputedSt.overflow,\n overflowX = _window$getComputedSt.overflowX,\n overflowY = _window$getComputedSt.overflowY;\n\n if ([overflow, overflowX, overflowY].some(function (prop) {\n return prop === 'auto' || prop === 'scroll';\n })) result.push(element);\n return [].concat(result, _toConsumableArray(findScrollContainers(element.parentElement)));\n} // Checks if element boundaries are equal\n\n\nvar keys = ['x', 'y', 'top', 'bottom', 'left', 'right', 'width', 'height'];\n\nvar areBoundsEqual = function areBoundsEqual(a, b) {\n return keys.every(function (key) {\n return a[key] === b[key];\n });\n};\n\nif (typeof module !== 'undefined' && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(module, 'exports').writable) {\n module.exports = useMeasure;\n}\n\nexport default useMeasure;","export default \"// LICENSE: MIT\\n// Copyright (c) 2017 by Mike Linkovich\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\nuniform vec2 offset;\\nuniform vec2 uvOffset;\\nuniform sampler2D heightMap;\\nuniform vec3 heightMapScale;\\n\\nattribute vec3 position;\\nattribute vec2 uv;\\n\\nvarying vec2 vUv;\\nvarying vec2 vSamplePos;\\n\\nvoid main() {\\n\\tvec2 pos = vec2(position.xy + offset);\\n\\tvSamplePos = pos * heightMapScale.xy + vec2(0.5, 0.5);\\n\\tvec4 ch = texture2D(heightMap, vSamplePos);\\n\\tfloat height = ch.r * heightMapScale.z;\\n\\tvUv = uv + uvOffset;\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4(pos, height, 1.0);\\n}\\n\"","module.exports = __webpack_public_path__ + \"static/height_4-73c77d49619cd5785b3cc1d2daf792d2.jpg\";","export default \"// LICENSE: MIT\\n// Copyright (c) 2017 by Mike Linkovich\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\n#define PI 3.141592654\\n\\n// These define values should be replaced by app before compiled\\n#define PATCH_SIZE (%%PATCH_SIZE%%)\\n#define BLADE_SEGS (%%BLADE_SEGS%%) // # of blade segments\\n#define BLADE_HEIGHT_TALL (%%BLADE_HEIGHT_TALL%%) // height of a tall blade\\n\\n#define BLADE_DIVS (BLADE_SEGS + 1.0) // # of divisions\\n#define BLADE_VERTS (BLADE_DIVS * 2.0) // # of vertices (per side, so 1/2 total)\\n\\n#define TRANSITION_LOW (%%TRANSITION_LOW%%) // elevation of beach-grass transition (start)\\n#define TRANSITION_HIGH (%%TRANSITION_HIGH%%) // (end)\\n#define TRANSITION_NOISE 0.06 // transition noise scale\\n\\nconst vec3 LIGHT_COLOR = vec3(1.0, 1.0, 0.99);\\nconst vec3 SPECULAR_COLOR = vec3(1.0, 1.0, 0.0);\\n\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\nuniform vec3 lightDir;\\nuniform vec3 camDir; // direction cam is looking at\\nuniform vec2 drawPos; // centre of where we want to draw\\nuniform float time; // used to animate blades\\nuniform sampler2D heightMap;\\nuniform vec3 heightMapScale;\\nuniform vec3 grassColor;\\nuniform float windIntensity;\\n\\nattribute float vindex; // Which vertex are we drawing - the main thing we need to know\\nattribute vec4 offset; // {x:x, y:y, z:z, w:rot} (blade's position & rotation)\\nattribute vec4 shape; // {x:width, y:height, z:lean, w:curve} (blade's shape properties)\\n\\nvarying vec2 vSamplePos;\\nvarying vec4 vColor;\\nvarying vec2 vUv;\\n\\n// Rotate by an angle\\nvec2 rotate (float x, float y, float r) {\\n\\tfloat c = cos(r);\\n\\tfloat s = sin(r);\\n\\treturn vec2(x * c - y * s, x * s + y * c);\\n}\\n\\n// Rotate by a vector\\nvec2 rotate (float x, float y, vec2 r) {\\n\\treturn vec2(x * r.x - y * r.y, x * r.y + y * r.x);\\n}\\n\\nvoid main() {\\n\\tfloat vi = mod(vindex, BLADE_VERTS); // vertex index for this side of the blade\\n\\tfloat di = floor(vi / 2.0); // div index (0 .. BLADE_DIVS)\\n\\tfloat hpct = di / BLADE_SEGS; // percent of height of blade this vertex is at\\n\\tfloat bside = floor(vindex / BLADE_VERTS); // front/back side of blade\\n\\tfloat bedge = mod(vi, 2.0); // left/right edge (x=0 or x=1)\\n\\t// Vertex position - start with 2D shape, no bend applied\\n\\tvec3 vpos = vec3(\\n\\t\\tshape.x * (bedge - 0.5) * (1.0 - pow(hpct, 3.0)), // taper blade edges as approach tip\\n\\t\\t0.0, // flat y, unbent\\n\\t\\tshape.y * di / BLADE_SEGS // height of vtx, unbent\\n\\t);\\n\\n\\t// Start computing a normal for this vertex\\n\\tvec3 normal = vec3(rotate(0.0, bside * 2.0 - 1.0, offset.w), 0.0);\\n\\n\\t// Apply blade's natural curve amount\\n\\tfloat curve = shape.w;\\n\\t// Then add animated curve amount by time using this blade's\\n\\t// unique properties to randomize its oscillation\\n\\tcurve += shape.w + 0.125 * (sin(time * 4.0 + offset.w * 0.2 * shape.y + offset.x + offset.y));\\n\\t// put lean and curve together\\n\\tfloat rot = shape.z + curve * hpct;\\n\\tvec2 rotv = vec2(cos(rot), sin(rot));\\n\\tvpos.yz = rotate(vpos.y, vpos.z, rotv);\\n\\tnormal.yz = rotate(normal.y, normal.z, rotv);\\n\\n\\t// rotation of this blade as a vector\\n\\trotv = vec2(cos(offset.w), sin(offset.w));\\n\\tvpos.xy = rotate(vpos.x, vpos.y, rotv);\\n\\n\\t// Based on centre of view cone position, what grid tile should\\n\\t// this piece of grass be drawn at?\\n\\tvec2 gridOffset = vec2(\\n\\t\\tfloor((drawPos.x - offset.x) / PATCH_SIZE) * PATCH_SIZE + PATCH_SIZE / 2.0,\\n\\t\\tfloor((drawPos.y - offset.y) / PATCH_SIZE) * PATCH_SIZE + PATCH_SIZE / 2.0\\n\\t);\\n\\n\\t// Find the blade mesh world x,y position\\n\\tvec2 bladePos = vec2(offset.xy + gridOffset);\\n\\n\\t// height/light map sample position\\n\\tvSamplePos = bladePos.xy * heightMapScale.xy + vec2(0.5, 0.5);\\n\\n\\t// Compute wind effect\\n\\t// Using the lighting channel as noise seems make the best looking wind for some reason!\\n\\tfloat wind = texture2D(heightMap, vec2(vSamplePos.x - time / 2500.0, vSamplePos.y - time / 200.0) * 6.0).g;\\n\\t//float wind = texture2D(heightMap, vec2(vSamplePos.x - time / 2500.0, vSamplePos.y - time / 100.0) * 6.0).r;\\n\\t//float wind = texture2D(heightMap, vec2(vSamplePos.x - time / 2500.0, vSamplePos.y - time / 100.0) * 4.0).b;\\n\\t// Apply some exaggeration to wind\\n\\t//wind = (clamp(wind, 0.125, 0.875) - 0.125) * (1.0 / 0.75);\\n\\twind = (clamp(wind, 0.25, 1.0) - 0.25) * (1.0 / 0.75);\\n\\twind = wind * wind * windIntensity;\\n\\twind *= hpct; // scale wind by height of blade\\n\\twind = -wind;\\n\\trotv = vec2(cos(wind), sin(wind));\\n\\t// Wind blows in axis-aligned direction to make things simpler\\n\\tvpos.yz = rotate(vpos.y, vpos.z, rotv);\\n\\tnormal.yz = rotate(normal.y, normal.z, rotv);\\n\\n\\t// Sample the heightfield data texture to get altitude for this blade position\\n\\tvec4 hdata = texture2D(heightMap, vSamplePos);\\n\\tfloat altitude = hdata.r;\\n\\n\\t// Determine if we want the grass to appear or not\\n\\t// Use the noise channel to perturb the altitude grass starts growing at.\\n\\tfloat noisyAltitude = altitude + hdata.b * TRANSITION_NOISE - (TRANSITION_NOISE / 2.0);\\n\\tfloat degenerate = (clamp(noisyAltitude, TRANSITION_LOW, TRANSITION_HIGH) - TRANSITION_LOW)\\n\\t\\t* (1.0 / (TRANSITION_HIGH - TRANSITION_LOW));\\n\\n\\t// Transition geometry toward degenerate as we approach beach altitude\\n\\tvpos *= degenerate;\\n\\n\\t// Vertex color must be brighter because it is multiplied with blade texture\\n\\tvec3 color = min(vec3(grassColor.r * 1.25, grassColor.g * 1.25, grassColor.b * 0.95), 1.0);\\n\\taltitude *= heightMapScale.z;\\n\\n\\t// Compute directional (sun) light for this vertex\\n\\tfloat diffuse = abs(dot(normal, lightDir)); // max(-dot(normal, lightDir), 0.0);\\n\\tfloat specMag = max(-dot(normal, lightDir), 0.0) * max(-dot(normal, camDir), 0.0);\\n\\tspecMag = pow(specMag, 1.5); // * specMag * specMag;\\n\\tvec3 specular = specMag * SPECULAR_COLOR * 0.4;\\n\\t// Directional plus ambient\\n\\tfloat light = 0.35 * diffuse + 0.65;\\n\\t// Ambient occlusion shading - the lower vertex, the darker\\n\\tfloat heightLight = 1.0 - hpct;\\n\\theightLight = heightLight * heightLight;\\n\\tlight = max(light - heightLight * 0.5, 0.0);\\n\\tvColor = vec4(\\n\\t\\t// Each blade is randomly colourized a bit by its position\\n\\t\\tlight * 0.75 + cos(offset.x * 80.0) * 0.1,\\n\\t\\tlight * 0.95 + sin(offset.y * 140.0) * 0.05,\\n\\t\\tlight * 0.95 + sin(offset.x * 99.0) * 0.05,\\n\\t\\t1.0\\n\\t);\\n\\tvColor.rgb = vColor.rgb * LIGHT_COLOR * color;\\n\\tvColor.rgb = min(vColor.rgb + specular, 1.0);\\n\\n\\t// grass texture coordinate for this vertex\\n\\tvUv = vec2(bedge, di * 2.0);\\n\\n\\t// Translate to world coordinates\\n\\tvpos.x += bladePos.x;\\n\\tvpos.y += bladePos.y;\\n\\tvpos.z += altitude;\\n\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4(vpos, 1.0);\\n}\\n\"","module.exports = __webpack_public_path__ + \"static/foam_diffuse-89b3d96fbdf648316b93c2ccf26100b2.jpg\";","import React from 'react'\nimport {Canvas} from 'react-three-fiber'\n\n\n\n\nexport default ({children}) => {\n return (\n
\n \n\n {children}\n \n\n\n
\n )\n}\n","module.exports = __webpack_public_path__ + \"static/sky2-8b27e5bc5850d4dbc43550503193ef9b.jpg\";","import getPrototypeOf from \"./getPrototypeOf\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nimport isNativeFunction from \"./isNativeFunction\";\nimport construct from \"./construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","module.exports = __webpack_public_path__ + \"static/Concrete-1744125004be6601386169f11dc0a745.jpg\";","// LICENSE: MIT\n// Copyright (c) 2016 by Mike Linkovich\n\nexport const PI2 = Math.PI * 2.0\n\nexport function sign (n) {\n\treturn (n > 0 ? 1 : n < 0 ? -1 : 0)\n}\n\nexport function roundFrac(n, places) {\n\tconst d = Math.pow(10, places)\n\treturn Math.round((n + 0.000000001) * d) / d\n}\n\nexport function clamp (n, min, max) {\n\treturn Math.min(Math.max(n, min), max)\n}\n\n/** Always positive modulus */\nexport function pmod (n, m) {\n\treturn ((n % m + m) % m)\n}\n\n/** A random number from -1.0 to 1.0 */\nexport function nrand() {\n\treturn Math.random() * 2.0 - 1.0\n}\n\nexport function angle (x, y) {\n\treturn pmod(Math.atan2(y, x), PI2)\n}\n\nexport function difAngle (a0, a1) {\n\tconst r = pmod(a1, PI2) - pmod(a0, PI2)\n\treturn Math.abs(r) < Math.PI ? r : r - PI2 * sign(r)\n}\n\nexport function dot (x0, y0, x1, y1) {\n\treturn (x0 * x1 + y0 * y1)\n}\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","module.exports = __webpack_public_path__ + \"static/noise-b65daf7eec471bc7b085e79a9b50fa0e.jpg\";","export default \"#define GLSLIFY 1\\nvarying vec2 vUv;\\n\\nvoid main() {\\n\\n\\tvUv = uv;\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\\n}\"","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","import \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es7.object.values\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.typed.float32-array\";\nimport \"core-js/modules/es6.typed.uint32-array\";\nimport \"core-js/modules/es6.typed.uint16-array\";\nimport \"core-js/modules/es6.typed.int16-array\";\nimport \"core-js/modules/es6.typed.int8-array\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.string.repeat\";\nimport \"core-js/modules/es6.typed.data-view\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.typed.uint8-array\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport { AnimationClip, Bone, Box3, BufferAttribute, BufferGeometry, CanvasTexture, ClampToEdgeWrapping, Color, DirectionalLight, DoubleSide, FileLoader, FrontSide, Group, ImageBitmapLoader, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, Line, LineBasicMaterial, LineLoop, LineSegments, LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, Loader, LoaderUtils, Material, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MirroredRepeatWrapping, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NumberKeyframeTrack, Object3D, OrthographicCamera, PerspectiveCamera, PointLight, Points, PointsMaterial, PropertyBinding, QuaternionKeyframeTrack, RGBFormat, RepeatWrapping, Skeleton, SkinnedMesh, Sphere, SpotLight, TangentSpaceNormalMap, TextureLoader, TriangleFanDrawMode, TriangleStripDrawMode, Vector2, Vector3, VectorKeyframeTrack, sRGBEncoding } from \"../../../build/three.module.js\";\n\nvar GLTFLoader = function () {\n function GLTFLoader(manager) {\n Loader.call(this, manager);\n this.dracoLoader = null;\n this.ddsLoader = null;\n this.ktx2Loader = null;\n this.pluginCallbacks = [];\n this.register(function (parser) {\n return new GLTFMaterialsClearcoatExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFTextureBasisUExtension(parser);\n });\n this.register(function (parser) {\n return new GLTFMaterialsTransmissionExtension(parser);\n });\n }\n\n GLTFLoader.prototype = Object.assign(Object.create(Loader.prototype), {\n constructor: GLTFLoader,\n load: function load(url, onLoad, onProgress, onError) {\n var scope = this;\n var resourcePath;\n\n if (this.resourcePath !== '') {\n resourcePath = this.resourcePath;\n } else if (this.path !== '') {\n resourcePath = this.path;\n } else {\n resourcePath = LoaderUtils.extractUrlBase(url);\n } // Tells the LoadingManager to track an extra item, which resolves after\n // the model is fully loaded. This means the count of items loaded will\n // be incorrect, but ensures manager.onLoad() does not fire early.\n\n\n scope.manager.itemStart(url);\n\n var _onError = function _onError(e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n };\n\n var loader = new FileLoader(scope.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.setRequestHeader(this.requestHeader);\n\n if (scope.crossOrigin === 'use-credentials') {\n loader.setWithCredentials(true);\n }\n\n loader.load(url, function (data) {\n try {\n scope.parse(data, resourcePath, function (gltf) {\n onLoad(gltf);\n scope.manager.itemEnd(url);\n }, _onError);\n } catch (e) {\n _onError(e);\n }\n }, onProgress, _onError);\n },\n setDRACOLoader: function setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n },\n setDDSLoader: function setDDSLoader(ddsLoader) {\n this.ddsLoader = ddsLoader;\n return this;\n },\n setKTX2Loader: function setKTX2Loader(ktx2Loader) {\n this.ktx2Loader = ktx2Loader;\n return this;\n },\n register: function register(callback) {\n if (this.pluginCallbacks.indexOf(callback) === -1) {\n this.pluginCallbacks.push(callback);\n }\n\n return this;\n },\n unregister: function unregister(callback) {\n if (this.pluginCallbacks.indexOf(callback) !== -1) {\n this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n }\n\n return this;\n },\n parse: function parse(data, path, onLoad, onError) {\n var content;\n var extensions = {};\n var plugins = {};\n\n if (typeof data === 'string') {\n content = data;\n } else {\n var magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n try {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n } catch (error) {\n if (onError) onError(error);\n return;\n }\n\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n } else {\n content = LoaderUtils.decodeText(new Uint8Array(data));\n }\n }\n\n var json = JSON.parse(content);\n\n if (json.asset === undefined || json.asset.version[0] < 2) {\n if (onError) onError(new Error('THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.'));\n return;\n }\n\n var parser = new GLTFParser(json, {\n path: path || this.resourcePath || '',\n crossOrigin: this.crossOrigin,\n manager: this.manager,\n ktx2Loader: this.ktx2Loader\n });\n parser.fileLoader.setRequestHeader(this.requestHeader);\n\n for (var i = 0; i < this.pluginCallbacks.length; i++) {\n var plugin = this.pluginCallbacks[i](parser);\n plugins[plugin.name] = plugin; // Workaround to avoid determining as unknown extension\n // in addUnknownExtensionsToUserData().\n // Remove this workaround if we move all the existing\n // extension handlers to plugin system\n\n extensions[plugin.name] = true;\n }\n\n if (json.extensionsUsed) {\n for (var i = 0; i < json.extensionsUsed.length; ++i) {\n var extensionName = json.extensionsUsed[i];\n var extensionsRequired = json.extensionsRequired || [];\n\n switch (extensionName) {\n case EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n extensions[extensionName] = new GLTFLightsExtension(json);\n break;\n\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\n extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n break;\n\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n break;\n\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n break;\n\n case EXTENSIONS.MSFT_TEXTURE_DDS:\n extensions[extensionName] = new GLTFTextureDDSExtension(this.ddsLoader);\n break;\n\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[extensionName] = new GLTFTextureTransformExtension();\n break;\n\n case EXTENSIONS.KHR_MESH_QUANTIZATION:\n extensions[extensionName] = new GLTFMeshQuantizationExtension();\n break;\n\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === undefined) {\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n\n }\n }\n }\n\n parser.setExtensions(extensions);\n parser.setPlugins(plugins);\n parser.parse(onLoad, onError);\n }\n });\n /* GLTFREGISTRY */\n\n function GLTFRegistry() {\n var objects = {};\n return {\n get: function get(key) {\n return objects[key];\n },\n add: function add(key, object) {\n objects[key] = object;\n },\n remove: function remove(key) {\n delete objects[key];\n },\n removeAll: function removeAll() {\n objects = {};\n }\n };\n }\n /*********************************/\n\n /********** EXTENSIONS ***********/\n\n /*********************************/\n\n\n var EXTENSIONS = {\n KHR_BINARY_GLTF: 'KHR_binary_glTF',\n KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n KHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n MSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n };\n /**\n * DDS Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n *\n */\n\n function GLTFTextureDDSExtension(ddsLoader) {\n if (!ddsLoader) {\n throw new Error('THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader');\n }\n\n this.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n this.ddsLoader = ddsLoader;\n }\n /**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\n\n\n function GLTFLightsExtension(json) {\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n var extension = json.extensions && json.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL] || {};\n this.lightDefs = extension.lights || [];\n }\n\n GLTFLightsExtension.prototype.loadLight = function (lightIndex) {\n var lightDef = this.lightDefs[lightIndex];\n var lightNode;\n var color = new Color(0xffffff);\n if (lightDef.color !== undefined) color.fromArray(lightDef.color);\n var range = lightDef.range !== undefined ? lightDef.range : 0;\n\n switch (lightDef.type) {\n case 'directional':\n lightNode = new DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n case 'point':\n lightNode = new PointLight(color);\n lightNode.distance = range;\n break;\n\n case 'spot':\n lightNode = new SpotLight(color);\n lightNode.distance = range; // Handle spotlight properties.\n\n lightDef.spot = lightDef.spot || {};\n lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n lightNode.angle = lightDef.spot.outerConeAngle;\n lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n default:\n throw new Error('THREE.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".');\n } // Some lights (e.g. spot) default to a position other than the origin. Reset the position\n // here, because node-level parsing will only override position if explicitly specified.\n\n\n lightNode.position.set(0, 0, 0);\n lightNode.decay = 2;\n if (lightDef.intensity !== undefined) lightNode.intensity = lightDef.intensity;\n lightNode.name = lightDef.name || 'light_' + lightIndex;\n return Promise.resolve(lightNode);\n };\n /**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\n\n\n function GLTFMaterialsUnlitExtension() {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n\n GLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n return MeshBasicMaterial;\n };\n\n GLTFMaterialsUnlitExtension.prototype.extendParams = function (materialParams, materialDef, parser) {\n var pending = [];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n var metallicRoughness = materialDef.pbrMetallicRoughness;\n\n if (metallicRoughness) {\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n var array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\n }\n }\n\n return Promise.all(pending);\n };\n /**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\n\n\n function GLTFMaterialsClearcoatExtension(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n }\n\n GLTFMaterialsClearcoatExtension.prototype.getMaterialType = function (materialIndex) {\n var parser = this.parser;\n var materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n };\n\n GLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function (materialIndex, materialParams) {\n var parser = this.parser;\n var materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n var pending = [];\n var extension = materialDef.extensions[this.name];\n\n if (extension.clearcoatFactor !== undefined) {\n materialParams.clearcoat = extension.clearcoatFactor;\n }\n\n if (extension.clearcoatTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'clearcoatMap', extension.clearcoatTexture));\n }\n\n if (extension.clearcoatRoughnessFactor !== undefined) {\n materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n }\n\n if (extension.clearcoatRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture));\n }\n\n if (extension.clearcoatNormalTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture));\n\n if (extension.clearcoatNormalTexture.scale !== undefined) {\n var scale = extension.clearcoatNormalTexture.scale;\n materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n }\n }\n\n return Promise.all(pending);\n };\n /**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\n\n\n function GLTFMaterialsTransmissionExtension(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n }\n\n GLTFMaterialsTransmissionExtension.prototype.getMaterialType = function (materialIndex) {\n var parser = this.parser;\n var materialDef = parser.json.materials[materialIndex];\n if (!materialDef.extensions || !materialDef.extensions[this.name]) return null;\n return MeshPhysicalMaterial;\n };\n\n GLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function (materialIndex, materialParams) {\n var parser = this.parser;\n var materialDef = parser.json.materials[materialIndex];\n\n if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n return Promise.resolve();\n }\n\n var pending = [];\n var extension = materialDef.extensions[this.name];\n\n if (extension.transmissionFactor !== undefined) {\n materialParams.transmission = extension.transmissionFactor;\n }\n\n if (extension.transmissionTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'transmissionMap', extension.transmissionTexture));\n }\n\n return Promise.all(pending);\n };\n /**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n * (draft PR https://github.com/KhronosGroup/glTF/pull/1751)\n */\n\n\n function GLTFTextureBasisUExtension(parser) {\n this.parser = parser;\n this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n }\n\n GLTFTextureBasisUExtension.prototype.loadTexture = function (textureIndex) {\n var parser = this.parser;\n var json = parser.json;\n var textureDef = json.textures[textureIndex];\n\n if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n return null;\n }\n\n var extension = textureDef.extensions[this.name];\n var source = json.images[extension.source];\n var loader = parser.options.ktx2Loader;\n\n if (!loader) {\n throw new Error('THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures');\n }\n\n return parser.loadTextureImage(textureIndex, source, loader);\n };\n /* BINARY EXTENSION */\n\n\n var BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n var BINARY_EXTENSION_HEADER_LENGTH = 12;\n var BINARY_EXTENSION_CHUNK_TYPES = {\n JSON: 0x4E4F534A,\n BIN: 0x004E4942\n };\n\n function GLTFBinaryExtension(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n var headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n this.header = {\n magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true)\n };\n\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error('THREE.GLTFLoader: Unsupported glTF-Binary header.');\n } else if (this.header.version < 2.0) {\n throw new Error('THREE.GLTFLoader: Legacy binary file detected.');\n }\n\n var chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n var chunkIndex = 0;\n\n while (chunkIndex < chunkView.byteLength) {\n var chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n var chunkType = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n var contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n this.content = LoaderUtils.decodeText(contentArray);\n } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\n } // Clients must ignore chunks with unknown types.\n\n\n chunkIndex += chunkLength;\n }\n\n if (this.content === null) {\n throw new Error('THREE.GLTFLoader: JSON content not found.');\n }\n }\n /**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\n\n\n function GLTFDracoMeshCompressionExtension(json, dracoLoader) {\n if (!dracoLoader) {\n throw new Error('THREE.GLTFLoader: No DRACOLoader instance provided.');\n }\n\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n this.json = json;\n this.dracoLoader = dracoLoader;\n this.dracoLoader.preload();\n }\n\n GLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function (primitive, parser) {\n var json = this.json;\n var dracoLoader = this.dracoLoader;\n var bufferViewIndex = primitive.extensions[this.name].bufferView;\n var gltfAttributeMap = primitive.extensions[this.name].attributes;\n var threeAttributeMap = {};\n var attributeNormalizedMap = {};\n var attributeTypeMap = {};\n\n for (var attributeName in gltfAttributeMap) {\n var threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n }\n\n for (attributeName in primitive.attributes) {\n var threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n\n if (gltfAttributeMap[attributeName] !== undefined) {\n var accessorDef = json.accessors[primitive.attributes[attributeName]];\n var componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[threeAttributeName] = componentType;\n attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\n }\n }\n\n return parser.getDependency('bufferView', bufferViewIndex).then(function (bufferView) {\n return new Promise(function (resolve) {\n dracoLoader.decodeDracoFile(bufferView, function (geometry) {\n for (var attributeName in geometry.attributes) {\n var attribute = geometry.attributes[attributeName];\n var normalized = attributeNormalizedMap[attributeName];\n if (normalized !== undefined) attribute.normalized = normalized;\n }\n\n resolve(geometry);\n }, threeAttributeMap, attributeTypeMap);\n });\n });\n };\n /**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\n\n\n function GLTFTextureTransformExtension() {\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n }\n\n GLTFTextureTransformExtension.prototype.extendTexture = function (texture, transform) {\n texture = texture.clone();\n\n if (transform.offset !== undefined) {\n texture.offset.fromArray(transform.offset);\n }\n\n if (transform.rotation !== undefined) {\n texture.rotation = transform.rotation;\n }\n\n if (transform.scale !== undefined) {\n texture.repeat.fromArray(transform.scale);\n }\n\n if (transform.texCoord !== undefined) {\n console.warn('THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.');\n }\n\n texture.needsUpdate = true;\n return texture;\n };\n /**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n */\n\n /**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\n\n\n function GLTFMeshStandardSGMaterial(params) {\n MeshStandardMaterial.call(this);\n this.isGLTFSpecularGlossinessMaterial = true; //various chunks that need replacing\n\n var specularMapParsFragmentChunk = ['#ifdef USE_SPECULARMAP', '\tuniform sampler2D specularMap;', '#endif'].join('\\n');\n var glossinessMapParsFragmentChunk = ['#ifdef USE_GLOSSINESSMAP', '\tuniform sampler2D glossinessMap;', '#endif'].join('\\n');\n var specularMapFragmentChunk = ['vec3 specularFactor = specular;', '#ifdef USE_SPECULARMAP', '\tvec4 texelSpecular = texture2D( specularMap, vUv );', '\ttexelSpecular = sRGBToLinear( texelSpecular );', '\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', '\tspecularFactor *= texelSpecular.rgb;', '#endif'].join('\\n');\n var glossinessMapFragmentChunk = ['float glossinessFactor = glossiness;', '#ifdef USE_GLOSSINESSMAP', '\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );', '\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', '\tglossinessFactor *= texelGlossiness.a;', '#endif'].join('\\n');\n var lightPhysicalFragmentChunk = ['PhysicalMaterial material;', 'material.diffuseColor = diffuseColor.rgb;', 'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );', 'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );', 'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.', 'material.specularRoughness += geometryRoughness;', 'material.specularRoughness = min( material.specularRoughness, 1.0 );', 'material.specularColor = specularFactor.rgb;'].join('\\n');\n var uniforms = {\n specular: {\n value: new Color().setHex(0xffffff)\n },\n glossiness: {\n value: 1\n },\n specularMap: {\n value: null\n },\n glossinessMap: {\n value: null\n }\n };\n this._extraUniforms = uniforms; // please see #14031 or #13198 for an alternate approach\n\n this.onBeforeCompile = function (shader) {\n for (var uniformName in uniforms) {\n shader.uniforms[uniformName] = uniforms[uniformName];\n }\n\n shader.fragmentShader = shader.fragmentShader.replace('uniform float roughness;', 'uniform vec3 specular;');\n shader.fragmentShader = shader.fragmentShader.replace('uniform float metalness;', 'uniform float glossiness;');\n shader.fragmentShader = shader.fragmentShader.replace('#include ', specularMapParsFragmentChunk);\n shader.fragmentShader = shader.fragmentShader.replace('#include ', glossinessMapParsFragmentChunk);\n shader.fragmentShader = shader.fragmentShader.replace('#include ', specularMapFragmentChunk);\n shader.fragmentShader = shader.fragmentShader.replace('#include ', glossinessMapFragmentChunk);\n shader.fragmentShader = shader.fragmentShader.replace('#include ', lightPhysicalFragmentChunk);\n };\n /*eslint-disable*/\n\n\n Object.defineProperties(this, {\n specular: {\n get: function get() {\n return uniforms.specular.value;\n },\n set: function set(v) {\n uniforms.specular.value = v;\n }\n },\n specularMap: {\n get: function get() {\n return uniforms.specularMap.value;\n },\n set: function set(v) {\n uniforms.specularMap.value = v;\n }\n },\n glossiness: {\n get: function get() {\n return uniforms.glossiness.value;\n },\n set: function set(v) {\n uniforms.glossiness.value = v;\n }\n },\n glossinessMap: {\n get: function get() {\n return uniforms.glossinessMap.value;\n },\n set: function set(v) {\n uniforms.glossinessMap.value = v; //how about something like this - @pailhead\n\n if (v) {\n this.defines.USE_GLOSSINESSMAP = ''; // set USE_ROUGHNESSMAP to enable vUv\n\n this.defines.USE_ROUGHNESSMAP = '';\n } else {\n delete this.defines.USE_ROUGHNESSMAP;\n delete this.defines.USE_GLOSSINESSMAP;\n }\n }\n }\n });\n /*eslint-enable*/\n\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n this.setValues(params);\n }\n\n GLTFMeshStandardSGMaterial.prototype = Object.create(MeshStandardMaterial.prototype);\n GLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\n\n GLTFMeshStandardSGMaterial.prototype.copy = function (source) {\n MeshStandardMaterial.prototype.copy.call(this, source);\n this.specularMap = source.specularMap;\n this.specular.copy(source.specular);\n this.glossinessMap = source.glossinessMap;\n this.glossiness = source.glossiness;\n delete this.metalness;\n delete this.roughness;\n delete this.metalnessMap;\n delete this.roughnessMap;\n return this;\n };\n\n function GLTFMaterialsPbrSpecularGlossinessExtension() {\n return {\n name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n specularGlossinessParams: ['color', 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity', 'emissive', 'emissiveIntensity', 'emissiveMap', 'bumpMap', 'bumpScale', 'normalMap', 'normalMapType', 'displacementMap', 'displacementScale', 'displacementBias', 'specularMap', 'specular', 'glossinessMap', 'glossiness', 'alphaMap', 'envMap', 'envMapIntensity', 'refractionRatio'],\n getMaterialType: function getMaterialType() {\n return GLTFMeshStandardSGMaterial;\n },\n extendParams: function extendParams(materialParams, materialDef, parser) {\n var pbrSpecularGlossiness = materialDef.extensions[this.name];\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n var pending = [];\n\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n var array = pbrSpecularGlossiness.diffuseFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', pbrSpecularGlossiness.diffuseTexture));\n }\n\n materialParams.emissive = new Color(0.0, 0.0, 0.0);\n materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n materialParams.specular = new Color(1.0, 1.0, 1.0);\n\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\n var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(materialParams, 'glossinessMap', specGlossMapDef));\n pending.push(parser.assignTexture(materialParams, 'specularMap', specGlossMapDef));\n }\n\n return Promise.all(pending);\n },\n createMaterial: function createMaterial(materialParams) {\n var material = new GLTFMeshStandardSGMaterial(materialParams);\n material.fog = true;\n material.color = materialParams.color;\n material.map = materialParams.map === undefined ? null : materialParams.map;\n material.lightMap = null;\n material.lightMapIntensity = 1.0;\n material.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n material.aoMapIntensity = 1.0;\n material.emissive = materialParams.emissive;\n material.emissiveIntensity = 1.0;\n material.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n material.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n material.bumpScale = 1;\n material.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n material.normalMapType = TangentSpaceNormalMap;\n if (materialParams.normalScale) material.normalScale = materialParams.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n material.specular = materialParams.specular;\n material.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n material.glossiness = materialParams.glossiness;\n material.alphaMap = null;\n material.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n material.envMapIntensity = 1.0;\n material.refractionRatio = 0.98;\n return material;\n }\n };\n }\n /**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\n\n\n function GLTFMeshQuantizationExtension() {\n this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n }\n /*********************************/\n\n /********** INTERPOLATION ********/\n\n /*********************************/\n // Spline Interpolation\n // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\n\n function GLTFCubicSplineInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n\n GLTFCubicSplineInterpolant.prototype = Object.create(Interpolant.prototype);\n GLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n GLTFCubicSplineInterpolant.prototype.copySampleValue_ = function (index) {\n // Copies a sample value to the result buffer. See description of glTF\n // CUBICSPLINE values layout in interpolate_() function below.\n var result = this.resultBuffer,\n values = this.sampleValues,\n valueSize = this.valueSize,\n offset = index * valueSize * 3 + valueSize;\n\n for (var i = 0; i !== valueSize; i++) {\n result[i] = values[offset + i];\n }\n\n return result;\n };\n\n GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n GLTFCubicSplineInterpolant.prototype.interpolate_ = function (i1, t0, t, t1) {\n var result = this.resultBuffer;\n var values = this.sampleValues;\n var stride = this.valueSize;\n var stride2 = stride * 2;\n var stride3 = stride * 3;\n var td = t1 - t0;\n var p = (t - t0) / td;\n var pp = p * p;\n var ppp = pp * p;\n var offset1 = i1 * stride3;\n var offset0 = offset1 - stride3;\n var s2 = -2 * ppp + 3 * pp;\n var s3 = ppp - pp;\n var s0 = 1 - s2;\n var s1 = s3 - pp + p; // Layout of keyframe output values for CUBICSPLINE animations:\n // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\n for (var i = 0; i !== stride; i++) {\n var p0 = values[offset0 + i + stride]; // splineVertex_k\n\n var m0 = values[offset0 + i + stride2] * td; // outTangent_k * (t_k+1 - t_k)\n\n var p1 = values[offset1 + i + stride]; // splineVertex_k+1\n\n var m1 = values[offset1 + i] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n }\n\n return result;\n };\n /*********************************/\n\n /********** INTERNALS ************/\n\n /*********************************/\n\n /* CONSTANTS */\n\n\n var WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n POINTS: 0,\n LINES: 1,\n LINE_LOOP: 2,\n LINE_STRIP: 3,\n TRIANGLES: 4,\n TRIANGLE_STRIP: 5,\n TRIANGLE_FAN: 6,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123\n };\n var WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n var WEBGL_FILTERS = {\n 9728: NearestFilter,\n 9729: LinearFilter,\n 9984: NearestMipmapNearestFilter,\n 9985: LinearMipmapNearestFilter,\n 9986: NearestMipmapLinearFilter,\n 9987: LinearMipmapLinearFilter\n };\n var WEBGL_WRAPPINGS = {\n 33071: ClampToEdgeWrapping,\n 33648: MirroredRepeatWrapping,\n 10497: RepeatWrapping\n };\n var WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n var ATTRIBUTES = {\n POSITION: 'position',\n NORMAL: 'normal',\n TANGENT: 'tangent',\n TEXCOORD_0: 'uv',\n TEXCOORD_1: 'uv2',\n COLOR_0: 'color',\n WEIGHTS_0: 'skinWeight',\n JOINTS_0: 'skinIndex'\n };\n var PATH_PROPERTIES = {\n scale: 'scale',\n translation: 'position',\n rotation: 'quaternion',\n weights: 'morphTargetInfluences'\n };\n var INTERPOLATION = {\n CUBICSPLINE: undefined,\n // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n // keyframe track will be initialized with a default interpolation type, then modified.\n LINEAR: InterpolateLinear,\n STEP: InterpolateDiscrete\n };\n var ALPHA_MODES = {\n OPAQUE: 'OPAQUE',\n MASK: 'MASK',\n BLEND: 'BLEND'\n };\n /* UTILITY FUNCTIONS */\n\n function resolveURL(url, path) {\n // Invalid URL\n if (typeof url !== 'string' || url === '') return ''; // Host Relative URL\n\n if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, '$1');\n } // Absolute URL http://,https://,//\n\n\n if (/^(https?:)?\\/\\//i.test(url)) return url; // Data URI\n\n if (/^data:.*,.*$/i.test(url)) return url; // Blob URL\n\n if (/^blob:.*$/i.test(url)) return url; // Relative URL\n\n return path + url;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\n\n\n function createDefaultMaterial(cache) {\n if (cache['DefaultMaterial'] === undefined) {\n cache['DefaultMaterial'] = new MeshStandardMaterial({\n color: 0xFFFFFF,\n emissive: 0x000000,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: FrontSide\n });\n }\n\n return cache['DefaultMaterial'];\n }\n\n function addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n // Add unknown glTF extensions to an object's userData.\n for (var name in objectDef.extensions) {\n if (knownExtensions[name] === undefined) {\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\n }\n }\n }\n /**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\n\n\n function assignExtrasToUserData(object, gltfDef) {\n if (gltfDef.extras !== undefined) {\n if (typeof gltfDef.extras === 'object') {\n Object.assign(object.userData, gltfDef.extras);\n } else {\n console.warn('THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras);\n }\n }\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\n\n\n function addMorphTargets(geometry, targets, parser) {\n var hasMorphPosition = false;\n var hasMorphNormal = false;\n\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n if (target.POSITION !== undefined) hasMorphPosition = true;\n if (target.NORMAL !== undefined) hasMorphNormal = true;\n if (hasMorphPosition && hasMorphNormal) break;\n }\n\n if (!hasMorphPosition && !hasMorphNormal) return Promise.resolve(geometry);\n var pendingPositionAccessors = [];\n var pendingNormalAccessors = [];\n\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n\n if (hasMorphPosition) {\n var pendingAccessor = target.POSITION !== undefined ? parser.getDependency('accessor', target.POSITION) : geometry.attributes.position;\n pendingPositionAccessors.push(pendingAccessor);\n }\n\n if (hasMorphNormal) {\n var pendingAccessor = target.NORMAL !== undefined ? parser.getDependency('accessor', target.NORMAL) : geometry.attributes.normal;\n pendingNormalAccessors.push(pendingAccessor);\n }\n }\n\n return Promise.all([Promise.all(pendingPositionAccessors), Promise.all(pendingNormalAccessors)]).then(function (accessors) {\n var morphPositions = accessors[0];\n var morphNormals = accessors[1];\n if (hasMorphPosition) geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals;\n geometry.morphTargetsRelative = true;\n return geometry;\n });\n }\n /**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\n\n\n function updateMorphTargets(mesh, meshDef) {\n mesh.updateMorphTargets();\n\n if (meshDef.weights !== undefined) {\n for (var i = 0, il = meshDef.weights.length; i < il; i++) {\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\n }\n } // .extras has user-defined data, so check that .extras.targetNames is an array.\n\n\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n var targetNames = meshDef.extras.targetNames;\n\n if (mesh.morphTargetInfluences.length === targetNames.length) {\n mesh.morphTargetDictionary = {};\n\n for (var i = 0, il = targetNames.length; i < il; i++) {\n mesh.morphTargetDictionary[targetNames[i]] = i;\n }\n } else {\n console.warn('THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.');\n }\n }\n }\n\n function createPrimitiveKey(primitiveDef) {\n var dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n var geometryKey;\n\n if (dracoExtension) {\n geometryKey = 'draco:' + dracoExtension.bufferView + ':' + dracoExtension.indices + ':' + createAttributesKey(dracoExtension.attributes);\n } else {\n geometryKey = primitiveDef.indices + ':' + createAttributesKey(primitiveDef.attributes) + ':' + primitiveDef.mode;\n }\n\n return geometryKey;\n }\n\n function createAttributesKey(attributes) {\n var attributesKey = '';\n var keys = Object.keys(attributes).sort();\n\n for (var i = 0, il = keys.length; i < il; i++) {\n attributesKey += keys[i] + ':' + attributes[keys[i]] + ';';\n }\n\n return attributesKey;\n }\n /* GLTF PARSER */\n\n\n function GLTFParser(json, options) {\n this.json = json || {};\n this.extensions = {};\n this.plugins = {};\n this.options = options || {}; // loader object cache\n\n this.cache = new GLTFRegistry(); // associations between Three.js objects and glTF elements\n\n this.associations = new Map(); // BufferGeometry caching\n\n this.primitiveCache = {}; // Object3D instance caches\n\n this.meshCache = {\n refs: {},\n uses: {}\n };\n this.cameraCache = {\n refs: {},\n uses: {}\n };\n this.lightCache = {\n refs: {},\n uses: {}\n }; // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n // expensive work of uploading a texture to the GPU off the main thread.\n\n if (typeof createImageBitmap !== 'undefined' && /Firefox/.test(navigator.userAgent) === false) {\n this.textureLoader = new ImageBitmapLoader(this.options.manager);\n } else {\n this.textureLoader = new TextureLoader(this.options.manager);\n }\n\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.fileLoader = new FileLoader(this.options.manager);\n this.fileLoader.setResponseType('arraybuffer');\n\n if (this.options.crossOrigin === 'use-credentials') {\n this.fileLoader.setWithCredentials(true);\n }\n }\n\n GLTFParser.prototype.setExtensions = function (extensions) {\n this.extensions = extensions;\n };\n\n GLTFParser.prototype.setPlugins = function (plugins) {\n this.plugins = plugins;\n };\n\n GLTFParser.prototype.parse = function (onLoad, onError) {\n var parser = this;\n var json = this.json;\n var extensions = this.extensions; // Clear the loader cache\n\n this.cache.removeAll(); // Mark the special nodes/meshes in json for efficient parse\n\n this._markDefs();\n\n Promise.all([this.getDependencies('scene'), this.getDependencies('animation'), this.getDependencies('camera')]).then(function (dependencies) {\n var result = {\n scene: dependencies[0][json.scene || 0],\n scenes: dependencies[0],\n animations: dependencies[1],\n cameras: dependencies[2],\n asset: json.asset,\n parser: parser,\n userData: {}\n };\n addUnknownExtensionsToUserData(extensions, result, json);\n assignExtrasToUserData(result, json);\n onLoad(result);\n })[\"catch\"](onError);\n };\n /**\n * Marks the special nodes/meshes in json for efficient parse.\n */\n\n\n GLTFParser.prototype._markDefs = function () {\n var nodeDefs = this.json.nodes || [];\n var skinDefs = this.json.skins || [];\n var meshDefs = this.json.meshes || []; // Nothing in the node definition indicates whether it is a Bone or an\n // Object3D. Use the skins' joint references to mark bones.\n\n for (var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n var joints = skinDefs[skinIndex].joints;\n\n for (var i = 0, il = joints.length; i < il; i++) {\n nodeDefs[joints[i]].isBone = true;\n }\n } // Iterate over all nodes, marking references to shared resources,\n // as well as skeleton joints.\n\n\n for (var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n var nodeDef = nodeDefs[nodeIndex];\n\n if (nodeDef.mesh !== undefined) {\n this._addNodeRef(this.meshCache, nodeDef.mesh); // Nothing in the mesh definition indicates whether it is\n // a SkinnedMesh or Mesh. Use the node's mesh reference\n // to mark SkinnedMesh if node has skin.\n\n\n if (nodeDef.skin !== undefined) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n\n if (nodeDef.camera !== undefined) {\n this._addNodeRef(this.cameraCache, nodeDef.camera);\n }\n\n if (nodeDef.extensions && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL] && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light !== undefined) {\n this._addNodeRef(this.lightCache, nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light);\n }\n }\n };\n /**\n * Counts references to shared node / Object3D resources. These resources\n * can be reused, or \"instantiated\", at multiple nodes in the scene\n * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n * be marked. Non-scenegraph resources (like Materials, Geometries, and\n * Textures) can be reused directly and are not marked here.\n *\n * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n */\n\n\n GLTFParser.prototype._addNodeRef = function (cache, index) {\n if (index === undefined) return;\n\n if (cache.refs[index] === undefined) {\n cache.refs[index] = cache.uses[index] = 0;\n }\n\n cache.refs[index]++;\n };\n /** Returns a reference to a shared resource, cloning it if necessary. */\n\n\n GLTFParser.prototype._getNodeRef = function (cache, index, object) {\n if (cache.refs[index] <= 1) return object;\n var ref = object.clone();\n ref.name += '_instance_' + cache.uses[index]++;\n return ref;\n };\n\n GLTFParser.prototype._invokeOne = function (func) {\n var extensions = Object.values(this.plugins);\n extensions.push(this);\n\n for (var i = 0; i < extensions.length; i++) {\n var result = func(extensions[i]);\n if (result) return result;\n }\n };\n\n GLTFParser.prototype._invokeAll = function (func) {\n var extensions = Object.values(this.plugins);\n extensions.unshift(this);\n var pending = [];\n\n for (var i = 0; i < extensions.length; i++) {\n pending.push(func(extensions[i]));\n }\n\n return Promise.all(pending);\n };\n /**\n * Requests the specified dependency asynchronously, with caching.\n * @param {string} type\n * @param {number} index\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.getDependency = function (type, index) {\n var cacheKey = type + ':' + index;\n var dependency = this.cache.get(cacheKey);\n\n if (!dependency) {\n switch (type) {\n case 'scene':\n dependency = this.loadScene(index);\n break;\n\n case 'node':\n dependency = this.loadNode(index);\n break;\n\n case 'mesh':\n dependency = this._invokeOne(function (ext) {\n return ext.loadMesh && ext.loadMesh(index);\n });\n break;\n\n case 'accessor':\n dependency = this.loadAccessor(index);\n break;\n\n case 'bufferView':\n dependency = this._invokeOne(function (ext) {\n return ext.loadBufferView && ext.loadBufferView(index);\n });\n break;\n\n case 'buffer':\n dependency = this.loadBuffer(index);\n break;\n\n case 'material':\n dependency = this._invokeOne(function (ext) {\n return ext.loadMaterial && ext.loadMaterial(index);\n });\n break;\n\n case 'texture':\n dependency = this._invokeOne(function (ext) {\n return ext.loadTexture && ext.loadTexture(index);\n });\n break;\n\n case 'skin':\n dependency = this.loadSkin(index);\n break;\n\n case 'animation':\n dependency = this.loadAnimation(index);\n break;\n\n case 'camera':\n dependency = this.loadCamera(index);\n break;\n\n case 'light':\n dependency = this.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].loadLight(index);\n break;\n\n default:\n throw new Error('Unknown type: ' + type);\n }\n\n this.cache.add(cacheKey, dependency);\n }\n\n return dependency;\n };\n /**\n * Requests all dependencies of the specified type asynchronously, with caching.\n * @param {string} type\n * @return {Promise>}\n */\n\n\n GLTFParser.prototype.getDependencies = function (type) {\n var dependencies = this.cache.get(type);\n\n if (!dependencies) {\n var parser = this;\n var defs = this.json[type + (type === 'mesh' ? 'es' : 's')] || [];\n dependencies = Promise.all(defs.map(function (def, index) {\n return parser.getDependency(type, index);\n }));\n this.cache.add(type, dependencies);\n }\n\n return dependencies;\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadBuffer = function (bufferIndex) {\n var bufferDef = this.json.buffers[bufferIndex];\n var loader = this.fileLoader;\n\n if (bufferDef.type && bufferDef.type !== 'arraybuffer') {\n throw new Error('THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.');\n } // If present, GLB container is required to be the first buffer.\n\n\n if (bufferDef.uri === undefined && bufferIndex === 0) {\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n }\n\n var options = this.options;\n return new Promise(function (resolve, reject) {\n loader.load(resolveURL(bufferDef.uri, options.path), resolve, undefined, function () {\n reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n });\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferViewIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadBufferView = function (bufferViewIndex) {\n var bufferViewDef = this.json.bufferViews[bufferViewIndex];\n return this.getDependency('buffer', bufferViewDef.buffer).then(function (buffer) {\n var byteLength = bufferViewDef.byteLength || 0;\n var byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice(byteOffset, byteOffset + byteLength);\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n * @param {number} accessorIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadAccessor = function (accessorIndex) {\n var parser = this;\n var json = this.json;\n var accessorDef = this.json.accessors[accessorIndex];\n\n if (accessorDef.bufferView === undefined && accessorDef.sparse === undefined) {\n // Ignore empty accessors, which may be used to declare runtime\n // information about attributes coming from another source (e.g. Draco\n // compression extension).\n return Promise.resolve(null);\n }\n\n var pendingBufferViews = [];\n\n if (accessorDef.bufferView !== undefined) {\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.bufferView));\n } else {\n pendingBufferViews.push(null);\n }\n\n if (accessorDef.sparse !== undefined) {\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.indices.bufferView));\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.values.bufferView));\n }\n\n return Promise.all(pendingBufferViews).then(function (bufferViews) {\n var bufferView = bufferViews[0];\n var itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n var TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\n var elementBytes = TypedArray.BYTES_PER_ELEMENT;\n var itemBytes = elementBytes * itemSize;\n var byteOffset = accessorDef.byteOffset || 0;\n var byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[accessorDef.bufferView].byteStride : undefined;\n var normalized = accessorDef.normalized === true;\n var array, bufferAttribute; // The buffer is not interleaved if the stride is the item size in bytes.\n\n if (byteStride && byteStride !== itemBytes) {\n // Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n // This makes sure that IBA.count reflects accessor.count properly\n var ibSlice = Math.floor(byteOffset / byteStride);\n var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n var ib = parser.cache.get(ibCacheKey);\n\n if (!ib) {\n array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes); // Integer parameters to IB/IBA are in array elements, not bytes.\n\n ib = new InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n\n bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized);\n } else {\n if (bufferView === null) {\n array = new TypedArray(accessorDef.count * itemSize);\n } else {\n array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n }\n\n bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n } // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\n\n if (accessorDef.sparse !== undefined) {\n var itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n var TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n var byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n var byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n var sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n var sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n\n if (bufferView !== null) {\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n }\n\n for (var i = 0, il = sparseIndices.length; i < il; i++) {\n var index = sparseIndices[i];\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\n if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n if (itemSize >= 5) throw new Error('THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.');\n }\n }\n\n return bufferAttribute;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n * @param {number} textureIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadTexture = function (textureIndex) {\n var parser = this;\n var json = this.json;\n var options = this.options;\n var textureDef = json.textures[textureIndex];\n var textureExtensions = textureDef.extensions || {};\n var source;\n\n if (textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS]) {\n source = json.images[textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS].source];\n } else {\n source = json.images[textureDef.source];\n }\n\n var loader;\n\n if (source.uri) {\n loader = options.manager.getHandler(source.uri);\n }\n\n if (!loader) {\n loader = textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS] ? parser.extensions[EXTENSIONS.MSFT_TEXTURE_DDS].ddsLoader : this.textureLoader;\n }\n\n return this.loadTextureImage(textureIndex, source, loader);\n };\n\n GLTFParser.prototype.loadTextureImage = function (textureIndex, source, loader) {\n var parser = this;\n var json = this.json;\n var options = this.options;\n var textureDef = json.textures[textureIndex];\n var URL = self.URL || self.webkitURL;\n var sourceURI = source.uri;\n var isObjectURL = false;\n var hasAlpha = true;\n if (source.mimeType === 'image/jpeg') hasAlpha = false;\n\n if (source.bufferView !== undefined) {\n // Load binary image data from bufferView, if provided.\n sourceURI = parser.getDependency('bufferView', source.bufferView).then(function (bufferView) {\n if (source.mimeType === 'image/png') {\n // https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header\n hasAlpha = new DataView(bufferView, 25, 1).getUint8(0, false) === 6;\n }\n\n isObjectURL = true;\n var blob = new Blob([bufferView], {\n type: source.mimeType\n });\n sourceURI = URL.createObjectURL(blob);\n return sourceURI;\n });\n }\n\n return Promise.resolve(sourceURI).then(function (sourceURI) {\n return new Promise(function (resolve, reject) {\n var onLoad = resolve;\n\n if (loader.isImageBitmapLoader === true) {\n onLoad = function onLoad(imageBitmap) {\n resolve(new CanvasTexture(imageBitmap));\n };\n }\n\n loader.load(resolveURL(sourceURI, options.path), onLoad, undefined, reject);\n });\n }).then(function (texture) {\n // Clean up resources and configure Texture.\n if (isObjectURL === true) {\n URL.revokeObjectURL(sourceURI);\n }\n\n texture.flipY = false;\n if (textureDef.name) texture.name = textureDef.name; // When there is definitely no alpha channel in the texture, set RGBFormat to save space.\n\n if (!hasAlpha) texture.format = RGBFormat;\n var samplers = json.samplers || {};\n var sampler = samplers[textureDef.sampler] || {};\n texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n parser.associations.set(texture, {\n type: 'textures',\n index: textureIndex\n });\n return texture;\n });\n };\n /**\n * Asynchronously assigns a texture to the given material parameters.\n * @param {Object} materialParams\n * @param {string} mapName\n * @param {Object} mapDef\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.assignTexture = function (materialParams, mapName, mapDef) {\n var parser = this;\n return this.getDependency('texture', mapDef.index).then(function (texture) {\n // Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n // However, we will copy UV set 0 to UV set 1 on demand for aoMap\n if (mapDef.texCoord !== undefined && mapDef.texCoord != 0 && !(mapName === 'aoMap' && mapDef.texCoord == 1)) {\n console.warn('THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.');\n }\n\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n var transform = mapDef.extensions !== undefined ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : undefined;\n\n if (transform) {\n var gltfReference = parser.associations.get(texture);\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n parser.associations.set(texture, gltfReference);\n }\n }\n\n materialParams[mapName] = texture;\n });\n };\n /**\n * Assigns final material to a Mesh, Line, or Points instance. The instance\n * already has a material (generated from the glTF material options alone)\n * but reuse of the same glTF material may require multiple threejs materials\n * to accomodate different primitive types, defines, etc. New materials will\n * be created if necessary, and reused from a cache.\n * @param {Object3D} mesh Mesh, Line, or Points instance.\n */\n\n\n GLTFParser.prototype.assignFinalMaterial = function (mesh) {\n var geometry = mesh.geometry;\n var material = mesh.material;\n var useVertexTangents = geometry.attributes.tangent !== undefined;\n var useVertexColors = geometry.attributes.color !== undefined;\n var useFlatShading = geometry.attributes.normal === undefined;\n var useSkinning = mesh.isSkinnedMesh === true;\n var useMorphTargets = Object.keys(geometry.morphAttributes).length > 0;\n var useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n if (mesh.isPoints) {\n var cacheKey = 'PointsMaterial:' + material.uuid;\n var pointsMaterial = this.cache.get(cacheKey);\n\n if (!pointsMaterial) {\n pointsMaterial = new PointsMaterial();\n Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n this.cache.add(cacheKey, pointsMaterial);\n }\n\n material = pointsMaterial;\n } else if (mesh.isLine) {\n var cacheKey = 'LineBasicMaterial:' + material.uuid;\n var lineMaterial = this.cache.get(cacheKey);\n\n if (!lineMaterial) {\n lineMaterial = new LineBasicMaterial();\n Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n this.cache.add(cacheKey, lineMaterial);\n }\n\n material = lineMaterial;\n } // Clone the material if it will be modified\n\n\n if (useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets) {\n var cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n if (material.isGLTFSpecularGlossinessMaterial) cacheKey += 'specular-glossiness:';\n if (useSkinning) cacheKey += 'skinning:';\n if (useVertexTangents) cacheKey += 'vertex-tangents:';\n if (useVertexColors) cacheKey += 'vertex-colors:';\n if (useFlatShading) cacheKey += 'flat-shading:';\n if (useMorphTargets) cacheKey += 'morph-targets:';\n if (useMorphNormals) cacheKey += 'morph-normals:';\n var cachedMaterial = this.cache.get(cacheKey);\n\n if (!cachedMaterial) {\n cachedMaterial = material.clone();\n if (useSkinning) cachedMaterial.skinning = true;\n if (useVertexTangents) cachedMaterial.vertexTangents = true;\n if (useVertexColors) cachedMaterial.vertexColors = true;\n if (useFlatShading) cachedMaterial.flatShading = true;\n if (useMorphTargets) cachedMaterial.morphTargets = true;\n if (useMorphNormals) cachedMaterial.morphNormals = true;\n this.cache.add(cacheKey, cachedMaterial);\n this.associations.set(cachedMaterial, this.associations.get(material));\n }\n\n material = cachedMaterial;\n } // workarounds for mesh and geometry\n\n\n if (material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined) {\n geometry.setAttribute('uv2', geometry.attributes.uv);\n } // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\n\n if (material.normalScale && !useVertexTangents) {\n material.normalScale.y = -material.normalScale.y;\n }\n\n if (material.clearcoatNormalScale && !useVertexTangents) {\n material.clearcoatNormalScale.y = -material.clearcoatNormalScale.y;\n }\n\n mesh.material = material;\n };\n\n GLTFParser.prototype.getMaterialType = function ()\n /* materialIndex */\n {\n return MeshStandardMaterial;\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n * @param {number} materialIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadMaterial = function (materialIndex) {\n var parser = this;\n var json = this.json;\n var extensions = this.extensions;\n var materialDef = json.materials[materialIndex];\n var materialType;\n var materialParams = {};\n var materialExtensions = materialDef.extensions || {};\n var pending = [];\n\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n var sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\n materialType = sgExtension.getMaterialType();\n pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\n } else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n var kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n materialType = kmuExtension.getMaterialType();\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n } else {\n // Specification:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n var metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n var array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\n }\n\n materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n if (metallicRoughness.metallicRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture));\n pending.push(parser.assignTexture(materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture));\n }\n\n materialType = this._invokeOne(function (ext) {\n return ext.getMaterialType && ext.getMaterialType(materialIndex);\n });\n pending.push(this._invokeAll(function (ext) {\n return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\n }));\n }\n\n if (materialDef.doubleSided === true) {\n materialParams.side = DoubleSide;\n }\n\n var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true; // See: https://github.com/mrdoob/three.js/issues/17706\n\n materialParams.depthWrite = false;\n } else {\n materialParams.transparent = false;\n\n if (alphaMode === ALPHA_MODES.MASK) {\n materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n }\n }\n\n if (materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'normalMap', materialDef.normalTexture));\n materialParams.normalScale = new Vector2(1, 1);\n\n if (materialDef.normalTexture.scale !== undefined) {\n materialParams.normalScale.set(materialDef.normalTexture.scale, materialDef.normalTexture.scale);\n }\n }\n\n if (materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'aoMap', materialDef.occlusionTexture));\n\n if (materialDef.occlusionTexture.strength !== undefined) {\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n }\n }\n\n if (materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial) {\n materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n }\n\n if (materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'emissiveMap', materialDef.emissiveTexture));\n }\n\n return Promise.all(pending).then(function () {\n var material;\n\n if (materialType === GLTFMeshStandardSGMaterial) {\n material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n } else {\n material = new materialType(materialParams);\n }\n\n if (materialDef.name) material.name = materialDef.name; // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\n if (material.map) material.map.encoding = sRGBEncoding;\n if (material.emissiveMap) material.emissiveMap.encoding = sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n parser.associations.set(material, {\n type: 'materials',\n index: materialIndex\n });\n if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n };\n /**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\n\n\n function computeBounds(geometry, primitiveDef, parser) {\n var attributes = primitiveDef.attributes;\n var box = new Box3();\n\n if (attributes.POSITION !== undefined) {\n var accessor = parser.json.accessors[attributes.POSITION];\n var min = accessor.min;\n var max = accessor.max; // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n if (min !== undefined && max !== undefined) {\n box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max[0], max[1], max[2]));\n } else {\n console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\n return;\n }\n } else {\n return;\n }\n\n var targets = primitiveDef.targets;\n\n if (targets !== undefined) {\n var maxDisplacement = new Vector3();\n var vector = new Vector3();\n\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n\n if (target.POSITION !== undefined) {\n var accessor = parser.json.accessors[target.POSITION];\n var min = accessor.min;\n var max = accessor.max; // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n if (min !== undefined && max !== undefined) {\n // we need to get max of absolute components because target weight is [-1,1]\n vector.setX(Math.max(Math.abs(min[0]), Math.abs(max[0])));\n vector.setY(Math.max(Math.abs(min[1]), Math.abs(max[1])));\n vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max[2]))); // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n // are used to implement key-frame animations and as such only two are active at a time - this results in very large\n // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\n maxDisplacement.max(vector);\n } else {\n console.warn('THREE.GLTFLoader: Missing min/max properties for accessor POSITION.');\n }\n }\n } // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\n\n box.expandByVector(maxDisplacement);\n }\n\n geometry.boundingBox = box;\n var sphere = new Sphere();\n box.getCenter(sphere.center);\n sphere.radius = box.min.distanceTo(box.max) / 2;\n geometry.boundingSphere = sphere;\n }\n /**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\n\n\n function addPrimitiveAttributes(geometry, primitiveDef, parser) {\n var attributes = primitiveDef.attributes;\n var pending = [];\n\n function assignAttributeAccessor(accessorIndex, attributeName) {\n return parser.getDependency('accessor', accessorIndex).then(function (accessor) {\n geometry.setAttribute(attributeName, accessor);\n });\n }\n\n for (var gltfAttributeName in attributes) {\n var threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); // Skip attributes already provided by e.g. Draco extension.\n\n if (threeAttributeName in geometry.attributes) continue;\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n }\n\n if (primitiveDef.indices !== undefined && !geometry.index) {\n var accessor = parser.getDependency('accessor', primitiveDef.indices).then(function (accessor) {\n geometry.setIndex(accessor);\n });\n pending.push(accessor);\n }\n\n assignExtrasToUserData(geometry, primitiveDef);\n computeBounds(geometry, primitiveDef, parser);\n return Promise.all(pending).then(function () {\n return primitiveDef.targets !== undefined ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n });\n }\n /**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\n\n\n function toTrianglesDrawMode(geometry, drawMode) {\n var index = geometry.getIndex(); // generate index if not present\n\n if (index === null) {\n var indices = [];\n var position = geometry.getAttribute('position');\n\n if (position !== undefined) {\n for (var i = 0; i < position.count; i++) {\n indices.push(i);\n }\n\n geometry.setIndex(indices);\n index = geometry.getIndex();\n } else {\n console.error('THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.');\n return geometry;\n }\n } //\n\n\n var numberOfTriangles = index.count - 2;\n var newIndices = [];\n\n if (drawMode === TriangleFanDrawMode) {\n // gl.TRIANGLE_FAN\n for (var i = 1; i <= numberOfTriangles; i++) {\n newIndices.push(index.getX(0));\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n }\n } else {\n // gl.TRIANGLE_STRIP\n for (var i = 0; i < numberOfTriangles; i++) {\n if (i % 2 === 0) {\n newIndices.push(index.getX(i));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i + 2));\n } else {\n newIndices.push(index.getX(i + 2));\n newIndices.push(index.getX(i + 1));\n newIndices.push(index.getX(i));\n }\n }\n }\n\n if (newIndices.length / 3 !== numberOfTriangles) {\n console.error('THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.');\n } // build final geometry\n\n\n var newGeometry = geometry.clone();\n newGeometry.setIndex(newIndices);\n return newGeometry;\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n *\n * @param {Array} primitives\n * @return {Promise>}\n */\n\n\n GLTFParser.prototype.loadGeometries = function (primitives) {\n var parser = this;\n var extensions = this.extensions;\n var cache = this.primitiveCache;\n\n function createDracoPrimitive(primitive) {\n return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function (geometry) {\n return addPrimitiveAttributes(geometry, primitive, parser);\n });\n }\n\n var pending = [];\n\n for (var i = 0, il = primitives.length; i < il; i++) {\n var primitive = primitives[i];\n var cacheKey = createPrimitiveKey(primitive); // See if we've already created this geometry\n\n var cached = cache[cacheKey];\n\n if (cached) {\n // Use the cached geometry if it exists\n pending.push(cached.promise);\n } else {\n var geometryPromise;\n\n if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n // Use DRACO geometry if available\n geometryPromise = createDracoPrimitive(primitive);\n } else {\n // Otherwise create a new geometry\n geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n } // Cache this geometry\n\n\n cache[cacheKey] = {\n primitive: primitive,\n promise: geometryPromise\n };\n pending.push(geometryPromise);\n }\n }\n\n return Promise.all(pending);\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n * @param {number} meshIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadMesh = function (meshIndex) {\n var parser = this;\n var json = this.json;\n var meshDef = json.meshes[meshIndex];\n var primitives = meshDef.primitives;\n var pending = [];\n\n for (var i = 0, il = primitives.length; i < il; i++) {\n var material = primitives[i].material === undefined ? createDefaultMaterial(this.cache) : this.getDependency('material', primitives[i].material);\n pending.push(material);\n }\n\n pending.push(parser.loadGeometries(primitives));\n return Promise.all(pending).then(function (results) {\n var materials = results.slice(0, results.length - 1);\n var geometries = results[results.length - 1];\n var meshes = [];\n\n for (var i = 0, il = geometries.length; i < il; i++) {\n var geometry = geometries[i];\n var primitive = primitives[i]; // 1. create Mesh\n\n var mesh;\n var material = materials[i];\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === undefined) {\n // .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material);\n\n if (mesh.isSkinnedMesh === true && !mesh.geometry.attributes.skinWeight.normalized) {\n // we normalize floating point skin weight array to fix malformed assets (see #15319)\n // it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n mesh.normalizeSkinWeights();\n }\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n }\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new LineSegments(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new Line(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new LineLoop(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new Points(geometry, material);\n } else {\n throw new Error('THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode);\n }\n\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n updateMorphTargets(mesh, meshDef);\n }\n\n mesh.name = meshDef.name || 'mesh_' + meshIndex;\n if (geometries.length > 1) mesh.name += '_' + i;\n assignExtrasToUserData(mesh, meshDef);\n parser.assignFinalMaterial(mesh);\n meshes.push(mesh);\n }\n\n if (meshes.length === 1) {\n return meshes[0];\n }\n\n var group = new Group();\n\n for (var i = 0, il = meshes.length; i < il; i++) {\n group.add(meshes[i]);\n }\n\n return group;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n * @param {number} cameraIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadCamera = function (cameraIndex) {\n var camera;\n var cameraDef = this.json.cameras[cameraIndex];\n var params = cameraDef[cameraDef.type];\n\n if (!params) {\n console.warn('THREE.GLTFLoader: Missing camera parameters.');\n return;\n }\n\n if (cameraDef.type === 'perspective') {\n camera = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n } else if (cameraDef.type === 'orthographic') {\n camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n }\n\n if (cameraDef.name) camera.name = cameraDef.name;\n assignExtrasToUserData(camera, cameraDef);\n return Promise.resolve(camera);\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n * @param {number} skinIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadSkin = function (skinIndex) {\n var skinDef = this.json.skins[skinIndex];\n var skinEntry = {\n joints: skinDef.joints\n };\n\n if (skinDef.inverseBindMatrices === undefined) {\n return Promise.resolve(skinEntry);\n }\n\n return this.getDependency('accessor', skinDef.inverseBindMatrices).then(function (accessor) {\n skinEntry.inverseBindMatrices = accessor;\n return skinEntry;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n * @param {number} animationIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadAnimation = function (animationIndex) {\n var json = this.json;\n var animationDef = json.animations[animationIndex];\n var pendingNodes = [];\n var pendingInputAccessors = [];\n var pendingOutputAccessors = [];\n var pendingSamplers = [];\n var pendingTargets = [];\n\n for (var i = 0, il = animationDef.channels.length; i < il; i++) {\n var channel = animationDef.channels[i];\n var sampler = animationDef.samplers[channel.sampler];\n var target = channel.target;\n var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\n var input = animationDef.parameters !== undefined ? animationDef.parameters[sampler.input] : sampler.input;\n var output = animationDef.parameters !== undefined ? animationDef.parameters[sampler.output] : sampler.output;\n pendingNodes.push(this.getDependency('node', name));\n pendingInputAccessors.push(this.getDependency('accessor', input));\n pendingOutputAccessors.push(this.getDependency('accessor', output));\n pendingSamplers.push(sampler);\n pendingTargets.push(target);\n }\n\n return Promise.all([Promise.all(pendingNodes), Promise.all(pendingInputAccessors), Promise.all(pendingOutputAccessors), Promise.all(pendingSamplers), Promise.all(pendingTargets)]).then(function (dependencies) {\n var nodes = dependencies[0];\n var inputAccessors = dependencies[1];\n var outputAccessors = dependencies[2];\n var samplers = dependencies[3];\n var targets = dependencies[4];\n var tracks = [];\n\n for (var i = 0, il = nodes.length; i < il; i++) {\n var node = nodes[i];\n var inputAccessor = inputAccessors[i];\n var outputAccessor = outputAccessors[i];\n var sampler = samplers[i];\n var target = targets[i];\n if (node === undefined) continue;\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n var TypedKeyframeTrack;\n\n switch (PATH_PROPERTIES[target.path]) {\n case PATH_PROPERTIES.weights:\n TypedKeyframeTrack = NumberKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = QuaternionKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = VectorKeyframeTrack;\n break;\n }\n\n var targetName = node.name ? node.name : node.uuid;\n var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\n var targetNames = [];\n\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n // Node may be a Group (glTF mesh with several primitives) or a Mesh.\n node.traverse(function (object) {\n if (object.isMesh === true && object.morphTargetInfluences) {\n targetNames.push(object.name ? object.name : object.uuid);\n }\n });\n } else {\n targetNames.push(targetName);\n }\n\n var outputArray = outputAccessor.array;\n\n if (outputAccessor.normalized) {\n var scale;\n\n if (outputArray.constructor === Int8Array) {\n scale = 1 / 127;\n } else if (outputArray.constructor === Uint8Array) {\n scale = 1 / 255;\n } else if (outputArray.constructor == Int16Array) {\n scale = 1 / 32767;\n } else if (outputArray.constructor === Uint16Array) {\n scale = 1 / 65535;\n } else {\n throw new Error('THREE.GLTFLoader: Unsupported output accessor component type.');\n }\n\n var scaled = new Float32Array(outputArray.length);\n\n for (var j = 0, jl = outputArray.length; j < jl; j++) {\n scaled[j] = outputArray[j] * scale;\n }\n\n outputArray = scaled;\n }\n\n for (var j = 0, jl = targetNames.length; j < jl; j++) {\n var track = new TypedKeyframeTrack(targetNames[j] + '.' + PATH_PROPERTIES[target.path], inputAccessor.array, outputArray, interpolation); // Override interpolation with custom factory method.\n\n if (sampler.interpolation === 'CUBICSPLINE') {\n track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\n // A CUBICSPLINE keyframe in glTF has three output values for each input value,\n // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n // must be divided by three to get the interpolant's sampleSize argument.\n return new GLTFCubicSplineInterpolant(this.times, this.values, this.getValueSize() / 3, result);\n }; // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\n\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n }\n\n tracks.push(track);\n }\n }\n\n var name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n return new AnimationClip(name, undefined, tracks);\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n * @param {number} nodeIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadNode = function (nodeIndex) {\n var json = this.json;\n var extensions = this.extensions;\n var parser = this;\n var nodeDef = json.nodes[nodeIndex];\n return function () {\n var pending = [];\n\n if (nodeDef.mesh !== undefined) {\n pending.push(parser.getDependency('mesh', nodeDef.mesh).then(function (mesh) {\n var node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh); // if weights are provided on the node, override weights on the mesh.\n\n\n if (nodeDef.weights !== undefined) {\n node.traverse(function (o) {\n if (!o.isMesh) return;\n\n for (var i = 0, il = nodeDef.weights.length; i < il; i++) {\n o.morphTargetInfluences[i] = nodeDef.weights[i];\n }\n });\n }\n\n return node;\n }));\n }\n\n if (nodeDef.camera !== undefined) {\n pending.push(parser.getDependency('camera', nodeDef.camera).then(function (camera) {\n return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n }));\n }\n\n if (nodeDef.extensions && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL] && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light !== undefined) {\n var lightIndex = nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light;\n pending.push(parser.getDependency('light', lightIndex).then(function (light) {\n return parser._getNodeRef(parser.lightCache, lightIndex, light);\n }));\n }\n\n return Promise.all(pending);\n }().then(function (objects) {\n var node; // .isBone isn't in glTF spec. See ._markDefs\n\n if (nodeDef.isBone === true) {\n node = new Bone();\n } else if (objects.length > 1) {\n node = new Group();\n } else if (objects.length === 1) {\n node = objects[0];\n } else {\n node = new Object3D();\n }\n\n if (node !== objects[0]) {\n for (var i = 0, il = objects.length; i < il; i++) {\n node.add(objects[i]);\n }\n }\n\n if (nodeDef.name) {\n node.userData.name = nodeDef.name;\n node.name = PropertyBinding.sanitizeNodeName(nodeDef.name);\n }\n\n assignExtrasToUserData(node, nodeDef);\n if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef);\n\n if (nodeDef.matrix !== undefined) {\n var matrix = new Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix4(matrix);\n } else {\n if (nodeDef.translation !== undefined) {\n node.position.fromArray(nodeDef.translation);\n }\n\n if (nodeDef.rotation !== undefined) {\n node.quaternion.fromArray(nodeDef.rotation);\n }\n\n if (nodeDef.scale !== undefined) {\n node.scale.fromArray(nodeDef.scale);\n }\n }\n\n parser.associations.set(node, {\n type: 'nodes',\n index: nodeIndex\n });\n return node;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n * @param {number} sceneIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadScene = function () {\n // scene node hierachy builder\n function buildNodeHierachy(nodeId, parentObject, json, parser) {\n var nodeDef = json.nodes[nodeId];\n return parser.getDependency('node', nodeId).then(function (node) {\n if (nodeDef.skin === undefined) return node; // build skeleton here as well\n\n var skinEntry;\n return parser.getDependency('skin', nodeDef.skin).then(function (skin) {\n skinEntry = skin;\n var pendingJoints = [];\n\n for (var i = 0, il = skinEntry.joints.length; i < il; i++) {\n pendingJoints.push(parser.getDependency('node', skinEntry.joints[i]));\n }\n\n return Promise.all(pendingJoints);\n }).then(function (jointNodes) {\n node.traverse(function (mesh) {\n if (!mesh.isMesh) return;\n var bones = [];\n var boneInverses = [];\n\n for (var j = 0, jl = jointNodes.length; j < jl; j++) {\n var jointNode = jointNodes[j];\n\n if (jointNode) {\n bones.push(jointNode);\n var mat = new Matrix4();\n\n if (skinEntry.inverseBindMatrices !== undefined) {\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n }\n\n boneInverses.push(mat);\n } else {\n console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n }\n }\n\n mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\n });\n return node;\n });\n }).then(function (node) {\n // build node hierachy\n parentObject.add(node);\n var pending = [];\n\n if (nodeDef.children) {\n var children = nodeDef.children;\n\n for (var i = 0, il = children.length; i < il; i++) {\n var child = children[i];\n pending.push(buildNodeHierachy(child, node, json, parser));\n }\n }\n\n return Promise.all(pending);\n });\n }\n\n return function loadScene(sceneIndex) {\n var json = this.json;\n var extensions = this.extensions;\n var sceneDef = this.json.scenes[sceneIndex];\n var parser = this; // Loader returns Group, not Scene.\n // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\n var scene = new Group();\n if (sceneDef.name) scene.name = sceneDef.name;\n assignExtrasToUserData(scene, sceneDef);\n if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n var nodeIds = sceneDef.nodes || [];\n var pending = [];\n\n for (var i = 0, il = nodeIds.length; i < il; i++) {\n pending.push(buildNodeHierachy(nodeIds[i], scene, json, parser));\n }\n\n return Promise.all(pending).then(function () {\n return scene;\n });\n };\n }();\n\n return GLTFLoader;\n}();\n\nexport { GLTFLoader };","import \"core-js/modules/es6.weak-map\";\nimport \"core-js/modules/es6.typed.uint16-array\";\nimport \"core-js/modules/es6.typed.uint8-array\";\nimport \"core-js/modules/es6.typed.int32-array\";\nimport \"core-js/modules/es6.typed.int16-array\";\nimport \"core-js/modules/es6.typed.float32-array\";\nimport \"core-js/modules/es6.typed.uint32-array\";\nimport \"core-js/modules/es6.typed.int8-array\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.array.last-index-of\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.assign\";\nimport { BufferAttribute, BufferGeometry, FileLoader, Loader } from \"../../../build/three.module.js\";\n\nvar DRACOLoader = function DRACOLoader(manager) {\n Loader.call(this, manager);\n this.decoderPath = '';\n this.decoderConfig = {};\n this.decoderBinary = null;\n this.decoderPending = null;\n this.workerLimit = 4;\n this.workerPool = [];\n this.workerNextTaskID = 1;\n this.workerSourceURL = '';\n this.defaultAttributeIDs = {\n position: 'POSITION',\n normal: 'NORMAL',\n color: 'COLOR',\n uv: 'TEX_COORD'\n };\n this.defaultAttributeTypes = {\n position: 'Float32Array',\n normal: 'Float32Array',\n color: 'Float32Array',\n uv: 'Float32Array'\n };\n};\n\nDRACOLoader.prototype = Object.assign(Object.create(Loader.prototype), {\n constructor: DRACOLoader,\n setDecoderPath: function setDecoderPath(path) {\n this.decoderPath = path;\n return this;\n },\n setDecoderConfig: function setDecoderConfig(config) {\n this.decoderConfig = config;\n return this;\n },\n setWorkerLimit: function setWorkerLimit(workerLimit) {\n this.workerLimit = workerLimit;\n return this;\n },\n\n /** @deprecated */\n setVerbosity: function setVerbosity() {\n console.warn('THREE.DRACOLoader: The .setVerbosity() method has been removed.');\n },\n\n /** @deprecated */\n setDrawMode: function setDrawMode() {\n console.warn('THREE.DRACOLoader: The .setDrawMode() method has been removed.');\n },\n\n /** @deprecated */\n setSkipDequantization: function setSkipDequantization() {\n console.warn('THREE.DRACOLoader: The .setSkipDequantization() method has been removed.');\n },\n load: function load(url, onLoad, onProgress, onError) {\n var _this = this;\n\n var loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.setRequestHeader(this.requestHeader);\n\n if (this.crossOrigin === 'use-credentials') {\n loader.setWithCredentials(true);\n }\n\n loader.load(url, function (buffer) {\n var taskConfig = {\n attributeIDs: _this.defaultAttributeIDs,\n attributeTypes: _this.defaultAttributeTypes,\n useUniqueIDs: false\n };\n\n _this.decodeGeometry(buffer, taskConfig).then(onLoad)[\"catch\"](onError);\n }, onProgress, onError);\n },\n\n /** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */\n decodeDracoFile: function decodeDracoFile(buffer, callback, attributeIDs, attributeTypes) {\n var taskConfig = {\n attributeIDs: attributeIDs || this.defaultAttributeIDs,\n attributeTypes: attributeTypes || this.defaultAttributeTypes,\n useUniqueIDs: !!attributeIDs\n };\n this.decodeGeometry(buffer, taskConfig).then(callback);\n },\n decodeGeometry: function decodeGeometry(buffer, taskConfig) {\n var _this2 = this;\n\n // TODO: For backward-compatibility, support 'attributeTypes' objects containing\n // references (rather than names) to typed array constructors. These must be\n // serialized before sending them to the worker.\n for (var attribute in taskConfig.attributeTypes) {\n var type = taskConfig.attributeTypes[attribute];\n\n if (type.BYTES_PER_ELEMENT !== undefined) {\n taskConfig.attributeTypes[attribute] = type.name;\n }\n } //\n\n\n var taskKey = JSON.stringify(taskConfig); // Check for an existing task using this buffer. A transferred buffer cannot be transferred\n // again from this thread.\n\n if (DRACOLoader.taskCache.has(buffer)) {\n var cachedTask = DRACOLoader.taskCache.get(buffer);\n\n if (cachedTask.key === taskKey) {\n return cachedTask.promise;\n } else if (buffer.byteLength === 0) {\n // Technically, it would be possible to wait for the previous task to complete,\n // transfer the buffer back, and decode again with the second configuration. That\n // is complex, and I don't know of any reason to decode a Draco buffer twice in\n // different ways, so this is left unimplemented.\n throw new Error('THREE.DRACOLoader: Unable to re-decode a buffer with different ' + 'settings. Buffer has already been transferred.');\n }\n } //\n\n\n var worker;\n var taskID = this.workerNextTaskID++;\n var taskCost = buffer.byteLength; // Obtain a worker and assign a task, and construct a geometry instance\n // when the task completes.\n\n var geometryPending = this._getWorker(taskID, taskCost).then(function (_worker) {\n worker = _worker;\n return new Promise(function (resolve, reject) {\n worker._callbacks[taskID] = {\n resolve: resolve,\n reject: reject\n };\n worker.postMessage({\n type: 'decode',\n id: taskID,\n taskConfig: taskConfig,\n buffer: buffer\n }, [buffer]); // this.debug();\n });\n }).then(function (message) {\n return _this2._createGeometry(message.geometry);\n }); // Remove task from the task list.\n // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\n\n geometryPending[\"catch\"](function () {\n return true;\n }).then(function () {\n if (worker && taskID) {\n _this2._releaseTask(worker, taskID); // this.debug();\n\n }\n }); // Cache the task result.\n\n DRACOLoader.taskCache.set(buffer, {\n key: taskKey,\n promise: geometryPending\n });\n return geometryPending;\n },\n _createGeometry: function _createGeometry(geometryData) {\n var geometry = new BufferGeometry();\n\n if (geometryData.index) {\n geometry.setIndex(new BufferAttribute(geometryData.index.array, 1));\n }\n\n for (var i = 0; i < geometryData.attributes.length; i++) {\n var attribute = geometryData.attributes[i];\n var name = attribute.name;\n var array = attribute.array;\n var itemSize = attribute.itemSize;\n geometry.setAttribute(name, new BufferAttribute(array, itemSize));\n }\n\n return geometry;\n },\n _loadLibrary: function _loadLibrary(url, responseType) {\n var loader = new FileLoader(this.manager);\n loader.setPath(this.decoderPath);\n loader.setResponseType(responseType);\n return new Promise(function (resolve, reject) {\n loader.load(url, resolve, undefined, reject);\n });\n },\n preload: function preload() {\n this._initDecoder();\n\n return this;\n },\n _initDecoder: function _initDecoder() {\n var _this3 = this;\n\n if (this.decoderPending) return this.decoderPending;\n var useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n var librariesPending = [];\n\n if (useJS) {\n librariesPending.push(this._loadLibrary('draco_decoder.js', 'text'));\n } else {\n librariesPending.push(this._loadLibrary('draco_wasm_wrapper.js', 'text'));\n librariesPending.push(this._loadLibrary('draco_decoder.wasm', 'arraybuffer'));\n }\n\n this.decoderPending = Promise.all(librariesPending).then(function (libraries) {\n var jsContent = libraries[0];\n\n if (!useJS) {\n _this3.decoderConfig.wasmBinary = libraries[1];\n }\n\n var fn = DRACOLoader.DRACOWorker.toString();\n var body = ['/* draco decoder */', jsContent, '', '/* worker */', fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))].join('\\n');\n _this3.workerSourceURL = URL.createObjectURL(new Blob([body]));\n });\n return this.decoderPending;\n },\n _getWorker: function _getWorker(taskID, taskCost) {\n var _this4 = this;\n\n return this._initDecoder().then(function () {\n if (_this4.workerPool.length < _this4.workerLimit) {\n var worker = new Worker(_this4.workerSourceURL);\n worker._callbacks = {};\n worker._taskCosts = {};\n worker._taskLoad = 0;\n worker.postMessage({\n type: 'init',\n decoderConfig: _this4.decoderConfig\n });\n\n worker.onmessage = function (e) {\n var message = e.data;\n\n switch (message.type) {\n case 'decode':\n worker._callbacks[message.id].resolve(message);\n\n break;\n\n case 'error':\n worker._callbacks[message.id].reject(message);\n\n break;\n\n default:\n console.error('THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"');\n }\n };\n\n _this4.workerPool.push(worker);\n } else {\n _this4.workerPool.sort(function (a, b) {\n return a._taskLoad > b._taskLoad ? -1 : 1;\n });\n }\n\n var worker = _this4.workerPool[_this4.workerPool.length - 1];\n worker._taskCosts[taskID] = taskCost;\n worker._taskLoad += taskCost;\n return worker;\n });\n },\n _releaseTask: function _releaseTask(worker, taskID) {\n worker._taskLoad -= worker._taskCosts[taskID];\n delete worker._callbacks[taskID];\n delete worker._taskCosts[taskID];\n },\n debug: function debug() {\n console.log('Task load: ', this.workerPool.map(function (worker) {\n return worker._taskLoad;\n }));\n },\n dispose: function dispose() {\n for (var i = 0; i < this.workerPool.length; ++i) {\n this.workerPool[i].terminate();\n }\n\n this.workerPool.length = 0;\n return this;\n }\n});\n/* WEB WORKER */\n\nDRACOLoader.DRACOWorker = function () {\n var decoderConfig;\n var decoderPending;\n\n onmessage = function onmessage(e) {\n var message = e.data;\n\n switch (message.type) {\n case 'init':\n decoderConfig = message.decoderConfig;\n decoderPending = new Promise(function (resolve\n /*, reject*/\n ) {\n decoderConfig.onModuleLoaded = function (draco) {\n // Module is Promise-like. Wrap before resolving to avoid loop.\n resolve({\n draco: draco\n });\n };\n\n DracoDecoderModule(decoderConfig); // eslint-disable-line no-undef\n });\n break;\n\n case 'decode':\n var buffer = message.buffer;\n var taskConfig = message.taskConfig;\n decoderPending.then(function (module) {\n var draco = module.draco;\n var decoder = new draco.Decoder();\n var decoderBuffer = new draco.DecoderBuffer();\n decoderBuffer.Init(new Int8Array(buffer), buffer.byteLength);\n\n try {\n var geometry = decodeGeometry(draco, decoder, decoderBuffer, taskConfig);\n var buffers = geometry.attributes.map(function (attr) {\n return attr.array.buffer;\n });\n if (geometry.index) buffers.push(geometry.index.array.buffer);\n self.postMessage({\n type: 'decode',\n id: message.id,\n geometry: geometry\n }, buffers);\n } catch (error) {\n console.error(error);\n self.postMessage({\n type: 'error',\n id: message.id,\n error: error.message\n });\n } finally {\n draco.destroy(decoderBuffer);\n draco.destroy(decoder);\n }\n });\n break;\n }\n };\n\n function decodeGeometry(draco, decoder, decoderBuffer, taskConfig) {\n var attributeIDs = taskConfig.attributeIDs;\n var attributeTypes = taskConfig.attributeTypes;\n var dracoGeometry;\n var decodingStatus;\n var geometryType = decoder.GetEncodedGeometryType(decoderBuffer);\n\n if (geometryType === draco.TRIANGULAR_MESH) {\n dracoGeometry = new draco.Mesh();\n decodingStatus = decoder.DecodeBufferToMesh(decoderBuffer, dracoGeometry);\n } else if (geometryType === draco.POINT_CLOUD) {\n dracoGeometry = new draco.PointCloud();\n decodingStatus = decoder.DecodeBufferToPointCloud(decoderBuffer, dracoGeometry);\n } else {\n throw new Error('THREE.DRACOLoader: Unexpected geometry type.');\n }\n\n if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {\n throw new Error('THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg());\n }\n\n var geometry = {\n index: null,\n attributes: []\n }; // Gather all vertex attributes.\n\n for (var attributeName in attributeIDs) {\n var attributeType = self[attributeTypes[attributeName]];\n var attribute;\n var attributeID; // A Draco file may be created with default vertex attributes, whose attribute IDs\n // are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n // a Draco file may contain a custom set of attributes, identified by known unique\n // IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\n if (taskConfig.useUniqueIDs) {\n attributeID = attributeIDs[attributeName];\n attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID);\n } else {\n attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]);\n if (attributeID === -1) continue;\n attribute = decoder.GetAttribute(dracoGeometry, attributeID);\n }\n\n geometry.attributes.push(decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute));\n } // Add index.\n\n\n if (geometryType === draco.TRIANGULAR_MESH) {\n // Generate mesh faces.\n var numFaces = dracoGeometry.num_faces();\n var numIndices = numFaces * 3;\n var index = new Uint32Array(numIndices);\n var indexArray = new draco.DracoInt32Array();\n\n for (var i = 0; i < numFaces; ++i) {\n decoder.GetFaceFromMesh(dracoGeometry, i, indexArray);\n\n for (var j = 0; j < 3; ++j) {\n index[i * 3 + j] = indexArray.GetValue(j);\n }\n }\n\n geometry.index = {\n array: index,\n itemSize: 1\n };\n draco.destroy(indexArray);\n }\n\n draco.destroy(dracoGeometry);\n return geometry;\n }\n\n function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) {\n var numComponents = attribute.num_components();\n var numPoints = dracoGeometry.num_points();\n var numValues = numPoints * numComponents;\n var dracoArray;\n var array;\n\n switch (attributeType) {\n case Float32Array:\n dracoArray = new draco.DracoFloat32Array();\n decoder.GetAttributeFloatForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Float32Array(numValues);\n break;\n\n case Int8Array:\n dracoArray = new draco.DracoInt8Array();\n decoder.GetAttributeInt8ForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Int8Array(numValues);\n break;\n\n case Int16Array:\n dracoArray = new draco.DracoInt16Array();\n decoder.GetAttributeInt16ForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Int16Array(numValues);\n break;\n\n case Int32Array:\n dracoArray = new draco.DracoInt32Array();\n decoder.GetAttributeInt32ForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Int32Array(numValues);\n break;\n\n case Uint8Array:\n dracoArray = new draco.DracoUInt8Array();\n decoder.GetAttributeUInt8ForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Uint8Array(numValues);\n break;\n\n case Uint16Array:\n dracoArray = new draco.DracoUInt16Array();\n decoder.GetAttributeUInt16ForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Uint16Array(numValues);\n break;\n\n case Uint32Array:\n dracoArray = new draco.DracoUInt32Array();\n decoder.GetAttributeUInt32ForAllPoints(dracoGeometry, attribute, dracoArray);\n array = new Uint32Array(numValues);\n break;\n\n default:\n throw new Error('THREE.DRACOLoader: Unexpected attribute type.');\n }\n\n for (var i = 0; i < numValues; i++) {\n array[i] = dracoArray.GetValue(i);\n }\n\n draco.destroy(dracoArray);\n return {\n name: attributeName,\n array: array,\n itemSize: numComponents\n };\n }\n};\n\nDRACOLoader.taskCache = new WeakMap();\n/** Deprecated static methods */\n\n/** @deprecated */\n\nDRACOLoader.setDecoderPath = function () {\n console.warn('THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.');\n};\n/** @deprecated */\n\n\nDRACOLoader.setDecoderConfig = function () {\n console.warn('THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.');\n};\n/** @deprecated */\n\n\nDRACOLoader.releaseDecoderModule = function () {\n console.warn('THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.');\n};\n/** @deprecated */\n\n\nDRACOLoader.getDecoderModule = function () {\n console.warn('THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.');\n};\n\nexport { DRACOLoader };","import {LoadingManager, TextureLoader, RepeatWrapping} from 'three'\n\nimport {GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader'\nimport {DRACOLoader} from 'three/examples/jsm/loaders/DRACOLoader'\n\nconst loadingManager = new LoadingManager()\nconst textureLoader = new TextureLoader(loadingManager)\n\nconst gltfLoader = new GLTFLoader(loadingManager)\nconst dracoLoader = new DRACOLoader()\ndracoLoader.setDecoderPath('/static-threejs/draco/')\ngltfLoader.setDRACOLoader(dracoLoader)\n\nconst onLoadCallbacks = []\nconst onProgressCallbacks = []\n\nloadingManager.onLoad = () => {\n while (onLoadCallbacks.length) {\n onLoadCallbacks.shift().call()\n }\n}\n\nloadingManager.onProgress = (item, loaded, total) => {\n const _onProgressCallbacks = [...onProgressCallbacks]\n\n while (_onProgressCallbacks.length) {\n _onProgressCallbacks.shift()(loaded / total)\n }\n}\n\nconst loadTexture = (src, callback) => {\n const texture = textureLoader.load(src, () => {\n typeof callback === 'function' && callback(texture)\n })\n\n texture.wrapS = texture.wrapT = RepeatWrapping\n\n return texture\n}\n\nconst loadModelGLTF = (src) => {\n return new Promise((resolve, reject) => {\n gltfLoader.load(src, (resources) => {\n resolve(resources.scene)\n })\n })\n}\n\nconst loadGLTF = async (modelSrc, diffuseSrc, normalSrc, aoSrc) => {\n const mesh = await loadModelGLTF(modelSrc)\n const diffuseMap = loadTexture(diffuseSrc)\n const normalMap = loadTexture(normalSrc)\n const aoMap = loadTexture(aoSrc)\n\n return {mesh, diffuseMap, normalMap, aoMap}\n}\n\nconst onLoad = (callback) => {\n onLoadCallbacks.push(callback)\n\n window.aa = loadingManager\n}\n\nconst onProgress = (callback) => {\n onProgressCallbacks.push(callback)\n}\n\nexport {loadGLTF, loadTexture, onLoad, onProgress}\n","export default \"#define GLSLIFY 1\\nuniform vec3 uTopColor;\\nuniform vec3 uBottomColor;\\nuniform vec3 uSpot1Color;\\nuniform vec3 uSpot2Color;\\nuniform vec2 uSpot1Position;\\nuniform vec2 uSpot2Position;\\n\\nvarying vec2 vUv;\\n\\nfloat distanceFromPoint(vec2 uv, vec2 point, float max){\\n float d = distance(uv, point);\\n d = smoothstep(0.0, max, d);\\n d = 1.0 - d;\\n return d;\\n}\\n\\nvoid main() {\\n\\n float d1 = distanceFromPoint(vUv, vec2(uSpot1Position), 0.3);\\n float d2 = distanceFromPoint(vUv, vec2(uSpot2Position), 0.4);\\n\\n vec4 colorSpot1 = vec4(uSpot1Color, 1.0 * d1 * 0.8);\\n vec4 colorSpot2 = vec4(uSpot2Color, 1.0 * d2 * 0.8);\\n vec4 verticalGradient = vec4(mix(uBottomColor,uTopColor, vUv.y), 1.0);\\n vec4 mixVS1 = mix(verticalGradient, colorSpot1, colorSpot1.a);\\n vec4 final = mix(mixVS1, colorSpot2, colorSpot2.a);\\n\\n\\tgl_FragColor = vec4(final.rgb, 1.0);\\n}\\n\"","export default \"#define GLSLIFY 1\\nvec4 gammaCorrect(vec4 color, float gamma){\\n return pow(color, vec4(1.0 / gamma));\\n}\\n\\nvec4 levelRange(vec4 color, float minInput, float maxInput){\\n return min(max(color - vec4(minInput), vec4(0.0)) / (vec4(maxInput) - vec4(minInput)), vec4(1.0));\\n}\\n\\nvec4 levels(vec4 color, float minInput, float gamma, float maxInput){\\n return gammaCorrect(levelRange(color, minInput, maxInput), gamma);\\n}\\n\\n\"","// Parallax Occlusion shaders from\n// http://sunandblackcat.com/tipFullView.php?topicid=28\n// No tangent-space transforms logic based on\n// http://mmikkelsen3d.blogspot.sk/2012/02/parallaxpoc-mapping-and-no-tangent.html\n\nvar ParallaxShader = {\n // Ordered from fastest to best quality.\n modes: {\n none: \"NO_PARALLAX\",\n basic: \"USE_BASIC_PARALLAX\",\n steep: \"USE_STEEP_PARALLAX\",\n occlusion: \"USE_OCLUSION_PARALLAX\", // a.k.a. POM\n relief: \"USE_RELIEF_PARALLAX\"\n },\n\n uniforms: {\n bumpMap: { value: null },\n map: { value: null },\n parallaxScale: { value: null },\n parallaxMinLayers: { value: null },\n parallaxMaxLayers: { value: null }\n },\n\n vertexShader: [\n \"varying vec2 vUv;\",\n \"varying vec3 vViewPosition;\",\n \"varying vec3 vNormal;\",\n\n \"void main() {\",\n\n \"\tvUv = uv;\",\n \"\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\",\n \"\tvViewPosition = -mvPosition.xyz;\",\n \"\tvNormal = normalize( normalMatrix * normal );\",\n \"\tgl_Position = projectionMatrix * mvPosition;\",\n\n \"}\"\n ].join(\"\\n\"),\n\n fragmentShader: [\n \"#extension GL_EXT_shader_texture_lod : enable\",\n \"#extension GL_OES_standard_derivatives : enable\",\n \"uniform sampler2D bumpMap;\",\n \"uniform sampler2D map;\",\n\n \"uniform float parallaxScale;\",\n \"uniform float parallaxMinLayers;\",\n \"uniform float parallaxMaxLayers;\",\n\n \"varying vec2 vUv;\",\n \"varying vec3 vViewPosition;\",\n \"varying vec3 vNormal;\",\n\n \"#ifdef USE_BASIC_PARALLAX\",\n\n \"\tvec2 parallaxMap( in vec3 V ) {\",\n\n \"\t\tfloat initialHeight = texture2D( bumpMap, vUv ).r;\",\n\n // No Offset Limitting: messy, floating output at grazing angles.\n //\"vec2 texCoordOffset = parallaxScale * V.xy / V.z * initialHeight;\",\n\n // Offset Limiting\n \"\t\tvec2 texCoordOffset = parallaxScale * V.xy * initialHeight;\",\n \"\t\treturn vUv - texCoordOffset;\",\n\n \"\t}\",\n\n \"#else\",\n\n \"\tvec2 parallaxMap( in vec3 V ) {\",\n\n // Determine number of layers from angle between V and N\n \"\t\tfloat numLayers = mix( parallaxMaxLayers, parallaxMinLayers, abs( dot( vec3( 0.0, 0.0, 1.0 ), V ) ) );\",\n\n \"\t\tfloat layerHeight = 1.0 / numLayers;\",\n \"\t\tfloat currentLayerHeight = 0.0;\",\n // Shift of texture coordinates for each iteration\n \"\t\tvec2 dtex = parallaxScale * V.xy / V.z / numLayers;\",\n\n \"\t\tvec2 currentTextureCoords = vUv;\",\n\n \"\t\tfloat heightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\",\n\n // while ( heightFromTexture > currentLayerHeight )\n // Infinite loops are not well supported. Do a \"large\" finite\n // loop, but not too large, as it slows down some compilers.\n \"\t\tfor ( int i = 0; i < 30; i += 1 ) {\",\n \"\t\t\tif ( heightFromTexture <= currentLayerHeight ) {\",\n \"\t\t\t\tbreak;\",\n \"\t\t\t}\",\n \"\t\t\tcurrentLayerHeight += layerHeight;\",\n // Shift texture coordinates along vector V\n \"\t\t\tcurrentTextureCoords -= dtex;\",\n \"\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\",\n \"\t\t}\",\n\n \"\t\t#ifdef USE_STEEP_PARALLAX\",\n\n \"\t\t\treturn currentTextureCoords;\",\n\n \"\t\t#elif defined( USE_RELIEF_PARALLAX )\",\n\n \"\t\t\tvec2 deltaTexCoord = dtex / 2.0;\",\n \"\t\t\tfloat deltaHeight = layerHeight / 2.0;\",\n\n // Return to the mid point of previous layer\n \"\t\t\tcurrentTextureCoords += deltaTexCoord;\",\n \"\t\t\tcurrentLayerHeight -= deltaHeight;\",\n\n // Binary search to increase precision of Steep Parallax Mapping\n \"\t\t\tconst int numSearches = 5;\",\n \"\t\t\tfor ( int i = 0; i < numSearches; i += 1 ) {\",\n\n \"\t\t\t\tdeltaTexCoord /= 2.0;\",\n \"\t\t\t\tdeltaHeight /= 2.0;\",\n \"\t\t\t\theightFromTexture = texture2D( bumpMap, currentTextureCoords ).r;\",\n // Shift along or against vector V\n \"\t\t\t\tif( heightFromTexture > currentLayerHeight ) {\", // Below the surface\n\n \"\t\t\t\t\tcurrentTextureCoords -= deltaTexCoord;\",\n \"\t\t\t\t\tcurrentLayerHeight += deltaHeight;\",\n\n \"\t\t\t\t} else {\", // above the surface\n\n \"\t\t\t\t\tcurrentTextureCoords += deltaTexCoord;\",\n \"\t\t\t\t\tcurrentLayerHeight -= deltaHeight;\",\n\n \"\t\t\t\t}\",\n\n \"\t\t\t}\",\n \"\t\t\treturn currentTextureCoords;\",\n\n \"\t\t#elif defined( USE_OCLUSION_PARALLAX )\",\n\n \"\t\t\tvec2 prevTCoords = currentTextureCoords + dtex;\",\n\n // Heights for linear interpolation\n \"\t\t\tfloat nextH = heightFromTexture - currentLayerHeight;\",\n \"\t\t\tfloat prevH = texture2D( bumpMap, prevTCoords ).r - currentLayerHeight + layerHeight;\",\n\n // Proportions for linear interpolation\n \"\t\t\tfloat weight = nextH / ( nextH - prevH );\",\n\n // Interpolation of texture coordinates\n \"\t\t\treturn prevTCoords * weight + currentTextureCoords * ( 1.0 - weight );\",\n\n \"\t\t#else\", // NO_PARALLAX\n\n \"\t\t\treturn vUv;\",\n\n \"\t\t#endif\",\n\n \"\t}\",\n \"#endif\",\n\n \"vec2 perturbUv( vec3 surfPosition, vec3 surfNormal, vec3 viewPosition ) {\",\n\n \"\tvec2 texDx = dFdx( vUv );\",\n \"\tvec2 texDy = dFdy( vUv );\",\n\n \"\tvec3 vSigmaX = dFdx( surfPosition );\",\n \"\tvec3 vSigmaY = dFdy( surfPosition );\",\n \"\tvec3 vR1 = cross( vSigmaY, surfNormal );\",\n \"\tvec3 vR2 = cross( surfNormal, vSigmaX );\",\n \"\tfloat fDet = dot( vSigmaX, vR1 );\",\n\n \"\tvec2 vProjVscr = ( 1.0 / fDet ) * vec2( dot( vR1, viewPosition ), dot( vR2, viewPosition ) );\",\n \"\tvec3 vProjVtex;\",\n \"\tvProjVtex.xy = texDx * vProjVscr.x + texDy * vProjVscr.y;\",\n \"\tvProjVtex.z = dot( surfNormal, viewPosition );\",\n\n \"\treturn parallaxMap( vProjVtex );\",\n \"}\",\n\n \"void main() {\",\n\n \"\tvec2 mapUv = perturbUv( -vViewPosition, normalize( vNormal ), normalize( vViewPosition ) );\",\n \"\tgl_FragColor = texture2D( map, mapUv );\",\n\n \"}\"\n ].join(\"\\n\")\n}\n\nexport { ParallaxShader }\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","import \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.string.sub\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport { EventDispatcher, MOUSE, Quaternion, Spherical, TOUCH, Vector2, Vector3 } from \"../../../build/three.module.js\"; // This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one-finger move\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nvar OrbitControls = function OrbitControls(object, domElement) {\n if (domElement === undefined) console.warn('THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.');\n if (domElement === document) console.error('THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.');\n this.object = object;\n this.domElement = domElement; // Set to false to disable this control\n\n this.enabled = true; // \"target\" sets the location of focus, where the object orbits around\n\n this.target = new Vector3(); // How far you can dolly in and out ( PerspectiveCamera only )\n\n this.minDistance = 0;\n this.maxDistance = Infinity; // How far you can zoom in and out ( OrthographicCamera only )\n\n this.minZoom = 0;\n this.maxZoom = Infinity; // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n\n this.minPolarAngle = 0; // radians\n\n this.maxPolarAngle = Math.PI; // radians\n // How far you can orbit horizontally, upper and lower limits.\n // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\n this.minAzimuthAngle = -Infinity; // radians\n\n this.maxAzimuthAngle = Infinity; // radians\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n\n this.enableDamping = false;\n this.dampingFactor = 0.05; // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n\n this.enableZoom = true;\n this.zoomSpeed = 1.0; // Set to false to disable rotating\n\n this.enableRotate = true;\n this.rotateSpeed = 1.0; // Set to false to disable panning\n\n this.enablePan = true;\n this.panSpeed = 1.0;\n this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\n this.keyPanSpeed = 7.0; // pixels moved per arrow key push\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n\n this.autoRotate = false;\n this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n // Set to false to disable use of the keys\n\n this.enableKeys = true; // The four arrow keys\n\n this.keys = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n BOTTOM: 40\n }; // Mouse buttons\n\n this.mouseButtons = {\n LEFT: MOUSE.ROTATE,\n MIDDLE: MOUSE.DOLLY,\n RIGHT: MOUSE.PAN\n }; // Touch fingers\n\n this.touches = {\n ONE: TOUCH.ROTATE,\n TWO: TOUCH.DOLLY_PAN\n }; // for reset\n\n this.target0 = this.target.clone();\n this.position0 = this.object.position.clone();\n this.zoom0 = this.object.zoom; //\n // public methods\n //\n\n this.getPolarAngle = function () {\n return spherical.phi;\n };\n\n this.getAzimuthalAngle = function () {\n return spherical.theta;\n };\n\n this.saveState = function () {\n scope.target0.copy(scope.target);\n scope.position0.copy(scope.object.position);\n scope.zoom0 = scope.object.zoom;\n };\n\n this.reset = function () {\n scope.target.copy(scope.target0);\n scope.object.position.copy(scope.position0);\n scope.object.zoom = scope.zoom0;\n scope.object.updateProjectionMatrix();\n scope.dispatchEvent(changeEvent);\n scope.update();\n state = STATE.NONE;\n }; // this method is exposed, but perhaps it would be better if we can make it private...\n\n\n this.update = function () {\n var offset = new Vector3(); // so camera.up is the orbit axis\n\n var quat = new Quaternion().setFromUnitVectors(object.up, new Vector3(0, 1, 0));\n var quatInverse = quat.clone().inverse();\n var lastPosition = new Vector3();\n var lastQuaternion = new Quaternion();\n var twoPI = 2 * Math.PI;\n return function update() {\n var position = scope.object.position;\n offset.copy(position).sub(scope.target); // rotate offset to \"y-axis-is-up\" space\n\n offset.applyQuaternion(quat); // angle from z-axis around y-axis\n\n spherical.setFromVector3(offset);\n\n if (scope.autoRotate && state === STATE.NONE) {\n rotateLeft(getAutoRotationAngle());\n }\n\n if (scope.enableDamping) {\n spherical.theta += sphericalDelta.theta * scope.dampingFactor;\n spherical.phi += sphericalDelta.phi * scope.dampingFactor;\n } else {\n spherical.theta += sphericalDelta.theta;\n spherical.phi += sphericalDelta.phi;\n } // restrict theta to be between desired limits\n\n\n var min = scope.minAzimuthAngle;\n var max = scope.maxAzimuthAngle;\n\n if (isFinite(min) && isFinite(max)) {\n if (min < -Math.PI) min += twoPI;else if (min > Math.PI) min -= twoPI;\n if (max < -Math.PI) max += twoPI;else if (max > Math.PI) max -= twoPI;\n\n if (min < max) {\n spherical.theta = Math.max(min, Math.min(max, spherical.theta));\n } else {\n spherical.theta = spherical.theta > (min + max) / 2 ? Math.max(min, spherical.theta) : Math.min(max, spherical.theta);\n }\n } // restrict phi to be between desired limits\n\n\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\n spherical.makeSafe();\n spherical.radius *= scale; // restrict radius to be between desired limits\n\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius)); // move target to panned location\n\n if (scope.enableDamping === true) {\n scope.target.addScaledVector(panOffset, scope.dampingFactor);\n } else {\n scope.target.add(panOffset);\n }\n\n offset.setFromSpherical(spherical); // rotate offset back to \"camera-up-vector-is-up\" space\n\n offset.applyQuaternion(quatInverse);\n position.copy(scope.target).add(offset);\n scope.object.lookAt(scope.target);\n\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= 1 - scope.dampingFactor;\n sphericalDelta.phi *= 1 - scope.dampingFactor;\n panOffset.multiplyScalar(1 - scope.dampingFactor);\n } else {\n sphericalDelta.set(0, 0, 0);\n panOffset.set(0, 0, 0);\n }\n\n scale = 1; // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n if (zoomChanged || lastPosition.distanceToSquared(scope.object.position) > EPS || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\n scope.dispatchEvent(changeEvent);\n lastPosition.copy(scope.object.position);\n lastQuaternion.copy(scope.object.quaternion);\n zoomChanged = false;\n return true;\n }\n\n return false;\n };\n }();\n\n this.dispose = function () {\n scope.domElement.removeEventListener('contextmenu', onContextMenu, false);\n scope.domElement.removeEventListener('pointerdown', onPointerDown, false);\n scope.domElement.removeEventListener('wheel', onMouseWheel, false);\n scope.domElement.removeEventListener('touchstart', onTouchStart, false);\n scope.domElement.removeEventListener('touchend', onTouchEnd, false);\n scope.domElement.removeEventListener('touchmove', onTouchMove, false);\n scope.domElement.ownerDocument.removeEventListener('pointermove', onPointerMove, false);\n scope.domElement.ownerDocument.removeEventListener('pointerup', onPointerUp, false);\n scope.domElement.removeEventListener('keydown', onKeyDown, false); //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n }; //\n // internals\n //\n\n\n var scope = this;\n var changeEvent = {\n type: 'change'\n };\n var startEvent = {\n type: 'start'\n };\n var endEvent = {\n type: 'end'\n };\n var STATE = {\n NONE: -1,\n ROTATE: 0,\n DOLLY: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_PAN: 4,\n TOUCH_DOLLY_PAN: 5,\n TOUCH_DOLLY_ROTATE: 6\n };\n var state = STATE.NONE;\n var EPS = 0.000001; // current position in spherical coordinates\n\n var spherical = new Spherical();\n var sphericalDelta = new Spherical();\n var scale = 1;\n var panOffset = new Vector3();\n var zoomChanged = false;\n var rotateStart = new Vector2();\n var rotateEnd = new Vector2();\n var rotateDelta = new Vector2();\n var panStart = new Vector2();\n var panEnd = new Vector2();\n var panDelta = new Vector2();\n var dollyStart = new Vector2();\n var dollyEnd = new Vector2();\n var dollyDelta = new Vector2();\n\n function getAutoRotationAngle() {\n return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n }\n\n function getZoomScale() {\n return Math.pow(0.95, scope.zoomSpeed);\n }\n\n function rotateLeft(angle) {\n sphericalDelta.theta -= angle;\n }\n\n function rotateUp(angle) {\n sphericalDelta.phi -= angle;\n }\n\n var panLeft = function () {\n var v = new Vector3();\n return function panLeft(distance, objectMatrix) {\n v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\n\n v.multiplyScalar(-distance);\n panOffset.add(v);\n };\n }();\n\n var panUp = function () {\n var v = new Vector3();\n return function panUp(distance, objectMatrix) {\n if (scope.screenSpacePanning === true) {\n v.setFromMatrixColumn(objectMatrix, 1);\n } else {\n v.setFromMatrixColumn(objectMatrix, 0);\n v.crossVectors(scope.object.up, v);\n }\n\n v.multiplyScalar(distance);\n panOffset.add(v);\n };\n }(); // deltaX and deltaY are in pixels; right and down are positive\n\n\n var pan = function () {\n var offset = new Vector3();\n return function pan(deltaX, deltaY) {\n var element = scope.domElement;\n\n if (scope.object.isPerspectiveCamera) {\n // perspective\n var position = scope.object.position;\n offset.copy(position).sub(scope.target);\n var targetDistance = offset.length(); // half of the fov is center to top of screen\n\n targetDistance *= Math.tan(scope.object.fov / 2 * Math.PI / 180.0); // we use only clientHeight here so aspect ratio does not distort speed\n\n panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\n panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\n } else if (scope.object.isOrthographicCamera) {\n // orthographic\n panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\n panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\n } else {\n // camera neither orthographic nor perspective\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\n scope.enablePan = false;\n }\n };\n }();\n\n function dollyOut(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale /= dollyScale;\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n } else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n }\n }\n\n function dollyIn(dollyScale) {\n if (scope.object.isPerspectiveCamera) {\n scale *= dollyScale;\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\n scope.object.updateProjectionMatrix();\n zoomChanged = true;\n } else {\n console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\n scope.enableZoom = false;\n }\n } //\n // event callbacks - update the object state\n //\n\n\n function handleMouseDownRotate(event) {\n rotateStart.set(event.clientX, event.clientY);\n }\n\n function handleMouseDownDolly(event) {\n dollyStart.set(event.clientX, event.clientY);\n }\n\n function handleMouseDownPan(event) {\n panStart.set(event.clientX, event.clientY);\n }\n\n function handleMouseMoveRotate(event) {\n rotateEnd.set(event.clientX, event.clientY);\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n var element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n scope.update();\n }\n\n function handleMouseMoveDolly(event) {\n dollyEnd.set(event.clientX, event.clientY);\n dollyDelta.subVectors(dollyEnd, dollyStart);\n\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale());\n } else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale());\n }\n\n dollyStart.copy(dollyEnd);\n scope.update();\n }\n\n function handleMouseMovePan(event) {\n panEnd.set(event.clientX, event.clientY);\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n scope.update();\n }\n\n function handleMouseUp()\n /*event*/\n {// no-op\n }\n\n function handleMouseWheel(event) {\n if (event.deltaY < 0) {\n dollyIn(getZoomScale());\n } else if (event.deltaY > 0) {\n dollyOut(getZoomScale());\n }\n\n scope.update();\n }\n\n function handleKeyDown(event) {\n var needsUpdate = false;\n\n switch (event.keyCode) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed);\n needsUpdate = true;\n break;\n\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed);\n needsUpdate = true;\n break;\n\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0);\n needsUpdate = true;\n break;\n }\n\n if (needsUpdate) {\n // prevent the browser from scrolling on cursor keys\n event.preventDefault();\n scope.update();\n }\n }\n\n function handleTouchStartRotate(event) {\n if (event.touches.length == 1) {\n rotateStart.set(event.touches[0].pageX, event.touches[0].pageY);\n } else {\n var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);\n var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);\n rotateStart.set(x, y);\n }\n }\n\n function handleTouchStartPan(event) {\n if (event.touches.length == 1) {\n panStart.set(event.touches[0].pageX, event.touches[0].pageY);\n } else {\n var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);\n var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);\n panStart.set(x, y);\n }\n }\n\n function handleTouchStartDolly(event) {\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n var distance = Math.sqrt(dx * dx + dy * dy);\n dollyStart.set(0, distance);\n }\n\n function handleTouchStartDollyPan(event) {\n if (scope.enableZoom) handleTouchStartDolly(event);\n if (scope.enablePan) handleTouchStartPan(event);\n }\n\n function handleTouchStartDollyRotate(event) {\n if (scope.enableZoom) handleTouchStartDolly(event);\n if (scope.enableRotate) handleTouchStartRotate(event);\n }\n\n function handleTouchMoveRotate(event) {\n if (event.touches.length == 1) {\n rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);\n } else {\n var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);\n var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);\n rotateEnd.set(x, y);\n }\n\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\n var element = scope.domElement;\n rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\n\n rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\n rotateStart.copy(rotateEnd);\n }\n\n function handleTouchMovePan(event) {\n if (event.touches.length == 1) {\n panEnd.set(event.touches[0].pageX, event.touches[0].pageY);\n } else {\n var x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);\n var y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);\n panEnd.set(x, y);\n }\n\n panDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\n pan(panDelta.x, panDelta.y);\n panStart.copy(panEnd);\n }\n\n function handleTouchMoveDolly(event) {\n var dx = event.touches[0].pageX - event.touches[1].pageX;\n var dy = event.touches[0].pageY - event.touches[1].pageY;\n var distance = Math.sqrt(dx * dx + dy * dy);\n dollyEnd.set(0, distance);\n dollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));\n dollyOut(dollyDelta.y);\n dollyStart.copy(dollyEnd);\n }\n\n function handleTouchMoveDollyPan(event) {\n if (scope.enableZoom) handleTouchMoveDolly(event);\n if (scope.enablePan) handleTouchMovePan(event);\n }\n\n function handleTouchMoveDollyRotate(event) {\n if (scope.enableZoom) handleTouchMoveDolly(event);\n if (scope.enableRotate) handleTouchMoveRotate(event);\n }\n\n function handleTouchEnd()\n /*event*/\n {// no-op\n } //\n // event handlers - FSM: listen for events and reset state\n //\n\n\n function onPointerDown(event) {\n if (scope.enabled === false) return;\n\n switch (event.pointerType) {\n case 'mouse':\n onMouseDown(event);\n break;\n // TODO touch\n }\n }\n\n function onPointerMove(event) {\n if (scope.enabled === false) return;\n\n switch (event.pointerType) {\n case 'mouse':\n onMouseMove(event);\n break;\n // TODO touch\n }\n }\n\n function onPointerUp(event) {\n if (scope.enabled === false) return;\n\n switch (event.pointerType) {\n case 'mouse':\n onMouseUp(event);\n break;\n // TODO touch\n }\n }\n\n function onMouseDown(event) {\n // Prevent the browser from scrolling.\n event.preventDefault(); // Manually set the focus since calling preventDefault above\n // prevents the browser from setting it automatically.\n\n scope.domElement.focus ? scope.domElement.focus() : window.focus();\n var mouseAction;\n\n switch (event.button) {\n case 0:\n mouseAction = scope.mouseButtons.LEFT;\n break;\n\n case 1:\n mouseAction = scope.mouseButtons.MIDDLE;\n break;\n\n case 2:\n mouseAction = scope.mouseButtons.RIGHT;\n break;\n\n default:\n mouseAction = -1;\n }\n\n switch (mouseAction) {\n case MOUSE.DOLLY:\n if (scope.enableZoom === false) return;\n handleMouseDownDolly(event);\n state = STATE.DOLLY;\n break;\n\n case MOUSE.ROTATE:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enablePan === false) return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n } else {\n if (scope.enableRotate === false) return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n }\n\n break;\n\n case MOUSE.PAN:\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enableRotate === false) return;\n handleMouseDownRotate(event);\n state = STATE.ROTATE;\n } else {\n if (scope.enablePan === false) return;\n handleMouseDownPan(event);\n state = STATE.PAN;\n }\n\n break;\n\n default:\n state = STATE.NONE;\n }\n\n if (state !== STATE.NONE) {\n scope.domElement.ownerDocument.addEventListener('pointermove', onPointerMove, false);\n scope.domElement.ownerDocument.addEventListener('pointerup', onPointerUp, false);\n scope.dispatchEvent(startEvent);\n }\n }\n\n function onMouseMove(event) {\n if (scope.enabled === false) return;\n event.preventDefault();\n\n switch (state) {\n case STATE.ROTATE:\n if (scope.enableRotate === false) return;\n handleMouseMoveRotate(event);\n break;\n\n case STATE.DOLLY:\n if (scope.enableZoom === false) return;\n handleMouseMoveDolly(event);\n break;\n\n case STATE.PAN:\n if (scope.enablePan === false) return;\n handleMouseMovePan(event);\n break;\n }\n }\n\n function onMouseUp(event) {\n if (scope.enabled === false) return;\n handleMouseUp(event);\n scope.domElement.ownerDocument.removeEventListener('pointermove', onPointerMove, false);\n scope.domElement.ownerDocument.removeEventListener('pointerup', onPointerUp, false);\n scope.dispatchEvent(endEvent);\n state = STATE.NONE;\n }\n\n function onMouseWheel(event) {\n if (scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE && state !== STATE.ROTATE) return;\n event.preventDefault();\n event.stopPropagation();\n scope.dispatchEvent(startEvent);\n handleMouseWheel(event);\n scope.dispatchEvent(endEvent);\n }\n\n function onKeyDown(event) {\n if (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false) return;\n handleKeyDown(event);\n }\n\n function onTouchStart(event) {\n if (scope.enabled === false) return;\n event.preventDefault(); // prevent scrolling\n\n switch (event.touches.length) {\n case 1:\n switch (scope.touches.ONE) {\n case TOUCH.ROTATE:\n if (scope.enableRotate === false) return;\n handleTouchStartRotate(event);\n state = STATE.TOUCH_ROTATE;\n break;\n\n case TOUCH.PAN:\n if (scope.enablePan === false) return;\n handleTouchStartPan(event);\n state = STATE.TOUCH_PAN;\n break;\n\n default:\n state = STATE.NONE;\n }\n\n break;\n\n case 2:\n switch (scope.touches.TWO) {\n case TOUCH.DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false) return;\n handleTouchStartDollyPan(event);\n state = STATE.TOUCH_DOLLY_PAN;\n break;\n\n case TOUCH.DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false) return;\n handleTouchStartDollyRotate(event);\n state = STATE.TOUCH_DOLLY_ROTATE;\n break;\n\n default:\n state = STATE.NONE;\n }\n\n break;\n\n default:\n state = STATE.NONE;\n }\n\n if (state !== STATE.NONE) {\n scope.dispatchEvent(startEvent);\n }\n }\n\n function onTouchMove(event) {\n if (scope.enabled === false) return;\n event.preventDefault(); // prevent scrolling\n\n event.stopPropagation();\n\n switch (state) {\n case STATE.TOUCH_ROTATE:\n if (scope.enableRotate === false) return;\n handleTouchMoveRotate(event);\n scope.update();\n break;\n\n case STATE.TOUCH_PAN:\n if (scope.enablePan === false) return;\n handleTouchMovePan(event);\n scope.update();\n break;\n\n case STATE.TOUCH_DOLLY_PAN:\n if (scope.enableZoom === false && scope.enablePan === false) return;\n handleTouchMoveDollyPan(event);\n scope.update();\n break;\n\n case STATE.TOUCH_DOLLY_ROTATE:\n if (scope.enableZoom === false && scope.enableRotate === false) return;\n handleTouchMoveDollyRotate(event);\n scope.update();\n break;\n\n default:\n state = STATE.NONE;\n }\n }\n\n function onTouchEnd(event) {\n if (scope.enabled === false) return;\n handleTouchEnd(event);\n scope.dispatchEvent(endEvent);\n state = STATE.NONE;\n }\n\n function onContextMenu(event) {\n if (scope.enabled === false) return;\n event.preventDefault();\n } //\n\n\n scope.domElement.addEventListener('contextmenu', onContextMenu, false);\n scope.domElement.addEventListener('pointerdown', onPointerDown, false);\n scope.domElement.addEventListener('wheel', onMouseWheel, false);\n scope.domElement.addEventListener('touchstart', onTouchStart, false);\n scope.domElement.addEventListener('touchend', onTouchEnd, false);\n scope.domElement.addEventListener('touchmove', onTouchMove, false);\n scope.domElement.addEventListener('keydown', onKeyDown, false); // make sure element can receive keys.\n\n if (scope.domElement.tabIndex === -1) {\n scope.domElement.tabIndex = 0;\n } // force an update at start\n\n\n this.update();\n};\n\nOrbitControls.prototype = Object.create(EventDispatcher.prototype);\nOrbitControls.prototype.constructor = OrbitControls; // This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n// Pan - left mouse, or arrow keys / touch: one-finger move\n\nvar MapControls = function MapControls(object, domElement) {\n OrbitControls.call(this, object, domElement);\n this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n this.mouseButtons.LEFT = MOUSE.PAN;\n this.mouseButtons.RIGHT = MOUSE.ROTATE;\n this.touches.ONE = TOUCH.PAN;\n this.touches.TWO = TOUCH.DOLLY_ROTATE;\n};\n\nMapControls.prototype = Object.create(EventDispatcher.prototype);\nMapControls.prototype.constructor = MapControls;\nexport { OrbitControls, MapControls };","import React, {useRef, useEffect} from 'react'\nimport {extend, useFrame, useThree} from 'react-three-fiber'\n\nimport {OrbitControls} from 'three/examples/jsm/controls/OrbitControls'\nextend({OrbitControls})\n\nexport default () => {\n const ref = useRef()\n const {gl, camera} = useThree()\n\n useFrame(() => ref.current.update())\n\n useEffect(()=>{\n ref.current.object = camera\n }, [camera])\n\n return (\n \n )\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n }\n\n ;\n\n var debounced = function debounced() {\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function () {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n debounced.flush = function () {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n}\n\n; // Adds compatibility for ES modules\n\ndebounce.debounce = debounce;\nmodule.exports = debounce;","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","import {useMemo} from 'react'\nimport data from '../data'\nimport {get} from 'lodash'\n\nexport default function useRawData(key) {\n const response = useMemo(() => {\n return key ? get(data, key, '') : data\n }, [key])\n\n return response\n}\n","import React from 'react'\n\nimport Background from './Background'\nimport Cloud from './Cloud'\n\n// \n// \n\nexport default () => {\n return (\n <>\n\n \n \n \n \n\n \n )\n}\n","/*\n * A speed-improved perlin and simplex noise algorithms for 2D.\n *\n * Based on example code by Stefan Gustavson (stegu@itn.liu.se).\n * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).\n * Better rank ordering method by Stefan Gustavson in 2012.\n * Converted to Javascript by Joseph Gentle.\n *\n * Version 2012-03-09\n *\n * This code was placed in the public domain by its original author,\n * Stefan Gustavson. You may use it as you see fit, but\n * attribution is appreciated.\n *\n * --------------------\n * TypeScriptified 2016\n */\n\nclass Grad {\n\tx = 0\n\ty = 0\n\tz = 0\n\n\tconstructor (x, y, z) {\n\t\tthis.x = x\n\t\tthis.y = y\n\t\tthis.z = z\n\t}\n\n\tdot2 (x, y) {\n\t\treturn this.x * x + this.y * y\n\t}\n\n\tdot3 (x, y, z) {\n\t\treturn this.x * x + this.y * y + this.z * z\n\t}\n}\n\nconst F2 = 0.5 * (Math.sqrt(3) - 1)\nconst G2 = (3 - Math.sqrt(3)) / 6\n\nconst perm = new Array(512)\nconst gradP = new Array(512)\n\nconst grad3 = [\n\tnew Grad(1,1,0), new Grad(-1,1,0), new Grad(1,-1,0), new Grad(-1,-1,0),\n\tnew Grad(1,0,1), new Grad(-1,0,1), new Grad(1,0,-1), new Grad(-1,0,-1),\n\tnew Grad(0,1,1), new Grad(0,-1,1), new Grad(0,1,-1), new Grad(0,-1,-1)\n]\n\nconst p = [\n\t151,160,137,91,90,15,\n\t131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,\n\t190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,\n\t88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,\n\t77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,\n\t102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,\n\t135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,\n\t5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,\n\t223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,\n\t129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,\n\t251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,\n\t49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,\n\t138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180\n]\n\n// This isn't a very good seeding function, but it works ok. It supports 2^16\n// different seed values. Write something better if you need more seeds.\nfunction seed (seed) {\n\tif (seed > 0 && seed < 1) {\n\t\t// Scale the seed out\n\t\tseed *= 65536\n\t}\n\n\tseed = Math.floor(seed)\n\tif (seed < 256) {\n\t\tseed |= seed << 8\n\t}\n\n\tfor (let i = 0; i < 256; i++) {\n\t\tlet v =0\n\t\tif (i & 1) {\n\t\t\tv = p[i] ^ (seed & 255)\n\t\t} else {\n\t\t\tv = p[i] ^ ((seed >> 8) & 255)\n\t\t}\n\n\t\tperm[i] = perm[i + 256] = v\n\t\tgradP[i] = gradP[i + 256] = grad3[v % 12]\n\t}\n}\n\nseed(0)\n\n// 2D simplex noise\nexport default function simplex(xin, yin) {\n\t// let n0, n1, n2 // Noise contributions from the three corners\n\t\tlet n0 = 0\n\t\tlet n1 = 0\n\t\tlet n2 = 0// Noise contributions from the three corners\n\t// Skew the input space to determine which simplex cell we're in\n\tconst s = (xin + yin) * F2 // Hairy factor for 2D\n\tlet i = Math.floor(xin + s)\n\tlet j = Math.floor(yin + s)\n\tconst t = (i + j) * G2\n\tconst x0 = xin - i + t // The x,y distances from the cell origin, unskewed.\n\tconst y0 = yin - j + t\n\t// For the 2D case, the simplex shape is an equilateral triangle.\n\t// Determine which simplex we are in.\n\t// let i1, j1 // Offsets for second (middle) corner of simplex in (i,j) coords\n\tlet i1 = 0\n\tlet j1 = 0\n\tif (x0 > y0) { // lower triangle, XY order: (0,0)->(1,0)->(1,1)\n\t\ti1 = 1\n\t\tj1 = 0\n\t} else { // upper triangle, YX order: (0,0)->(0,1)->(1,1)\n\t\ti1 = 0\n\t\tj1 = 1\n\t}\n\t// A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and\n\t// a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where\n\t// c = (3-sqrt(3))/6\n\tconst x1 = x0 - i1 + G2 // Offsets for middle corner in (x,y) unskewed coords\n\tconst y1 = y0 - j1 + G2\n\tconst x2 = x0 - 1 + 2 * G2 // Offsets for last corner in (x,y) unskewed coords\n\tconst y2 = y0 - 1 + 2 * G2\n\t// Work out the hashed gradient indices of the three simplex corners\n\ti &= 255\n\tj &= 255\n\tconst gi0 = gradP[i + perm[j]]\n\tconst gi1 = gradP[i + i1 + perm[j + j1]]\n\tconst gi2 = gradP[i + 1 + perm[j + 1]]\n\t// Calculate the contribution from the three corners\n\tlet t0 = 0.5 - x0 * x0 - y0 * y0\n\tif (t0 < 0) {\n\t\tn0 = 0\n\t} else {\n\t\tt0 *= t0\n\t\tn0 = t0 * t0 * gi0.dot2(x0, y0) // (x,y) of grad3 used for 2D gradient\n\t}\n\tlet t1 = 0.5 - x1 * x1 - y1 * y1\n\tif (t1 < 0) {\n\t\tn1 = 0\n\t} else {\n\t\tt1 *= t1\n\t\tn1 = t1 * t1 * gi1.dot2(x1, y1)\n\t}\n\tlet t2 = 0.5 - x2 * x2 - y2 * y2\n\tif (t2 < 0) {\n\t\tn2 = 0\n\t} else {\n\t\tt2 *= t2\n\t\tn2 = t2 * t2 * gi2.dot2(x2, y2)\n\t}\n\t// Add contributions from each corner to get the final noise value.\n\t// The result is scaled to return values in the interval [-1,1].\n\treturn 70 * (n0 + n1 + n2)\n}\n","module.exports = __webpack_public_path__ + \"ab7b6e3aa300bd05bd5bb0ab30aa4647.glb\";","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","export default \"// LICENSE: MIT\\n// Copyright (c) 2017 by Mike Linkovich\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nuniform mat4 modelViewMatrix;\\nuniform mat4 projectionMatrix;\\n\\nattribute vec3 position;\\n\\nvarying vec3 vSurfacePos;\\n\\nvoid main() {\\n\\tvSurfacePos = position;\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n}\\n\"","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","import React, {useRef, useEffect, useMemo} from 'react'\nimport {useFrame} from 'react-three-fiber'\nimport {ShaderMaterial, UniformsUtils, ShaderLib} from 'three'\n\nimport {useAssets, useTexture} from '../../../../hooks'\n// import gui from '../../../../helpers/gui'\nimport fragment from '../../../../shaders/cloud.frag'\nimport vertex from '../../../../shaders/cloud.vert'\n\n\nexport default ({size, uniformProps, pos}) => {\n const group = useRef()\n const mesh = useRef()\n const [width, height, scale] = size\n const [scaleFactor1, timefactor1, strength1, scaleFactor2, timefactor2, strength2] = uniformProps\n\n const [x,y,z] = pos\n\n const src1 = useAssets('images/clouds/1.jpg')\n const t1 = useTexture(src1)\n\n const src2 = useAssets('images/clouds/2.jpg')\n const t2 = useTexture(src2)\n\n const myUniforms = useMemo(() => ({\n uTime: {value: 0},\n uTxtShape: {value: t1},\n uTxtCloudNoise: {value: t2},\n uFac1: {value: scaleFactor1},\n uFac2: {value: scaleFactor2},\n uTimeFactor1: {value: timefactor1},\n uTimeFactor2: {value: timefactor2},\n uDisplStrenght1: {value: strength1},\n uDisplStrenght2: {value: strength2},\n }), [t1])\n\n const material = useMemo(() => {\n const mat = new ShaderMaterial({\n uniforms: {...UniformsUtils.clone(ShaderLib.sprite.uniforms), ...myUniforms},\n vertexShader: vertex,\n fragmentShader: fragment,\n transparent: true,\n })\n\n return mat\n }, [])\n\n useEffect( () => {\n if (material) {\n material.uniforms.uTxtShape.value = t1\n }\n }, [t1])\n\n useEffect( () => {\n if (material) {\n material.uniforms.uTxtCloudNoise.value = t2\n }\n }, [t2])\n\n useFrame(()=> {\n if (material) {\n material.uniforms.uTime.value += 1\n }\n })\n\n /**\n * DAT GUI\n */\n// useEffect(() => {\n// if (material) {\n//\n// material.uniforms.uFac1 = scaleFactor1\n// material.uniforms.uTimeFactor1 =timefactor1\n// material.uniforms.uDisplStrenght1 =\n// material.uniforms.uTimeFactor2 =\n// material.uniforms.uFac2 = scaleFactor2\n// material.uniforms.uDisplStrenght2 =\n// //\n// //\n// // // gui.get((gui) => {\n// // // gui.add(material.uniforms.uFac1, 'value', 0.00001, 30).step(0.1).name('1-ScaleFactor')\n// // // gui.add(material.uniforms.uTimeFactor1, 'value', 0.00001, 0.009).step(0.0001).name('1-TimeFactor')\n// // // gui.add(material.uniforms.uDisplStrenght1, 'value', 0.00001, 0.3).step(0.01).name('1-Strength')\n// // // gui.add(material.uniforms.uTimeFactor2, 'value', 0.00001, 0.009).step(0.0001).name('2-TimeFactor')\n// // // gui.add(material.uniforms.uFac2, 'value', 0.00001, 100).name('2-ScaleFactor')\n// // // gui.add(material.uniforms.uDisplStrenght2, 'value', 0.00001, 0.3).step(0.01).name('2-Strength')\n// // // })\n// }\n// }, [material])\n\n\n return (\n \n \n \n \n \n \n )\n}\n","module.exports = __webpack_public_path__ + \"static/height_2-13c78d94b3bf43b81ac939f501e5bf2c.jpg\";","import React, {useEffect, useRef, useState , Suspense} from 'react'\nimport * as THREE from 'three'\n\n\nimport { useFrame, useLoader, HTML, Dom } from 'react-three-fiber'\nimport PFAS_logo from './images/pfas_logo.png'\n\nimport Canvas from './components/Canvas'\nimport Camera from './components/Canvas/Camera'\nimport Sphere from './components/Canvas/Sphere'\nimport Environment from './components/Canvas/Environment'\nimport Particles from './components/particles.js'\nimport gsap ,{TweenMax} from 'gsap'\nconst GROUND_HEIGHT = -50;\n\n\n//\n// function Box(props) {\n// // This reference will give us direct access to the mesh\n// const mesh = useRef()\n//\n// // Set up state for the hovered and active state\n// const [hovered, setHover] = useState(false)\n// const [active, setActive] = useState(false)\n//\n// // Rotate mesh every frame, this is outside of React without overhead\n// useFrame(() => {\n// mesh.current.rotation.x = mesh.current.rotation.y += 0.01\n// })\n//\n// return (\n// setActive(!active)}\n// onPointerOver={(e) => setHover(true)}\n// onPointerOut={(e) => setHover(false)}>\n// \n// \n// \n// )\n// }\n\nfunction Sprite({ url, ...props }) {\n const texture = useLoader(THREE.TextureLoader, url)\n return (\n \n \n \n )\n}\n // \n\n\n\nfunction Dolly({camera, percentage, scrollsection}) {\n // This one makes the camera move in and out\n // useFrame(({ scrollpercentage, camera }) => camera.updateProjectionMatrix(void (camera.position.z = 0.1 + Math.sin(clock.getElapsedTime()))))\nconsole.log(\"camera\", camera)\n// camera.position.z = 1000\n\n // useFrame(({ clock, camera }) => {\n // let tl = gsap.timeline()\n // tl.to(camera.position,{z:-0.1,y:-0.5,delay:20,duration: 10});\n // })\n\n // let tl = gsap.timeline({useFrames: true });\n //\n // useFrame(({ clock,camera }) => {\n // console.log(percentage, tl.progress())\n //\n // if(scrollsection === \"intro\" || scrollsection === \"resolve\"){\n // tl.to(camera.position,{z:10});\n // }\n // if(scrollsection === \"particles\"){\n // tl.fromTo(camera.position,{z:10},{z:100});\n //\n // }\n // if(scrollsection === \"particles2\"){\n // //tl.fromTo(camera.position,{z:100},{z:1000});\n // }\n //\n // tl.progress(percentage).pause()\n //\n // })\n\n\n\n useFrame(({ clock,camera }) => {\n\n if(scrollsection === \"intro\" || scrollsection === \"resolve\"){\n\n TweenMax.to(camera.position,{z:-Math.abs(percentage)});\n\n }\n if(scrollsection === \"particles\"){\n TweenMax.to(camera.position,{z:percentage*100});\n }\n if(scrollsection === \"particles2\"){\n TweenMax.to(camera.position,{z:percentage*10});\n }\n\n\n })\n\n\n return null\n}\n\n\n\n\n\n// function Terrain() {\n// const terrain = useRef();\n//\n// useFrame(() => {\n// terrain.current.position.z += 0.4;\n// });\n// return (\n// \n// \n// \n// \n// );\n// }\n// \n// loading...}>\n// \n// \n// \n//
We partner with companies and organisations across the world to identify and resolve the challenges of PFAS
\n//
\n//
\n\n\nconst ThreeD = ({scrollpercentage, scrollsection}) => (\n\n\n \n {scrollsection.includes(\"particles\") ?\n\n :\n <>\n \n \n \n}\n\n\n\n\n\n\n\n \n\n\n\n)\n\n\n\nexport default ThreeD\n","module.exports = __webpack_public_path__ + \"static/foam_bump-902cea88d19d437ae209edfcba15d337.jpg\";","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Helmet } from \"react-helmet\"\nimport DefaultImg from \"../images/social_default.jpg\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nfunction SEO({ description, lang, meta, title, metaImage }) {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n title\n description\n author\n }\n }\n }\n `\n )\n\n const metaDescription = description || site.siteMetadata.description\n const image = metaImage || DefaultImg\n\n return (\n \n )\n}\n\nSEO.defaultProps = {\n lang: `en`,\n meta: [],\n description: ``,\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string.isRequired,\n}\n\nexport default SEO\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import * as THREE from \"three\";\n\nexport function createMesh (tex, radius, lats = 16, lngs = 32) {\n\ttex.wrapS = tex.wrapT = THREE.RepeatWrapping\n\treturn new THREE.Mesh(\n\t\tnew THREE.SphereGeometry(\n\t\t\tradius, lngs, lats, 0, Math.PI * 2.0, 0, Math.PI / 2.0\n\t\t).rotateX(Math.PI / 2.0).rotateZ(Math.PI),\n\n\t\tnew THREE.MeshBasicMaterial({\n\t\t\tcolor: 0xFFFFFF, side: THREE.BackSide, map: tex, fog: false\n\t\t})\n\t)\n}\n","export default \"// LICENSE: MIT\\n// Copyright (c) 2017 by Mike Linkovich\\n\\nprecision highp float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D map;\\nuniform sampler2D heightMap;\\nuniform vec3 fogColor;\\nuniform float fogNear;\\nuniform float fogFar;\\nuniform float grassFogFar;\\n\\nvarying vec2 vSamplePos;\\nvarying vec4 vColor;\\nvarying vec2 vUv;\\n\\nvoid main() {\\n\\tvec4 color = vec4(vColor) * texture2D(map, vUv);\\n\\tvec4 hdata = texture2D(heightMap, vSamplePos);\\n\\n\\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\\n\\n\\t// make grass transparent as it approachs outer view distance perimeter\\n\\tcolor.a = 1.0 - smoothstep(grassFogFar * 0.55, grassFogFar * 0.8, depth);\\n\\n\\t// apply terrain lightmap\\n\\tfloat light = hdata.g;\\n\\tcolor.r *= light;\\n\\tcolor.g *= light;\\n\\tcolor.b *= light;\\n\\n\\t// then apply atmosphere fog\\n\\tfloat fogFactor = smoothstep(fogNear, fogFar, depth);\\n\\tcolor.rgb = mix(color.rgb, fogColor, fogFactor);\\n\\t// output\\n\\tgl_FragColor = color;\\n}\\n\"","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","function E() {// Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function on(name, callback, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n return this;\n },\n once: function once(name, callback, ctx) {\n var self = this;\n\n function listener() {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n\n ;\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n emit: function emit(name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n off: function off(name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n } // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n\n liveEvents.length ? e[name] = liveEvents : delete e[name];\n return this;\n }\n};\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;","var map = {\n\t\"./IEimages\": \"+bZB\",\n\t\"./IEimages.js\": \"+bZB\",\n\t\"./components/Canvas\": \"jaOP\",\n\t\"./components/Canvas/\": \"jaOP\",\n\t\"./components/Canvas/Camera\": \"VO7C\",\n\t\"./components/Canvas/Camera/\": \"VO7C\",\n\t\"./components/Canvas/Camera/Controls\": \"pqom\",\n\t\"./components/Canvas/Camera/Controls.js\": \"pqom\",\n\t\"./components/Canvas/Camera/index\": \"VO7C\",\n\t\"./components/Canvas/Camera/index.js\": \"VO7C\",\n\t\"./components/Canvas/Environment\": \"sU/i\",\n\t\"./components/Canvas/Environment/\": \"sU/i\",\n\t\"./components/Canvas/Environment/Background\": \"CQb6\",\n\t\"./components/Canvas/Environment/Background/\": \"CQb6\",\n\t\"./components/Canvas/Environment/Background/index\": \"CQb6\",\n\t\"./components/Canvas/Environment/Background/index.js\": \"CQb6\",\n\t\"./components/Canvas/Environment/Cloud\": \"u5N/\",\n\t\"./components/Canvas/Environment/Cloud/\": \"u5N/\",\n\t\"./components/Canvas/Environment/Cloud/index\": \"u5N/\",\n\t\"./components/Canvas/Environment/Cloud/index.js\": \"u5N/\",\n\t\"./components/Canvas/Environment/index\": \"sU/i\",\n\t\"./components/Canvas/Environment/index.js\": \"sU/i\",\n\t\"./components/Canvas/Sphere\": \"BGtP\",\n\t\"./components/Canvas/Sphere/\": \"BGtP\",\n\t\"./components/Canvas/Sphere/index\": \"BGtP\",\n\t\"./components/Canvas/Sphere/index.js\": \"BGtP\",\n\t\"./components/Canvas/index\": \"jaOP\",\n\t\"./components/Canvas/index.js\": \"jaOP\",\n\t\"./components/concrete\": \"ImiR\",\n\t\"./components/concrete.js\": \"ImiR\",\n\t\"./components/foam_new/FresnelShader\": \"M+eD\",\n\t\"./components/foam_new/FresnelShader.js\": \"M+eD\",\n\t\"./components/foam_new/assets/233.jpg\": \"EhDR\",\n\t\"./components/foam_new/assets/diamond.glb\": \"sd3G\",\n\t\"./components/foam_new/assets/foam_bump.jpg\": \"UGxX\",\n\t\"./components/foam_new/assets/foam_diffuse.jpg\": \"jYvD\",\n\t\"./components/foam_new/assets/foam_normal.jpg\": \"V5aw\",\n\t\"./components/foam_new/foam_new\": \"3A8A\",\n\t\"./components/foam_new/foam_new.js\": \"3A8A\",\n\t\"./components/particle_effects\": \"379U\",\n\t\"./components/particle_effects.js\": \"379U\",\n\t\"./components/particles\": \"+lWR\",\n\t\"./components/particles.js\": \"+lWR\",\n\t\"./components/terrain/bufferset\": \"4F6k\",\n\t\"./components/terrain/bufferset.js\": \"4F6k\",\n\t\"./components/terrain/data/grass.jpg\": \"ealj\",\n\t\"./components/terrain/data/height_2.jpg\": \"uWXq\",\n\t\"./components/terrain/data/height_3.jpg\": \"Y089\",\n\t\"./components/terrain/data/height_4.jpg\": \"jEhS\",\n\t\"./components/terrain/data/height_5.jpg\": \"8Yvl\",\n\t\"./components/terrain/data/heightmap.jpg\": \"RcPU\",\n\t\"./components/terrain/data/noise.jpg\": \"muLP\",\n\t\"./components/terrain/data/oVihm.jpg\": \"EA+P\",\n\t\"./components/terrain/data/sky2.jpg\": \"k4Zc\",\n\t\"./components/terrain/data/sky2env.jpg\": \"RCsz\",\n\t\"./components/terrain/data/skydome.jpg\": \"gypB\",\n\t\"./components/terrain/data/skyenv.jpg\": \"Q8Tp\",\n\t\"./components/terrain/data/terrain1.jpg\": \"2vq9\",\n\t\"./components/terrain/data/terrain2.jpg\": \"UfnP\",\n\t\"./components/terrain/gmath\": \"kVwp\",\n\t\"./components/terrain/gmath.js\": \"kVwp\",\n\t\"./components/terrain/grass\": \"UeRj\",\n\t\"./components/terrain/grass.js\": \"UeRj\",\n\t\"./components/terrain/heightfield\": \"UI+J\",\n\t\"./components/terrain/heightfield.js\": \"UI+J\",\n\t\"./components/terrain/loader\": \"EXPf\",\n\t\"./components/terrain/loader.js\": \"EXPf\",\n\t\"./components/terrain/player\": \"7REk\",\n\t\"./components/terrain/player.js\": \"7REk\",\n\t\"./components/terrain/shader/grass.frag.glsl\": \"w5x0\",\n\t\"./components/terrain/shader/grass.vert.glsl\": \"jWGe\",\n\t\"./components/terrain/shader/terrain.frag.glsl\": \"M9BE\",\n\t\"./components/terrain/shader/terrain.vert.glsl\": \"iRbm\",\n\t\"./components/terrain/shader/water.frag.glsl\": \"OI0Z\",\n\t\"./components/terrain/shader/water.vert.glsl\": \"tVUq\",\n\t\"./components/terrain/simplex\": \"sXur\",\n\t\"./components/terrain/simplex.js\": \"sXur\",\n\t\"./components/terrain/skydome\": \"vvub\",\n\t\"./components/terrain/skydome.js\": \"vvub\",\n\t\"./components/terrain/terrain\": \"34CZ\",\n\t\"./components/terrain/terrain.js\": \"34CZ\",\n\t\"./components/terrain/terrain_launcher\": \"UMZF\",\n\t\"./components/terrain/terrain_launcher.js\": \"UMZF\",\n\t\"./components/terrain/terramap\": \"4aO4\",\n\t\"./components/terrain/terramap.js\": \"4aO4\",\n\t\"./components/terrain/vec\": \"HWry\",\n\t\"./components/terrain/vec.js\": \"HWry\",\n\t\"./components/terrain/water\": \"DGjv\",\n\t\"./components/terrain/water.js\": \"DGjv\",\n\t\"./components/terrain/world\": \"8b6g\",\n\t\"./components/terrain/world.js\": \"8b6g\",\n\t\"./components/water\": \"FHkF\",\n\t\"./components/water.js\": \"FHkF\",\n\t\"./components/waterpass\": \"N25r\",\n\t\"./components/waterpass.js\": \"N25r\",\n\t\"./data\": \"Rkg3\",\n\t\"./data/\": \"Rkg3\",\n\t\"./data/colors\": \"W4d1\",\n\t\"./data/colors.json\": \"W4d1\",\n\t\"./data/index\": \"Rkg3\",\n\t\"./data/index.js\": \"Rkg3\",\n\t\"./data/tree1\": \"yMZ9\",\n\t\"./data/tree1.json\": \"yMZ9\",\n\t\"./helpers/loadingManager\": \"nbYq\",\n\t\"./helpers/loadingManager.js\": \"nbYq\",\n\t\"./hooks\": \"ImYL\",\n\t\"./hooks/\": \"ImYL\",\n\t\"./hooks/index\": \"ImYL\",\n\t\"./hooks/index.js\": \"ImYL\",\n\t\"./hooks/useAssets\": \"ynN6\",\n\t\"./hooks/useAssets.js\": \"ynN6\",\n\t\"./hooks/useImage\": \"/dqY\",\n\t\"./hooks/useImage.js\": \"/dqY\",\n\t\"./hooks/useRawData\": \"sQBp\",\n\t\"./hooks/useRawData.js\": \"sQBp\",\n\t\"./hooks/useTexture\": \"K1Yk\",\n\t\"./hooks/useTexture.js\": \"K1Yk\",\n\t\"./images/Concrete.jpg\": \"kQia\",\n\t\"./images/clouds/1.jpg\": \"b1dY\",\n\t\"./images/clouds/2.jpg\": \"aKgS\",\n\t\"./images/foam/foam_bump.jpg\": \"vZyP\",\n\t\"./images/foam/foam_diffuse.jpg\": \"FRwS\",\n\t\"./images/foam/foam_normal.jpg\": \"O4Xw\",\n\t\"./images/pfas_logo.png\": \"eQzE\",\n\t\"./images/pfas_logo.svg\": \"xRzB\",\n\t\"./shaders/FresnelShader\": \"bO9H\",\n\t\"./shaders/FresnelShader.js\": \"bO9H\",\n\t\"./shaders/cloud.frag\": \"CXaA\",\n\t\"./shaders/cloud.vert\": \"1Dfx\",\n\t\"./shaders/default.vert\": \"mwQd\",\n\t\"./shaders/environment.frag\": \"nkMd\",\n\t\"./shaders/levels.glsl\": \"nmNM\",\n\t\"./shaders/parallaxshader\": \"pR9x\",\n\t\"./shaders/parallaxshader.js\": \"pR9x\",\n\t\"./shaders/water.vert\": \"PWgp\",\n\t\"./shaders/waterpass.frag\": \"Bk4P\",\n\t\"./shaders/waterpass.vert\": \"SmeS\",\n\t\"./threed\": \"AR53\",\n\t\"./threed.js\": \"AR53\",\n\t\"./threedMicro\": \"ufIb\",\n\t\"./threedMicro.js\": \"ufIb\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"weFk\";","module.exports = __webpack_public_path__ + \"static/pfas_logo-dd86eac4250d6f7a538bc64ad53e0ef3.svg\";","export default function useAssets(path) {\n const src = ''\n\n if (path) {\n try {\n return require(`../${path}`)\n } catch (err) {\n console.warn(err)\n }\n }\n\n return src\n}\n","import \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.string.repeat\";\nimport \"core-js/modules/es6.array.last-index-of\";\nimport \"core-js/modules/es6.date.now\";\nimport \"core-js/modules/es6.regexp.constructor\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.string.trim\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.object.create\";\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n/*!\n * GSAP 3.5.1\n * https://greensock.com\n *\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\n\n\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-\\+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+(?:\\.|e-|e)*\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[\\.\\d]+/,\n _delimitedValueExp = /[#\\-+.]*\\b[a-z\\d-=+%.]+/gi,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _parseVars = function _parseVars(params, type, parent) {\n //reads the arguments passed to one of the key methods and figures out if the user is defining things with the OLD/legacy syntax where the duration is the 2nd parameter, and then it adjusts things accordingly and spits back the corrected vars object (with the duration added if necessary, as well as runBackwards or startAt or immediateRender). type 0 = to()/staggerTo(), 1 = from()/staggerFrom(), 2 = fromTo()/staggerFromTo()\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = parent;\n\n if (type) {\n irVars = vars;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return vars;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && _lazyRender();\n animation.render(time, suppressEvents, force);\n _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" || p === \"ease\" || (obj[p] = defaults[p]);\n }\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p];\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n return (tTime /= cycleDuration) && ~~tTime === tTime ? ~~tTime - 1 : ~~tTime;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _round(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _round(animation._dp._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || child._initted && !child._dur) {\n //in case, for example, the _start is moved on a tween that has already rendered. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning.\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _round(position + child._delay);\n child._end = _round(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n timeline._recent = child;\n skipChecks || _postAddChecks(timeline, child);\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) {\n _initTween(tween, totalTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [totalTime, suppressEvents];\n return 1;\n }\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && prevRatio && !tween._start && tween._zTime > _tinyNum && !tween._dp._lock || (tween._ts < 0 || tween._dp._ts < 0) && tween.data !== \"isFromStart\" && tween.data !== \"isStart\" ? 0 : 1,\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0. Also, if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n prevIteration = _animationCycle(tween._tTime, repeatDelay);\n\n if (iteration !== prevIteration) {\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n suppressEvents || _callback(tween, \"onStart\");\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (!child._dur && child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (!child._dur && child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _round(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _round(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n i = position.charAt(0);\n\n if (i === \"<\" || i === \">\") {\n return (i === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0);\n }\n\n i = position.indexOf(\"=\");\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = +(position.charAt(i - 1) + position.substr(i + 1));\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1)) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value) {\n return (value = (value + \"\").substr((parseFloat(value) + \"\").length)) && isNaN(value) ? value : \"\";\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, leaveStrings) {\n return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call(_doc.querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _round(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = v < 1 ? Math.pow(10, (v + \"\").length - 2) : 1; //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed()\n\n return function (raw) {\n return Math.floor(Math.round(parseFloat(raw) / v) * v * p) / p + (_isNumber(raw) ? 0 : getUnit(raw));\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min + Math.random() * (max - min)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n params,\n scope;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n return params ? callback.apply(scope, params) : callback.call(scope);\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _createPlugin = function _createPlugin(config) {\n config = !config.name && config[\"default\"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n _hue = function _hue(h, m1, m2) {\n h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length === 4) {\n //for shorthand like #9F0\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b;\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _raf = _win.requestAnimationFrame;\n }\n\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || 1 / _tinyNum; //zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback) {\n _listeners.indexOf(callback) < 0 && _listeners.push(callback);\n\n _wake();\n },\n remove: function remove(callback) {\n var i;\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars, time) {\n var parent = vars.parent || _globalTimeline;\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat || 0) {\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n _tickerActive || _ticker.wake();\n parent && _addToTimeline(parent, this, time || time === 0 ? time : parent._time, 1);\n vars.reversed && this.reverse();\n vars.paused && this.paused(true);\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime); //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n\n while (parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n\n _lazySafeRender(this, _totalTime, suppressEvents);\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % this._dur || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n return _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && (this._tTime -= _tinyNum) && Math.abs(this._zTime) !== _tinyNum); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detatched parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (animation._ts || 1);\n animation = animation._dp;\n }\n\n return time;\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n this._rDelay = value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, time) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars, time) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _this.parent && _postAddChecks(_this.parent, _assertThisInitialized(_this));\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n new Tween(targets, _parseVars(arguments, 0, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n new Tween(targets, _parseVars(arguments, 1, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n new Tween(targets, _parseVars(arguments, 2, this), _parsePosition(this, _isNumber(fromVars) ? arguments[4] : position));\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), _parsePosition(this, position));\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = this !== _globalTimeline && totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n time = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://greensock.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : dur;\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _round(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime !== this._time || prevPaused !== !this._ts) {\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _round(prevTime), _round(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n }\n\n !prevTime && time && !suppressEvents && _callback(this, \"onStart\");\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n if (!_isNumber(position)) {\n position = _parsePosition(this, position);\n }\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _round(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n tween = Tween.to(tl, _setDefaults(vars, {\n ease: \"none\",\n lazy: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n var duration = vars.duration || Math.abs((endTime - tl._time) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }));\n\n return tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate() {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate();\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._time = this._tTime = this._pTime = 0;\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === \"-\" ? -1 : 1) : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n end = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === \"-\" ? -1 : 1) + (getUnit(parsedStart) || 0);\n }\n }\n\n if (parsedStart !== end) {\n if (!isNaN(parsedStart * end)) {\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_initTween = function _initTween(tween, time) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n onUpdateParams = vars.onUpdateParams,\n callbackScope = vars.callbackScope,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.parent._targets : targets,\n autoOverwrite = tween._overwrite === \"auto\",\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n if (!tl) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n prevStartAt && prevStartAt.render(-1, true).kill();\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate,\n onUpdateParams: onUpdateParams,\n callbackScope: callbackScope,\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n if (immediateRender) {\n if (time > 0) {\n autoRevert || (tween._startAt = 0); //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in Timeline instances where immediateRender was false or when autoRevert is explicitly set to true.\n } else if (dur && !(time < 0 && prevStartAt)) {\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (prevStartAt) {\n !autoRevert && (tween._startAt = 0);\n } else {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y:gsap.utils.wrap([-100,100])})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(0)); //Also make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase\",\n _staggerPropsToSkip = (_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\").split(\",\");\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, time, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n time.duration = vars;\n vars = time;\n time = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars), time) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = _this3.parent,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://greensock.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {}\n });\n tl.kill();\n tl.parent = _assertThisInitialized(_this3);\n\n if (keyframes) {\n _setDefaults(tl.vars.defaults, {\n ease: \"none\"\n });\n\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n } else {\n l = parsedTargets.length;\n staggerFunc = stagger ? distribute(stagger) : _emptyFunc;\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = {};\n\n for (p in vars) {\n if (_staggerPropsToSkip.indexOf(p) < 0) {\n copy[p] = vars[p];\n }\n }\n\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets));\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n parent && _postAddChecks(parent, _assertThisInitialized(_this3));\n\n if (immediateRender || !duration && !keyframes && _this3._start === _round(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay)); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || this._startAt && this._zTime < 0 !== totalTime < 0) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n time = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock) {\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_round(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n time && !prevTime && !suppressEvents && _callback(this, \"onStart\");\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate() {\n this._pt = this._op = this._startAt = this._onUpdate = this._act = this._lazy = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate();\n return _Animation2.prototype.invalidate.call(this);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = 0;\n\n if (this.parent) {\n return _interrupt(this);\n }\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweenng, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return new Tween(targets, _parseVars(arguments, 1));\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n });\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return new Tween(targets, _parseVars(arguments, 2));\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref) {\n var name = _ref.name,\n effect = _ref.effect,\n plugins = _ref.plugins,\n defaults = _ref.defaults,\n extendTimeline = _ref.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt;\n\n for (p in vars) {\n pt = this.add(target, \"setAttribute\", (target.getAttribute(p) || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt && (pt.op = p);\n\n this._props.push(p);\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i]);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.5.1\";\n_coreReady = 1;\n\nif (_windowExists()) {\n _wake();\n}\n\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache };","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.string.trim\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.regexp.replace\";\n\n/*!\n * CSSPlugin 3.5.1\n * https://greensock.com\n *\n * Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(?:left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n},\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n},\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n},\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n},\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n},\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n},\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _pluginInitted = 1;\n }\n},\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n},\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n},\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n},\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n if (property.substr(0, 2) === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n\n style.removeProperty(property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n},\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n},\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n},\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if (toPercent && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n //transforms and borderRadius are relative to the size of the element itself!\n return _round(curValue / (isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty]) * amount);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {\n return _round(curValue / cache.width * amount);\n } else {\n (toPercent || curUnit === \"%\") && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n\n return unit && !~(value + \"\").indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n //note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://greensock.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://greensock.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n relative,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (end === \"auto\") {\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n target.style[prop] = start;\n }\n\n a = [start, end];\n\n _colorStringFilter(a); //pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n relative = endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n\n if (relative) {\n endValue = endValue.substr(2);\n }\n\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: relative ? relative * endNum : endNum - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n if (_relExp.test(end)) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n},\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n},\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n cache.uncache = 1;\n }\n }\n }\n},\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextSibling;\n\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin);\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y;\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n t1 = !cache.uncache && target.getAttribute(\"data-svg-origin\");\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.cos(skewX * _DEG2RAD));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n cache.x = ((cache.xPercent = x && Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0) ? 0 : x) + px;\n cache.y = ((cache.yPercent = y && Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0) ? 0 : y) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n},\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n},\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n\n if (forceCSS) {\n //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n target.style[_transformProp] = temp;\n }\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = relative ? endNum * relative : endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n},\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var style = _tempDivStyler.style,\n startCache = target._gsap,\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n style.cssText = getComputedStyle(target).cssText + \";position:absolute;display:block;\"; //%-based translations will fail unless we set the width/height to match the original target (and padding/borders can affect it)\n\n style[_transformProp] = transforms;\n\n _doc.body.appendChild(_tempDivStyler);\n\n endCache = _parseTransform(_tempDivStyler, 1);\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, startCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _doc.body.removeChild(_tempDivStyler);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\n\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority;\n _pluginInitted || _initCore();\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n //plugins\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n if (specialProp(this, target, p, endValue, tween)) {\n hasPriority = 1;\n }\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n this.add(style, \"setProperty\", getComputedStyle(target).getPropertyValue(p) + \"\", endValue + \"\", index, targets, 0, 0, p);\n } else if (type !== \"undefined\") {\n startValue = _get(target, p);\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n\n if (relative) {\n endValue = endValue.substr(2);\n }\n\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform || _parseTransform(target); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, relative ? relative * endNum : endNum - cache.scaleY);\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, endValue, relative);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, endUnit === \"px\" && vars.autoRound !== false && !isTransformRelated ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit) {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, target[p], endValue, index, targets);\n } else {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, endValue);\n }\n\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\n\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","module.exports = __webpack_public_path__ + \"static/contact-edb344dadbbc0daa271d937ee4fd430b.jpg\";"],"sourceRoot":""}