{"version":3,"sources":["webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./src/static/images/weather/04d.png","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./src/passes/GlitchShader.js","webpack:///./src/passes/GlitchPass.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/ClearPass.js","webpack:///./src/components/Header.js","webpack:///./src/components/Time.js","webpack:///./src/components/Menu.js","webpack:///./src/components/Footer.js","webpack:///./src/components/SmoothScroll.js","webpack:///./src/components/CustomCursor.js","webpack:///./src/components/layout.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/CopyShader.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./src/static/images/logo.svg","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./src/static/images/weather/50d.png","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/lodash/find.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/ShaderPass.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_baseFindIndex.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/RenderingPass.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/ClearMaskPass.js","webpack:///./src/static/images/weather/10d.png","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/MaskPass.js","webpack:///./src/static/images/weather/02d.png","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/toInteger.js","webpack:///./src/static/images/weather/03d.png","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/findIndex.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_createFind.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/toFinite.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./src/static/images/gifs/work_with_us.gif","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./src/static/images/drag_1.svg","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/RenderPass.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/EffectComposer.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./src/components/BigLink.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./src/static/images/weather/09d.png","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./src/components/WeatherWidget.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/Pass.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./src/components/SectionIndicator.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/core-js/internals/array-buffer-native.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/lib/TexturePass.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/@johh/three-effectcomposer/dist/index.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./src/static/images/weather/01d.png","webpack:///./node_modules/three-gltf-loader/index.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/components/ThreeModelView.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./src/static/images/weather/13d.png","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./src/static/images/weather/11d.png","webpack:///./src/components/Section.js"],"names":["assocIndexOf","module","exports","key","this","__data__","toIntegerOrInfinity","$RangeError","RangeError","it","result","baseProperty","basePropertyDeep","isKey","toKey","path","baseGetTag","isObjectLike","value","baseIsArguments","objectProto","Object","prototype","hasOwnProperty","propertyIsEnumerable","isArguments","arguments","call","ListCache","Map","MapCache","data","pairs","length","LARGE_ARRAY_SIZE","push","size","set","uncurryThis","anObject","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","test","getOwnPropertyDescriptor","Array","error","O","proto","__proto__","undefined","setCacheAdd","setCacheHas","SetCache","values","index","add","has","coreJsData","funcToString","Function","toString","func","e","baseGet","object","memoize","resolver","TypeError","memoized","args","apply","cache","get","Cache","hasOwn","isCallable","toObject","sharedKey","CORRECT_PROTOTYPE_GETTER","IE_PROTO","$Object","ObjectPrototype","getPrototypeOf","constructor","fails","F","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","clear","entry","castPath","isArray","isIndex","isLength","hasFunc","stringToPath","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","isObject","classof","tryToString","createNonEnumerableProperty","defineBuiltIn","defineProperty","f","isPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","state","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","options","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","Ctor","arrayLikeKeys","baseKeys","isArrayLike","map","forEach","DigitalGlitch","uniforms","tDiffuse","tDisp","byp","amount","angle","seed","seed_x","seed_y","distortion_x","distortion_y","col_s","show_noise","vertexShader","join","fragmentShader","GlitchPass","config","Pass","console","shader","THREE","clone","generateHeightmap","dt_size","frequencyDivider","minXDistortion","maxXDistortion","minYDistortion","maxYDistortion","glitchAmountDivider","minAngle","Math","PI","maxAngle","showNoise","applyGlitch","material","camera","scene","quad","goWild","curF","generateTrigger","assign","create","initUniformValues","random","randFloat","updateHeightmap","render","renderer","writeBuffer","readBuffer","texture","randX","renderToScreen","randInt","data_arr","i","val","needsUpdate","isSymbol","reIsDeepProp","reIsPlainProp","type","isPrototype","nativeKeys","Symbol","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","obj","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","_Pass2","ClearPass","_Pass","clearColor","clearAlpha","instance","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","needsSwap","subClass","superClass","_inherits","oldClearColor","oldClearAlpha","getClearColor","getHex","getClearAlpha","setClearColor","setRenderTarget","__esModule","default","HeaderContainer","styled","div","gutter","mobile","screenSizes","tablet","desktop","desktopLarge","Title","SectionIndicator","TitleContainer","desktopExtraLarge","Header","title","titleLink","className","to","src","Logo","alt","href","rel","Component","defaultProps","Container","span","Time","useState","time","setTime","useEffect","interval","checkTime","window","setInterval","today","h","m","s","Date","getHours","getMinutes","getSeconds","clearInterval","Bar","MenuIcon","active","TimeContainer","MenuContainer","css","colors","primary","ThreeModelContainer","SocialContainer","BigLink","BigLinkBase","Menu","weather","timeout","handleLinkClick","bind","componentDidMount","a","model","stop","fetch","then","json","setState","list","componentDidUpdate","toggleMenu","start","componentWillUnmount","clearTimeout","setTimeout","onClick","ThreeModelView","ref","rotationSpeed","x","y","meshIndex","cameraPos","z","cameraPosResponsive","rotationOffset","WeatherWidget","city","plain","React","PureComponent","FooterContainer","footer","Footer","gifurl","WorkWithUsGif","alwaysShowGifOnMobile","SmoothScrollContainer","ProgressContainer","ProgressBar","ProgressBarFill","SmoothScroll","disableSmoothScroll","requestId","scroller","container","updateScroller","onScroll","onWheel","onResize","progressOffsetY","progressHeight","initProgress","updateProgress","initGlobalVariables","width","innerWidth","progressContainerEl","ease","pageYOffset","targetY","scrollRequest","addEventListener","glitchTransitionDuration","removeEventListener","cancelAnimationFrame","progressContainerTween","progressContainer","opacity","progressBarTween","progressBar","TweenLite","height","clientHeight","windowHeight","innerHeight","document","getElementById","scrollHeight","dimensions","getBoundingClientRect","preventDefault","deltaY","max","min","requestAnimationFrame","abs","scrollTo","top","children","CursorContainer","DragIconImg","img","Cursor","onMouseMove","moveCursor","onWorkSwiperMouseDown","onWorkSwiperMouseUp","onSwiperMouseDown","onSwiperMouseUp","onSwiperEnter","onSwiperLeave","onLinkIconEnter","onLinkIconLeave","onLinkEnter","onLinkLeave","frameId","swiperContainers","querySelectorAll","from","el","swiperContainerWork","getElementsByClassName","isSafari","navigator","userAgent","clientX","clientY","cursor","left","classList","remove","linkDimensions","id","DragIcon","DragIcon2","DragIcon3","ANIMATE_IN_TIMING","Body","blur","Layout","menuActive","showCursor","navigateTo","onImageLoaded","renderContent","Promise","resolve","log","navigateIn","body","style","overflowY","navigateInDone","location","hash","replace","scrollIntoView","err","onMenuActive","page","pathname","navigateOut","navigate","headerTitle","headerLink","hideFooter","smoothScroll","show","Section","bodyBackgroundColor","query","array","offset","baseIsNative","getValue","stubFalse","freeExports","nodeType","freeModule","Buffer","root","isBuffer","maskSrcKey","exec","keys","toPositiveInteger","BYTES","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","srcValue","objValue","COMPARE_PARTIAL_FLAG","memoizeCapped","rePropName","reEscapeChar","string","charCodeAt","match","number","quote","subString","getMapData","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","bitmask","customizer","equalFunc","stack","byteLength","byteOffset","buffer","name","message","convert","isPartial","stacked","getNative","asyncGeneratorStep","gen","reject","_next","_throw","arg","info","done","_asyncToGenerator","fn","aCallable","internalSort","ArrayBufferViewCore","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","b","comparefn","getSortCompare","find","createFind","nativeCreate","_assertThisInitialized","newObj","_interopRequireWildcard","_RenderingPass2","ShaderPass","_RenderingPass","textureID","ShaderMaterial","UniformsUtils","defines","predicate","fromIndex","fromRight","freeGlobal","freeSelf","resIndex","RenderingPass","OrthographicCamera","Scene","Mesh","PlaneBufferGeometry","frustumCulled","isFunction","ClearMaskPass","buffers","stencil","setTest","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","getRawTag","objectToString","$String","String","$TypeError","argument","WeakMap","lengthOfArrayLike","toOffset","toIndexedObject","$set","WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS","0","TO_OBJECT_BUG","arrayLike","len","isKeyable","DataView","Set","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","MaskPass","inverse","context","color","setMask","depth","setLocked","writeValue","clearValue","setOp","REPLACE","setFunc","ALWAYS","setClear","EQUAL","KEEP","toFinite","remainder","n","iteratee","baseFindIndex","baseIteratee","toInteger","nativeMax","overArg","findIndexFunc","collection","iterable","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","webpackPolyfill","deprecate","paths","l","toNumber","baseIsMatch","getMatchData","source","matchData","splice","pop","baseTimes","inherited","isArr","isArg","isBuff","isType","skipIndexes","RenderPass","overrideMaterial","clearDepth","_renderer","oldAutoClear","autoClear","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","_ShaderPass2","_interopRequireDefault","_CopyShader2","_MaskPass2","_ClearMaskPass2","EffectComposer","_renderTarget","renderTarget","parameters","minFilter","LinearFilter","magFilter","format","RGBAFormat","stencilBuffer","getDrawingBufferSize","WebGLRenderTarget","renderTarget1","renderTarget2","passes","copyPass","tmp","pass","setSize","delta","maskActive","enabled","stencilFunc","NOTEQUAL","swapBuffers","dispose","typedArrayTags","Gif","hasGif","BigTextContainer","Text","h3","renderLinkContents","baseToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Stack","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","arrayPush","keysFunc","symbolsFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","_typeof","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","method","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","next","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","skipTempReset","prev","charAt","slice","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","visible","ICONS","SunnyIcon","PartlyCloudyIcon","CloudyIcon","BrokenCloudsIcon","RainIcon","LightRainIcon","ThunderStormIcon","SnowIcon","FogIcon","Icon","localWeather","icon","description","mapWeather","round","main","temp","baseHasIn","hasPath","transform","noCustomizer","freeProcess","process","types","require","binding","defaultValue","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","arraySome","cacheHas","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","baseGetAllKeys","_RenderingPass3","TexturePass","depthTest","depthWrite","transparent","getAllKeys","objProps","objLength","skipCtor","objCtor","othCtor","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","_CopyShader","_ShaderPass","_TexturePass","_RenderPass","_MaskPass","_ClearMaskPass","_ClearPass","_EffectComposer","baseMatches","baseMatchesProperty","identity","_GLTFLoader","GLTFLoader","manager","DefaultLoadingManager","dracoLoader","GLTFRegistry","objects","removeAll","crossOrigin","load","url","onLoad","onProgress","onError","resourcePath","scope","LoaderUtils","extractUrlBase","itemStart","_onError","itemError","itemEnd","loader","FileLoader","setPath","setResponseType","parse","gltf","setCrossOrigin","setResourcePath","setDRACOLoader","content","extensions","decodeText","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","JSON","asset","version","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","indexOf","warn","parser","GLTFParser","scenes","cameras","animations","glTF","userData","addUnknownExtensionsToUserData","DDSLoader","ddsLoader","extension","lightDefs","lights","loadLight","lightIndex","lightNode","lightDef","Color","fromArray","range","DirectionalLight","position","PointLight","distance","SpotLight","spot","innerConeAngle","outerConeAngle","penumbra","decay","intensity","getMaterialType","MeshBasicMaterial","extendParams","materialParams","pending","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","all","BINARY_EXTENSION_CHUNK_TYPES","headerView","header","magic","getUint32","chunkView","chunkIndex","chunkLength","chunkType","contentArray","DRACOLoader","getDecoderModule","specularGlossinessParams","params","pbrSpecularGlossiness","ShaderLib","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","roughness","metalness","roughnessMap","metalnessMap","specular","setHex","glossiness","specularMap","glossinessMap","diffuseFactor","diffuseTexture","emissive","glossinessFactor","specularFactor","specularGlossinessTexture","specGlossMapDef","createMaterial","fog","isGLTFSpecularGlossinessMaterial","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalScale","displacementMap","displacementScale","displacementBias","alphaMap","envMap","envMapIntensity","refractionRatio","derivatives","cloneMaterial","il","refreshUniforms","geometry","group","uvScaleMap","diffuse","copy","multiplyScalar","isWebGLRenderTarget","matrixAutoUpdate","updateMatrix","uvTransform","matrix","flipEnvMap","isCubeTexture","reflectivity","maxMipLevel","properties","__maxMipLevel","USE_GLOSSINESSMAP","USE_ROUGHNESSMAP","GLTFCubicSplineInterpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","Interpolant","decodePrimitive","primitive","bufferViewIndex","bufferView","gltfAttributeMap","attributes","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","normalized","getDependency","decodeDracoFile","attribute","extendTexture","rotation","scale","repeat","texCoord","copySampleValue_","valueSize","beforeStart_","afterEnd_","interpolate_","i1","t0","t","t1","stride","stride2","stride3","td","p","pp","ppp","offset1","offset0","s2","s3","s0","s1","p0","m0","p1","m1","WEBGL_CONSTANTS","Matrix3","Matrix4","Vector2","Vector3","Vector4","Texture","5120","5121","5122","5123","5125","5126","WEBGL_FILTERS","9728","NearestFilter","9729","9984","NearestMipMapNearestFilter","9985","LinearMipMapNearestFilter","9986","NearestMipMapLinearFilter","9987","LinearMipMapLinearFilter","WEBGL_WRAPPINGS","33071","ClampToEdgeWrapping","33648","MirroredRepeatWrapping","10497","RepeatWrapping","WEBGL_TYPE_SIZES","BackSide","FrontSide","NeverDepth","LessDepth","EqualDepth","LessEqualDepth","GreaterEqualDepth","NotEqualDepth","AlwaysDepth","AddEquation","SubtractEquation","ReverseSubtractEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","POSITION","NORMAL","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","weights","INTERPOLATION","CUBICSPLINE","InterpolateSmooth","LINEAR","InterpolateLinear","STEP","InterpolateDiscrete","ALPHA_MODES","MIME_TYPE_FORMATS","RGBFormat","resolveURL","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","updateMorphTargets","mesh","meshDef","morphTargetInfluences","targetNames","morphTargetDictionary","isObjectEqual","isArrayEqual","getCachedGeometry","newPrimitive","cached","dracoExtA","dracoExtB","indices","promise","cloneBufferAttribute","isInterleavedBufferAttribute","count","itemSize","j","getX","getY","getZ","getW","BufferAttribute","primitiveCache","multiplePrimitivesCache","multiPassGeometryCache","textureLoader","TextureLoader","fileLoader","addPrimitiveAttributes","primitiveDef","assignAttributeAccessor","accessorIndex","accessor","addAttribute","gltfAttributeName","threeAttributeName","setIndex","targets","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","normal","morphPositions","morphNormals","positionAttribute","jl","setXYZ","normalAttribute","morphAttributes","addMorphTargets","markDefs","getMultiDependencies","dependencies","catch","nodeDefs","nodes","skinDefs","skins","meshDefs","meshes","meshReferences","meshUses","skinIndex","skinLength","joints","isBone","nodeIndex","nodeLength","nodeDef","skin","isSkinnedMesh","cacheKey","dependency","loadScene","loadNode","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadTexture","loadSkin","loadAnimation","loadCamera","getDependencies","defs","def","results","bufferIndex","bufferDef","uri","bufferViewDef","bufferViews","sparse","pendingBufferViews","bufferAttribute","elementBytes","BYTES_PER_ELEMENT","itemBytes","byteStride","ibCacheKey","ib","InterleavedBuffer","InterleavedBufferAttribute","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setArray","setX","setY","setZ","setW","textureIndex","URL","webkitURL","textureDef","textures","textureExtensions","sourceURI","images","isObjectURL","blob","Blob","mimeType","createObjectURL","Loader","Handlers","revokeObjectURL","flipY","sampler","samplers","wrapS","wrapT","mapName","mapDef","materialIndex","materialType","materialDef","materials","materialExtensions","sgExtension","kmuExtension","MeshStandardMaterial","metallicFactor","roughnessFactor","metallicRoughnessTexture","doubleSided","side","DoubleSide","alphaMode","alphaTest","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","encoding","sRGBEncoding","loadGeometries","primitives","originalPrimitives","isMultiPass","primitive0","targets0","mode","isMultiPassGeometry","createDracoPrimitive","geometryPromise","BufferGeometry","geometries","baseGeometry","getCachedMultiPassGeometry","pendingIndices","addGroup","BufferGeometryUtils","baseGeometries","getCachedCombinedGeometry","mergeBufferGeometries","originalMaterials","isMultiMaterial","groups","SkinnedMesh","normalizeSkinWeights","drawMode","TriangleStripDrawMode","TriangleFanDrawMode","LineSegments","Line","LineLoop","Points","useVertexColors","useFlatShading","useSkinning","useMorphTargets","useMorphNormals","isPoints","uuid","pointsMaterial","PointsMaterial","Material","isLine","lineMaterial","LineBasicMaterial","cachedMaterial","skinning","vertexColors","VertexColors","flatShading","morphTargets","uv2","uv","onBeforeRender","Group","cameraIndex","cameraDef","PerspectiveCamera","radToDeg","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","channel","node","input","output","inputAccessors","outputAccessors","tracks","inputAccessor","outputAccessor","TypedKeyframeTrack","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","targetName","interpolation","traverse","isMesh","track","AnimationUtils","arraySlice","createInterpolant","times","getValueSize","isInterpolantFactoryMethodGLTFCubicSpline","AnimationClip","Bone","instanceNum","o","light","Object3D","PropertyBinding","sanitizeNodeName","applyMatrix","quaternion","buildNodeHierachy","nodeId","parentObject","pendingJoints","jointNodes","isGroup","bones","boneInverses","jointNode","mat","Skeleton","matrixWorld","child","sceneIndex","sceneDef","nodeIds","baseIsEqualDeep","reIsUint","_defineProperties","animate","onWidowResize","disablePartyMode","onDeviceOrientation","xRotation","yRotation","prevMeshXRotation","prevMeshYRotation","partyCount","isUp","partyModeUp","lightPos","renderSize","clientWidth","clock","ambientLight","rockLight1","rockLight2","rockLight3","setCameraPos","antialias","alpha","composer","renderPass","addPass","glitchPass","appendChild","domElement","mouseListener","currCameraPos","breakPoint","parseFloat","enablePartyMode","prevProps","partyModeEnabled","removeChild","renderScene","offsetParent","deviceRotationX","deviceRotationY","onPartyModeEngaged","getDelta","goingUp","deviceRotationZ","beta","gamma","aspect","updateProjectionMatrix","zIndex","localOnly","arrayMap","symbolToString","containerRef","useRef","handleScroll","elementRect","current","elementTop","backgroundColor"],"mappings":"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","file":"d3c59bea11553debc35440d9fd431955e511116c-32b3addea879e579d7c3.js","sourcesContent":["var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNFNjI3ODYxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNFNjI3ODcxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGM0U2Mjc4NDFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGM0U2Mjc4NTFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ps6s10MAAATiSURBVHja7JpXaBVBFIZTLLFgiSYWVDBGSTQqohAL9oJRwWhsRBQLYgVRQQV98MXeH2woWFBRH2IvD1HEWGM3MYKKHUuCJbFEo+b6j5yV4/HG7N2dm+zl7oEPZufenZn9d8qZsxPq8XhCgtnCQoLcXAFcAVwBXAFcAVwBXAGC1ypoKqctGAq6gThQn/K/gkfgFjgFDoGPjlJAucI26AsueczbR7AG1LFZrzas3lgb7PNYt7cgxQkChFrYDMWCE6C5yM8Hx8Bl8BQUgigQD/qBRC9lLQULVEcMlCHQBLwQb/MNmAIql3JvS7DfS29YEihDIAJkicYfpuHgSznJIB/cJOGiA0WA1eLhd4JwixVHOmUSNDsHqPF+D4TT9TnQC/wMFj9gHnt4NbmN1fjwdUAyCZoAGlG7foBn4A5IB0dooi3zSbAq+MS6/gpN3S8G7ADfTC6dhWATaFjWc8Ag0ZAYm5WqYTeXHsiKqZcxTZcAZoZAR5a+S66tVasK9oLBsiOCDHCeyn9HQyOW3OtO7L/VwAbQBYwHRf4eAgeY+rtsqF0JpIu3+QOsB41NDJetoFjcf9DGSmR6CJxmFS6zUdk20fgHoJ2PZXQGz0U5K/0twHlW2XKLFQ0RjVYOVZTFshqBh6K8nroFiAdbwEsvzo+Vrv9EuM52Z/JY8iYNywZhOgSIoDFZXMIMnGGhkomijKGaZvAJotwUuwLUBddKWYLyLVRykd1/SeMart54Div7hB0BwuntcvsC1oGuoB6oRYT6UEGUKDNVsy8/g5X9lZw2SwIsFA29QpON3QYOZmX+BDU1C9BYtLurFUcoEsxnrsFt8ss/a/C0W7D0Az/48s9BLoim6920RymkfcRVcBhc/58jNEu8pVYa39ByVna6n7a0N0y4z5dBd2/3q7D4AKbHUXJ3dVllli720462wMR/VDjuLFgnd8Dqog27Pq6hQTXAZDAMdGD5Dfy4rS+ivYTq8m9ALYpF9qf2GDYTxIAU8N0YAnzN72ezO44BH0rohgU+riBmSQTVS/hNxSlng/eiLRv5KsBtkI0t7mYTYzHGUz6hr6bgvmjLQGMOeMG6SILFLriEuj03FTofDVqDpsTLcop8PQa9QR7LW/n70yBUSGOqXLegbk8xjPJAb6cEPQVjRS9IUpmjReYwHwvNFOM83qEPb7jPfCe5zditPWWZasJI8GF/zm2Sgx/eYAVrb04YLSGz2NhQS8gFkApCSxlbSSz9CmwPgEj4Df6ZzzgfkAbWirV8DzlFi8E4Cl23FoW1Z+mTFMp2uuWydEXuFc2h4ORslhdPGKbEyGLXUSz9MEC+hURy7zRMRGbnUMT2WQk3V/rPh5WKASJAS5Z+4u2IjPoC0wwMp2Fwn3ZxigjxX+5DxAWIAMksfcXujLqIzajvQBWHrwADxKo10u4hqTSWrk1DyKlWE6xn16/BQR2qnmGKfgd9HPjma4h2/vFZdBTeBhSxglV6OqjgkIdPoo8w3E4aO1MrZ4S82VSwUeSpyXM/yBZrb1mcfYymSTmZjvBxU0f2ehjhOV0ChJA3ucrhhy/VWcVRPDaps7FrKZia48AHVxPeFAr//RWY1dkDuKjKmRoBOoMm5XH4jZy5TIoKp1Gk+B/zhwABZe5pcVcAVwBXAFcAVwBXAFcAV4BgtV8CDADB4qa1f9qN1wAAAABJRU5ErkJggg==\"","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * @author felixturner / http://airtight.cc/\n *\n * RGB Shift Shader\n * Shifts red and blue channels from center in opposite directions\n * Ported from http://kriss.cx/tom/2009/05/rgb-shift/\n * by Tom Butterworth / http://kriss.cx/tom/\n *\n * amount: shift distance (1 is width of input)\n * angle: shift angle in radians\n */\n\nconst DigitalGlitch = {\n uniforms: {\n tDiffuse: { value: null }, //diffuse texture\n tDisp: { value: null }, //displacement texture for digital glitch squares\n byp: { value: 0 }, //apply the glitch ?\n amount: { value: 0.08 },\n angle: { value: 0.02 },\n seed: { value: 0.02 },\n seed_x: { value: 0.02 }, //-1,1\n seed_y: { value: 0.02 }, //-1,1\n distortion_x: { value: 0.5 },\n distortion_y: { value: 0.6 },\n col_s: { value: 0.05 },\n show_noise: { value: 1.0 },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n 'void main() {',\n 'vUv = uv;',\n 'gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform int byp;', //should we apply the glitch ?\n\n 'uniform sampler2D tDiffuse;',\n 'uniform sampler2D tDisp;',\n\n 'uniform float amount;',\n 'uniform float angle;',\n 'uniform float seed;',\n 'uniform float seed_x;',\n 'uniform float seed_y;',\n 'uniform float distortion_x;',\n 'uniform float distortion_y;',\n 'uniform float col_s;',\n 'uniform float show_noise;',\n\n 'varying vec2 vUv;',\n\n 'float rand(vec2 co){',\n 'return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);',\n '}',\n\n 'void main() {',\n 'if(byp<1) {',\n 'vec2 p = vUv;',\n 'float xs = floor(gl_FragCoord.x / 0.5);',\n 'float ys = floor(gl_FragCoord.y / 0.5);',\n //based on staffantans glitch shader for unity https://github.com/staffantan/unityglitch\n 'vec4 normal = texture2D (tDisp, p*seed*seed);',\n 'if(p.ydistortion_x-col_s*seed) {',\n 'if(seed_x>0.){',\n 'p.y = 1. - (p.y + distortion_y);',\n '}',\n 'else {',\n 'p.y = distortion_y;',\n '}',\n '}',\n 'if(p.xdistortion_y-col_s*seed) {',\n 'if(seed_y>0.){',\n 'p.x=distortion_x;',\n '}',\n 'else {',\n 'p.x = 1. - (p.x + distortion_x);',\n '}',\n '}',\n 'p.x+=normal.x*seed_x*(seed/5.);',\n 'p.y+=normal.y*seed_y*(seed/5.);',\n //base from RGB shift shader\n 'vec2 offset = amount * vec2( cos(angle), sin(angle));',\n 'vec4 cr = texture2D(tDiffuse, p + offset);',\n 'vec4 cga = texture2D(tDiffuse, p);',\n 'vec4 cb = texture2D(tDiffuse, p - offset);',\n 'gl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);',\n //add noise\n 'if(show_noise>0.) {',\n 'vec4 snow = 200.*amount*vec4(rand(vec2(xs * seed,ys * seed*50.))*0.2);',\n 'gl_FragColor = gl_FragColor+ snow;',\n '}',\n '}',\n 'else {',\n 'gl_FragColor=texture2D (tDiffuse, vUv);',\n '}',\n '}',\n ].join('\\n'),\n}\n\nexport default DigitalGlitch\n","/* global Float32Array:false */\nimport * as THREE from 'three'\nimport DigitalGlitch from './GlitchShader'\nimport { Pass } from '@johh/three-effectcomposer'\n\nconst GlitchPass = function(config) {\n Pass.call(this)\n\n if (DigitalGlitch === undefined) {\n console.error('THREE.GlitchPass relies on THREE.DigitalGlitch')\n }\n\n var shader = DigitalGlitch\n this.uniforms = THREE.UniformsUtils.clone(shader.uniforms)\n this.uniforms['tDisp'].value = this.generateHeightmap(\n config.dt_size != undefined ? config.dt_size : 64\n )\n this.frequencyDivider =\n config.frequencyDivider != undefined ? config.frequencyDivider : 5\n this.minXDistortion =\n config.minXDistortion != undefined ? config.minXDistortion : 0\n this.maxXDistortion =\n config.maxXDistortion != undefined ? config.maxXDistortion : 1\n this.minYDistortion =\n config.minYDistortion != undefined ? config.minYDistortion : 0\n this.maxYDistortion =\n config.maxYDistortion != undefined ? config.maxYDistortion : 1\n this.glitchAmountDivider =\n config.glitchAmountDivider != undefined ? config.glitchAmountDivider : 90\n this.minAngle = config.minAngle != undefined ? config.minAngle : -Math.PI\n this.maxAngle = config.maxAngle != undefined ? config.maxAngle : Math.PI\n this.showNoise = config.showNoise != undefined ? config.showNoise : 1\n this.applyGlitch = config.applyGlitch != undefined ? config.applyGlitch : true\n\n this.material = new THREE.ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n\n this.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1)\n this.scene = new THREE.Scene()\n\n this.quad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2), null)\n this.scene.add(this.quad)\n\n this.goWild = false\n this.curF = 0\n this.generateTrigger()\n}\n\nGlitchPass.prototype = Object.assign(Object.create(Pass.prototype), {\n constructor: GlitchPass,\n\n initUniformValues: function() {\n this.uniforms['amount'].value = Math.random() / this.glitchAmountDivider\n this.uniforms['show_noise'].value = this.showNoise\n\n this.uniforms['angle'].value = THREE.Math.randFloat(\n this.minAngle,\n this.maxAngle\n )\n this.uniforms['distortion_x'].value = THREE.Math.randFloat(\n this.minXDistortion,\n this.maxXDistortion\n )\n this.uniforms['distortion_y'].value = THREE.Math.randFloat(\n this.minYDistortion,\n this.maxYDistortion\n )\n },\n\n updateHeightmap: function(dt_size) {\n this.uniforms['tDisp'].value = this.generateHeightmap(dt_size)\n },\n\n render: function(renderer, writeBuffer, readBuffer) {\n this.uniforms['tDiffuse'].value = readBuffer.texture\n this.uniforms['seed'].value = Math.random() //default seeding\n this.uniforms['byp'].value = 0\n this.uniforms['seed_x'].value = THREE.Math.randFloat(-0.3, 0.3)\n this.uniforms['seed_y'].value = THREE.Math.randFloat(-0.3, 0.3)\n\n if (this.applyGlitch == false) {\n this.uniforms['byp'].value = 1\n }\n if (this.curF % this.randX == 0 || this.goWild == true) {\n this.curF = 0\n this.initUniformValues()\n this.generateTrigger()\n } else if (this.curF % this.randX < this.randX / this.frequencyDivider) {\n this.initUniformValues()\n } else if (this.goWild == false) {\n this.uniforms['byp'].value = 1\n }\n this.curF++\n this.quad.material = this.material\n if (this.renderToScreen) {\n renderer.render(this.scene, this.camera)\n } else {\n renderer.render(this.scene, this.camera, writeBuffer, this.clear)\n }\n },\n\n generateTrigger: function() {\n this.randX = THREE.Math.randInt(120, 240)\n },\n\n generateHeightmap: function(dt_size) {\n var data_arr = new Float32Array(dt_size * dt_size * 3)\n var length = dt_size * dt_size\n\n for (var i = 0; i < length; i++) {\n var val = THREE.Math.randFloat(0, 1)\n data_arr[i * 3 + 0] = val\n data_arr[i * 3 + 1] = val\n data_arr[i * 3 + 2] = val\n }\n\n var texture = new THREE.DataTexture(\n data_arr,\n dt_size,\n dt_size,\n THREE.RGBFormat,\n THREE.FloatType\n )\n texture.needsUpdate = true\n return texture\n },\n})\n\nexport default GlitchPass\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _Pass2 = require('./Pass');\n\nvar _Pass3 = _interopRequireDefault(_Pass2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar ClearPass = function (_Pass) {\n _inherits(ClearPass, _Pass);\n\n function ClearPass(clearColor, clearAlpha) {\n _classCallCheck(this, ClearPass);\n\n var _this = _possibleConstructorReturn(this, (ClearPass.__proto__ || Object.getPrototypeOf(ClearPass)).call(this));\n\n _this.needsSwap = false;\n _this.clearColor = clearColor !== undefined ? clearColor : 0x000000;\n _this.clearAlpha = clearAlpha !== undefined ? clearAlpha : 0;\n return _this;\n }\n\n _createClass(ClearPass, [{\n key: 'render',\n value: function render(renderer, writeBuffer, readBuffer) {\n var oldClearColor = void 0;\n var oldClearAlpha = void 0;\n\n if (this.clearColor) {\n oldClearColor = renderer.getClearColor().getHex();\n oldClearAlpha = renderer.getClearAlpha();\n renderer.setClearColor(this.clearColor, this.clearAlpha);\n }\n\n renderer.setRenderTarget(this.renderToScreen ? null : readBuffer);\n renderer.clear();\n\n if (this.clearColor) {\n renderer.setClearColor(oldClearColor, oldClearAlpha);\n }\n }\n }]);\n\n return ClearPass;\n}(_Pass3.default);\n\nexports.default = ClearPass;","import PropTypes from 'prop-types'\nimport React, { Component } from 'react'\nimport { Link } from 'gatsby'\nimport styled from 'styled-components'\nimport { gutter, screenSizes } from '../theme'\nimport Logo from '../static/images/logo.svg'\nimport SectionIndicator from './SectionIndicator'\n\nconst HeaderContainer = styled.div`\n position: absolute;\n width: 100%;\n display: grid;\n z-index: 30;\n grid-column-gap: 15px;\n grid-template-columns: 80px 1fr 24px;\n padding: 40px ${gutter.mobile}px;\n\n img {\n margin-bottom: 0;\n }\n\n .menu-icon {\n display: flex;\n align-items: center;\n }\n\n @media (min-width: ${screenSizes.tablet}px) {\n padding: 40px ${gutter.tablet}px;\n grid-column-gap: 30px;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n padding: 40px ${gutter.desktop}px;\n grid-template-columns: 80px 1fr 24px;\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n padding: 40px ${gutter.desktopLarge}px;\n }\n`\n\nconst Title = styled(SectionIndicator)`\n display: block;\n color: white;\n margin-bottom: 0;\n text-align: right;\n margin-top: 25px;\n padding-right: 30px;\n\n @media (min-width: ${screenSizes.tablet}px) {\n padding-right: 30px;\n }\n @media (max-width: ${screenSizes.desktop}px) and (orientation: portrait) {\n /* display: none; */\n }\n`\n\nconst TitleContainer = styled.div`\n max-width: 600px;\n margin-left: auto;\n\n @media (min-width: ${screenSizes.desktopExtraLarge}px) {\n max-width: none;\n }\n`\n\nclass Header extends Component {\n static propTypes = {\n title: PropTypes.string,\n toggleMenu: PropTypes.func,\n }\n\n render() {\n const { title, titleLink } = this.props\n\n return (\n <>\n \n \n \"Teamgeek\"\n \n \n {title && titleLink ? (\n \n {title}\n \n ) : title ? (\n {title}\n ) : null}\n \n \n \n )\n }\n}\n\nHeader.propTypes = {\n title: PropTypes.string,\n titleLink: PropTypes.string,\n}\n\nHeader.defaultProps = {\n title: ``,\n}\n\nexport default Header\n","import React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\n\nconst Container = styled.span`\n font-size: 15px;\n width: 65px;\n span {\n display: inline-flex;\n }\n`\n\nconst Time = () => {\n const [time, setTime] = useState('')\n\n useEffect(() => {\n let interval\n\n const checkTime = i => {\n return i < 10 ? '0' + i : i\n }\n\n const calculateTime = () => {\n const today = new Date()\n // console.log(today.getTimezoneOffset()) // use this to calculate CT specific time\n const h = checkTime(today.getHours())\n const m = checkTime(today.getMinutes())\n const s = checkTime(today.getSeconds())\n\n setTime(`${h}:${m}:${s}`)\n }\n\n interval = window.setInterval(() => {\n calculateTime()\n }, 500)\n\n return () => {\n window.clearInterval(interval)\n }\n }, [])\n\n return (\n \n {time}\n \n )\n}\n\nexport default Time\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { gutter, screenSizes, colors } from '../theme'\n\nimport Time from './Time'\nimport ThreeModelView from './ThreeModelView'\nimport BigLinkBase from './BigLink'\nimport WeatherWidget from './WeatherWidget'\n\nconst Bar = styled.div`\n background-color: #1d1d1d;\n position: absolute;\n height: 3px;\n width: 100%;\n max-width: 24px;\n right: 5px;\n transition: all ease-in-out 300ms;\n transform-origin: 50%;\n\n &:first-child {\n top: 10px;\n }\n\n &:last-child {\n top: 17px;\n width: 14px;\n }\n`\n\nconst MenuIcon = styled.div`\n position: fixed;\n z-index: 40;\n width: 34px;\n left: calc(${gutter.mobile}px + 100px);\n height: 30px;\n transform: translate(0, -50%);\n top: 55px;\n /* mix-blend-mode: difference; */\n /* left: calc(${gutter.mobile}px); */\n margin-left: -0.4vw;\n\n @media (min-width: ${screenSizes.tablet}px) {\n left: calc(${gutter.tablet}px + 100px);\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n left: calc(${gutter.desktop}px + 200px);\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n left: calc(${gutter.desktopLarge}px + 200px);\n }\n ${props =>\n props &&\n props.active &&\n `\n ${Bar} {\n top: 12px;\n width: 100%;\n\n &:first-child {\n transform: rotate(-45deg);\n }\n\n &:last-child {\n transform: rotate(45deg);\n }\n }\n `}\n\n &:hover {\n ${Bar} {\n width: 100%;\n }\n }\n`\n\nconst TimeContainer = styled.div`\n position: fixed;\n top: 40px;\n right: ${gutter.mobile}px;\n font-size: 13px;\n\n @media (min-width: ${screenSizes.tablet}px) {\n right: calc(${gutter.tablet}px);\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n right: calc(${gutter.desktop}px);\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n right: calc(${gutter.desktopLarge}px);\n }\n`\n\nconst MenuContainer = styled.div`\n display: flex;\n z-index: 29;\n flex-direction: column;\n padding: 60px calc(${gutter.mobile}px);\n padding-top: 190px;\n justify-content: center;\n position: fixed;\n opacity: 0;\n transition: opacity ease 1000ms;\n min-height: 100vh;\n width: 100vw;\n pointer-events: none;\n\n @media (min-width: ${screenSizes.tablet}px) {\n padding: 60px calc(${gutter.tablet}px);\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n padding: 60px calc(${gutter.desktop}px + 200px);\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n padding: 60px calc(${gutter.desktopLarge}px + 200px);\n }\n\n ${props =>\n props.active &&\n css`\n pointer-events: all;\n opacity: 1;\n background-color: ${colors.primary};\n `}\n`\n\nconst ThreeModelContainer = styled.div`\n position: absolute;\n top: 50%;\n right: 0;\n transform: translate(0, -50%);\n max-width: 2048px;\n max-height: 1080px;\n z-index: -1;\n width: 100%;\n height: 100%;\n`\n\nconst SocialContainer = styled.div`\n display: flex;\n flex-direction: column;\n color: white;\n a {\n margin-right: 60px;\n text-transform: uppercase;\n }\n margin-top: 30px;\n\n @media (min-width: ${screenSizes.tablet}px) {\n flex-direction: row;\n }\n`\n\nconst BigLink = styled(BigLinkBase)`\n margin-top: -6px;\n\n h3 {\n font-size: 20pt;\n margin-top: 20px;\n }\n\n @media (min-width: ${screenSizes.tablet}px) {\n h3 {\n font-size: 70pt;\n margin-top: 20px;\n }\n }\n @media (min-width: ${screenSizes.desktopLarge}px) {\n h3 {\n font-size: 10vh;\n margin-top: 20px;\n }\n }\n`\n\nexport default class Menu extends React.PureComponent {\n static propTypes = {\n active: PropTypes.bool,\n toggleMenu: PropTypes.func,\n navigateTo: PropTypes.func,\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n weather: {},\n }\n\n this.timeout = null\n this.handleLinkClick = this.handleLinkClick.bind(this)\n }\n\n async componentDidMount() {\n this.model.stop()\n const weather = await fetch('/weather.json').then(result => result.json())\n this.setState({ weather: weather.list })\n }\n\n componentDidUpdate() {\n if (this.props.toggleMenu) {\n this.model.start()\n } else {\n this.model.stop()\n }\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.timeout)\n }\n\n handleLinkClick() {\n window.clearTimeout(this.timeout)\n this.timeout = window.setTimeout(() => {\n this.props.toggleMenu()\n }, 500)\n }\n\n render() {\n const { active, toggleMenu } = this.props\n return (\n <>\n \n \n \n \n\n \n \n Work\n \n \n About\n \n \n Contact\n \n\n \n \n Instagram\n \n \n Github\n \n \n\n \n (this.model = model)}\n src=\"/models/bolt.glb\"\n rotationSpeed={{ x: 0.6, y: 0.5 }}\n meshIndex={0}\n cameraPos={{\n x: 0,\n y: 0,\n z: 18,\n }}\n cameraPosResponsive={{\n [screenSizes.desktop]: {\n x: 2,\n y: 0,\n z: 15,\n },\n }}\n rotationOffset={{\n x: 0.1,\n y: -0.4,\n }}\n />\n \n \n\n \n CPT \n {' '}\n / \n \n \n )\n }\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { screenSizes, gutter } from '../theme'\nimport BigLink from '../components/BigLink'\nimport WorkWithUsGif from '../static/images/gifs/work_with_us.gif'\n\nconst FooterContainer = styled.footer`\n padding: 50px ${gutter.mobile}px 30px;\n margin-top: 200px;\n\n @media (min-width: ${screenSizes.tablet}px) {\n padding: 0px ${gutter.tablet}px 30px;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n padding: 0px ${gutter.desktop}px 30px;\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n padding: 0px ${gutter.desktopLarge}px 30px;\n }\n`\n\nconst Footer = () => (\n <>\n \n \n Work with us\n \n \n \n)\n\nexport default Footer\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { TweenLite } from 'gsap'\nimport { screenSizes, gutter, glitchTransitionDuration } from '../theme'\n\nconst SmoothScrollContainer = styled.div``\n\nconst ProgressContainer = styled.div`\n position: fixed;\n display: flex;\n justify-content: center;\n overflow: hidden;\n top: 30px;\n left: 0;\n max-height: 80%;\n opacity: 0;\n height: 300px;\n z-index: 2;\n width: 20px;\n\n @media (min-width: ${screenSizes.tablet}px) {\n width: ${gutter.tablet}px;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n width: ${gutter.desktop}px;\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n width: ${gutter.desktopLarge}px;\n }\n`\n\nconst ProgressBar = styled.div`\n background-color: rgba(255, 255, 255, 0.3);\n width: 1px;\n height: 100%;\n`\n\nconst ProgressBarFill = styled.div`\n background-color: white;\n width: 1px;\n height: 100%;\n`\n\nexport default class SmoothScroll extends React.PureComponent {\n static propTypes = {\n active: PropTypes.bool,\n children: PropTypes.any,\n }\n\n static defaultProps = {\n active: true,\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n active: props.active,\n }\n\n /* smooth scroll variables and functions */\n this.timeout = false\n this.disableSmoothScroll = false\n this.requestId = null\n this.scroller = null\n this.container = null\n this.updateScroller = this.updateScroller.bind(this)\n this.onScroll = this.onScroll.bind(this)\n this.onWheel = this.onWheel.bind(this)\n this.onResize = this.onResize.bind(this)\n\n /* progress variables and functions */\n this.progressOffsetY = null\n this.progressHeight = null\n this.initProgress = this.initProgress.bind(this)\n this.updateProgress = this.updateProgress.bind(this)\n this.initGlobalVariables = this.initGlobalVariables.bind(this)\n }\n\n componentDidMount() {\n this.timeout = window.setTimeout(() => {\n /* disable smooth scroll on tablet and mobile devices */\n this.width = window.innerWidth\n this.disableSmoothScroll = this.width < screenSizes.desktop\n\n this.initGlobalVariables()\n\n if (this.progressContainerEl !== null) {\n this.initProgress()\n }\n\n this.scroller = {\n target: this.container,\n ease: 0.05,\n y: window.pageYOffset,\n targetY: window.pageYOffset,\n scrollRequest: 0,\n }\n window.addEventListener('scroll', this.onScroll)\n\n if (this.state.active) {\n this.updateScroller()\n window.addEventListener('resize', this.onResize)\n if (!this.disableSmoothScroll) {\n window.addEventListener('wheel', this.onWheel)\n }\n }\n }, glitchTransitionDuration)\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.timeout)\n window.removeEventListener('resize', this.onResize)\n window.removeEventListener('scroll', this.onScroll)\n if (!this.disableSmoothScroll) {\n window.removeEventListener('wheel', this.onWheel)\n }\n if (this.requestId) {\n window.cancelAnimationFrame(this.requestId)\n }\n }\n\n initProgress() {\n this.progressContainerTween = {\n target: this.progressContainer,\n opacity: 0,\n }\n\n this.progressBarTween = {\n target: this.progressBar,\n y: -100,\n ease: 0.1,\n }\n\n TweenLite.set(this.progressBarTween.target, {\n y: `${this.progressBarTween.y}%`,\n })\n }\n\n updateProgress() {\n if (this.scroller.y > this.progressOffsetY) {\n this.progressContainerTween.opacity = 1\n\n TweenLite.to(this.progressContainerTween.target, 0.5, {\n opacity: 1,\n })\n\n this.progressBarTween.y =\n -100 +\n ((this.scroller.y - this.progressOffsetY) /\n (this.progressHeight - this.progressOffsetY)) *\n 100\n\n if (this.progressBarTween.y < 0) {\n TweenLite.set(this.progressBarTween.target, {\n y: `${this.progressBarTween.y}%`,\n ease: this.progressBarTween.ease,\n })\n } else {\n TweenLite.set(this.progressBarTween.target, {\n y: `0%`,\n ease: this.progressBarTween.ease,\n })\n }\n } else {\n TweenLite.to(this.progressContainerTween.target, 0.5, {\n opacity: 0,\n })\n }\n }\n\n initGlobalVariables() {\n const height = this.container.clientHeight\n const windowHeight = window.innerHeight\n this.progressContainerEl = document.getElementById('progress-container')\n this.scrollHeight = height - windowHeight\n\n if (this.progressContainerEl !== null) {\n const dimensions = this.progressContainerEl.getBoundingClientRect()\n this.progressOffsetY = window.pageYOffset + dimensions.y\n this.progressHeight = dimensions.height\n this.windowHeight = window.innerHeight\n }\n }\n\n onScroll() {\n this.scroller.y = window.pageYOffset\n\n if (this.progressContainerEl !== null) {\n this.updateProgress()\n }\n }\n\n onWheel(e) {\n e.preventDefault()\n if (this.scroller.scrollRequest == 0) {\n this.scroller.targetY = window.pageYOffset\n this.scroller.y = window.pageYOffset\n }\n\n this.scroller.targetY += e.deltaY\n this.scroller.targetY = Math.max(\n Math.min(this.scroller.targetY, this.scrollHeight),\n 0\n )\n this.scroller.scrollRequest++\n if (!this.requestId) {\n this.requestId = window.requestAnimationFrame(this.updateScroller)\n }\n }\n\n onResize() {\n this.initGlobalVariables()\n }\n\n updateScroller() {\n this.scroller.y +=\n (this.scroller.targetY - this.scroller.y) * this.scroller.ease\n\n if (\n Math.abs(this.scroller.targetY - this.scroller.y) < 1 ||\n this.scroller.y > this.scrollHeight - 0.05\n ) {\n this.scroller.y = this.scroller.targetY\n this.scroller.scrollRequest = 0\n }\n\n window.scrollTo({\n top: this.scroller.y,\n })\n\n this.requestId =\n this.scroller.scrollRequest > 0\n ? window.requestAnimationFrame(this.updateScroller)\n : null\n }\n\n render() {\n return (\n <>\n (this.container = ref)}\n active={this.state.active}\n >\n {this.props.children}\n \n (this.progressContainer = ref)}>\n \n (this.progressBar = ref)} />\n \n \n \n )\n }\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { TweenLite } from 'gsap'\nimport { colors } from '../theme'\n\nimport DragIcon from '../static/images/drag_1.svg'\nimport DragIcon2 from '../static/images/drag_1.svg'\nimport DragIcon3 from '../static/images/drag_1.svg'\n\nconst CursorContainer = styled.div`\n position: fixed;\n display: block;\n z-index: 100;\n border-radius: 50%;\n width: 15px;\n height: 15px;\n mix-blend-mode: difference;\n pointer-events: none;\n transform: translate(-50%, -50%);\n transition: width ease 500ms, height ease 500ms, border ease 500ms,\n background-color ease 250ms;\n overflow: hidden;\n top: -100px;\n left: -100px;\n background-color: ${colors.primary};\n\n &.show-swiper-icon {\n background-color: transparent;\n width: 70px !important;\n height: 70px !important;\n border: 1px transparent solid;\n\n .drag-icon-1 {\n opacity: 1;\n }\n\n &.show-swiper-clicked-icon {\n .drag-icon-1 {\n opacity: 0;\n }\n\n .drag-icon-2 {\n opacity: 1;\n }\n }\n\n &.show-swiper-clicked-icon-2 {\n .drag-icon-1 {\n opacity: 0;\n }\n\n .drag-icon-3 {\n opacity: 1;\n }\n }\n }\n`\n\nconst DragIconImg = styled.img`\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n width: 100%;\n height: 100%;\n transition: opacity ease 250ms;\n`\n\nclass Cursor extends React.PureComponent {\n constructor(props) {\n super(props)\n\n this.timeout = null\n this.onMouseMove = this.onMouseMove.bind(this)\n this.moveCursor = this.moveCursor.bind(this)\n this.onWorkSwiperMouseDown = this.onWorkSwiperMouseDown.bind(this)\n this.onWorkSwiperMouseUp = this.onWorkSwiperMouseUp.bind(this)\n this.onSwiperMouseDown = this.onSwiperMouseDown.bind(this)\n this.onSwiperMouseUp = this.onSwiperMouseUp.bind(this)\n this.onSwiperEnter = this.onSwiperEnter.bind(this)\n this.onSwiperLeave = this.onSwiperLeave.bind(this)\n this.onLinkIconEnter = this.onLinkIconEnter.bind(this)\n this.onLinkIconLeave = this.onLinkIconLeave.bind(this)\n this.onLinkEnter = this.onLinkEnter.bind(this)\n this.onLinkLeave = this.onLinkLeave.bind(this)\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.timeout)\n window.removeEventListener('mousemove', this.onMouseMove)\n window.cancelAnimationFrame(this.frameId)\n\n const swiperContainers = document.querySelectorAll(\n '.swiper-container:not(.swiper-container-work)'\n )\n Array.from(swiperContainers).forEach(el => {\n el.removeEventListener('mousedown', this.onSwiperMouseDown)\n el.removeEventListener('mouseup', this.onSwiperMouseUp)\n el.removeEventListener('mouseenter', this.onSwiperEnter)\n el.removeEventListener('mouseleave', this.onSwiperLeave)\n })\n\n const swiperContainerWork = document.getElementsByClassName(\n 'swiper-container-work'\n )\n Array.from(swiperContainerWork).forEach(el => {\n el.removeEventListener('mousedown', this.onWorkSwiperMouseDown)\n el.removeEventListener('mouseup', this.onWorkSwiperMouseUp)\n el.removeEventListener('mouseenter', this.onSwiperEnter)\n el.removeEventListener('mouseleave', this.onSwiperLeave)\n })\n\n Array.from(document.getElementsByClassName('menu-icon')).forEach(el => {\n el.removeEventListener('mouseenter', this.onLinkIconEnter)\n el.removeEventListener('mouseleave', this.onLinkIconLeave)\n })\n\n Array.from(\n document.querySelectorAll('a:not(.menu-icon), .swiper-pagination-bullet')\n ).forEach(el => {\n el.removeEventListener('mouseenter', this.onLinkEnter)\n el.removeEventListener('mouseleave', this.onLinkLeave)\n })\n }\n\n componentDidMount() {\n this.setState({\n isSafari: /^((?!chrome|android).)*safari/i.test(navigator.userAgent),\n })\n window.addEventListener('mousemove', this.onMouseMove)\n\n const swiperContainers = document.querySelectorAll(\n '.swiper-container:not(.swiper-container-work):not(.swiper-container-text)'\n )\n\n Array.from(swiperContainers).forEach(el => {\n el.addEventListener('mousedown', this.onSwiperMouseDown)\n el.addEventListener('mouseup', this.onSwiperMouseUp)\n el.addEventListener('mouseenter', this.onSwiperEnter)\n el.addEventListener('mouseleave', this.onSwiperLeave)\n })\n\n const swiperContainerWork = document.getElementsByClassName(\n 'swiper-container-work'\n )\n Array.from(swiperContainerWork).forEach(el => {\n el.addEventListener('mousedown', this.onWorkSwiperMouseDown)\n el.addEventListener('mouseup', this.onWorkSwiperMouseUp)\n el.addEventListener('mouseenter', this.onSwiperEnter)\n el.addEventListener('mouseleave', this.onSwiperLeave)\n })\n\n Array.from(document.getElementsByClassName('menu-icon')).forEach(el => {\n el.addEventListener('mouseenter', this.onLinkIconEnter)\n el.addEventListener('mouseleave', this.onLinkIconLeave)\n })\n\n this.timeout = window.setTimeout(() => {\n Array.from(\n document.querySelectorAll(\n 'a:not(.menu-icon), .swiper-pagination-bullet'\n )\n ).forEach(el => {\n el.addEventListener('mouseenter', this.onLinkEnter)\n el.addEventListener('mouseleave', this.onLinkLeave)\n })\n })\n }\n\n onMouseMove(e) {\n this.clientX = e.clientX\n this.clientY = e.clientY\n window.requestAnimationFrame(this.moveCursor)\n }\n\n moveCursor() {\n TweenLite.set(this.cursor, {\n left: this.clientX,\n top: this.clientY,\n })\n }\n\n onWorkSwiperMouseDown() {\n this.cursor.classList.add('show-swiper-clicked-icon-2')\n }\n\n onWorkSwiperMouseUp() {\n this.cursor.classList.remove('show-swiper-clicked-icon-2')\n }\n\n onSwiperMouseDown() {\n this.cursor.classList.add('show-swiper-clicked-icon')\n }\n\n onSwiperMouseUp() {\n this.cursor.classList.remove('show-swiper-clicked-icon')\n this.cursor.classList.remove('show-swiper-clicked-icon-2')\n }\n\n onSwiperEnter() {\n this.cursor.classList.add('show-swiper-icon')\n }\n\n onSwiperLeave() {\n this.cursor.classList.remove('show-swiper-icon')\n }\n\n onLinkIconEnter(e) {\n const linkDimensions = e.target.getBoundingClientRect()\n const size = Math.max(linkDimensions.width, linkDimensions.height) + 20\n TweenLite.to(this.cursor, 0.25, {\n left: linkDimensions.x + linkDimensions.width / 2,\n top: linkDimensions.y + linkDimensions.height / 2,\n width: size,\n height: size,\n })\n window.removeEventListener('mousemove', this.onMouseMove)\n }\n\n onLinkIconLeave() {\n TweenLite.to(this.cursor, 0.25, {\n left: this.clientX,\n top: this.clientY,\n width: 15,\n height: 15,\n })\n window.addEventListener('mousemove', this.onMouseMove)\n }\n\n onLinkEnter() {\n TweenLite.to(this.cursor, 0.25, {\n width: 30,\n height: 30,\n })\n }\n\n onLinkLeave() {\n TweenLite.to(this.cursor, 0.25, {\n left: this.clientX,\n top: this.clientY,\n width: 15,\n height: 15,\n })\n }\n\n render() {\n return (\n (this.cursor = cursor)} id=\"cursor\">\n \n \n \n \n )\n }\n}\n\nexport default Cursor\n","import React, { PureComponent } from 'react'\nimport PropTypes from 'prop-types'\nimport { StaticQuery, graphql, navigate } from 'gatsby'\nimport styled from 'styled-components'\n\nimport { glitchTransitionDuration } from '../theme'\nimport Header from './Header'\nimport Menu from './Menu'\nimport Footer from './Footer'\nimport SmoothScroll from './SmoothScroll'\nimport Cursor from './CustomCursor'\nimport Section from './Section'\n\nconst ANIMATE_OUT_TIMING = 0\nconst ANIMATE_IN_TIMING = glitchTransitionDuration\n\nconst Container = styled.div`\n overflow: hidden;\n`\n\nconst Body = styled.div`\n transition: opacity ease 300ms;\n\n ${props =>\n props.blur &&\n `\n opacity: 0;\n @supports (-moz-appearance:none) {\n & { filter: none; }\n }\n `}\n`\n\nclass Layout extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n menuActive: false,\n isSafari: false,\n showCursor: false,\n }\n\n this.frameId = null\n this.toggleMenu = this.toggleMenu.bind(this)\n this.navigateTo = this.navigateTo.bind(this)\n this.onImageLoaded = this.onImageLoaded.bind(this)\n this.renderContent = this.renderContent.bind(this)\n }\n\n async componentDidMount() {\n if (window.innerWidth > 768) {\n this.setState({\n showCursor: true,\n })\n }\n await new Promise(resolve => window.setTimeout(resolve, 500))\n // eslint-disable-next-line no-console\n console.log(\n `%c\n\n-------------------------------------------------------------------------------------------\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⣀⢄⠔⠀⢀⡤⣕⣪⣴⠟⠋⠡⢁⣢⡤⣀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⡡⡮⠋⣁⠔⣢⡾⠟⢛⣩⡤⣔⡶⣛⣝⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠉⠉⠉⠋⠉⠉⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⢀⣤⠊⣱⣾⡿⢃⣼⣟⡭⢞⣡⣾⣿⣻⣿⣿⣿⣿⣿⣿⡿⠿⠛⠛⠛⠋⡛⣿⣿⣿⣿⣤⡀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⢠⠞⢡⣾⣿⢋⣴⣿⠟⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣓⢐⢢⢄⡀⠀⠀⠀⠈⠻⣿⣿⣿⣿⡀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣠⠋⣰⣿⣟⣵⡞⢋⣴⣾⣿⣿⡿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠷⠖⠀⠀⠀⠀⠻⣿⣿⣿⣿⡄⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠐⠅⣴⣿⠿⠡⢂⣾⣿⠿⣻⣿⢫⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣟⡥⠃⠀⠀⠀⠀⠀⠙⣿⣿⣿⡇⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⢠⢠⣿⠃⠂⣰⣿⡿⢋⣾⣿⢱⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣧⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢠⣎⠆⠡⠂⣴⣿⡿⢁⣾⣿⣫⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢏⣿⣋⡄⡀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠌⠀⠠⠁⣼⣿⡟⢠⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣿⡾⡟⠫⠁⠀⠀⠀⠀⠀⠀⠀⠀⡅⢹⣿⡀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠀⢘⠀⠀⡼⣿⡟⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡑⠛⠩⠃⠚⠛⡣⠀⠐⢨⣤⣤⣤⣠⠤⠀⠀⠀⡆⢸⣿⠁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣯⠀⠀⢀⠟⠃⢰⡇⠜⠁⢻⣿⣿⡟⡿⠿⡿⠿⢿⣷⢎⠀⠀⠀⠀⠀⠀⠀⠈⠿⠛⠈⠈⠉⠉⠀⠀⠇⠸⡟⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣈⠶⠂⠈⢘⡔⡐⠀⠀⣀⣀⣿⣷⣿⣶⣿⣿⣷⣶⣔⣯⣉⣦⣶⣀⠀⠀⣶⣶⠻⣿⣿⠛⢦⠦⠀⠀⠀⠀⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣋⣇⠀⠀⠈⢮⠁⠀⢠⢿⣿⣏⡿⣿⣜⣯⣽⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⢻⣿⣶⡵⡾⠵⠃⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡎⢦⢻⡄⠀⠀⠐⠀⠀⢸⣿⣿⣿⣿⣿⣻⣽⣽⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠹⠗⣯⠄⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡞⠈⣁⡄⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⢀⠀⠐⠐⡀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⡿⢶⠀⠀⠀⠀⠀⡸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⠀⠀⠀⠀⠀⠀⠈⠄⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡘⡆⠫⢱⠀⠀⠀⠀⠁⠰⣹⣿⣿⣿⣿⣿⣿⢿⣿⡿⢟⣛⡻⠉⠀⠀⣀⡀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢶⣿⣿⠀⠀⠀⠀⠀⢠⠶⡯⣿⡯⡿⢳⢚⣾⣿⣿⣿⣿⣿⣡⣴⣯⣮⡀⠀⠀⠂⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠈⠛⠓⡁⠀⠀⠀⠀⠸⡎⢭⣻⣥⢒⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⠀⣱⠀⠀⠀⠀⢙⠿⣾⢧⢽⣿⡿⢿⡿⡻⣿⣿⣿⢿⠿⠿⠟⠿⠇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠘⡇⠀⠀⠂⠈⠔⠎⠟⠉⡝⢁⢸⢠⣶⣾⣿⣶⣾⣿⣛⣛⣷⣿⡿⡲⡀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⠀⠀⠀⠀⠀⡄⠆⠀⠸⢠⣾⣿⣿⣿⢿⠿⠿⠿⣿⠿⠟⠉⠁⢰⢁⡆⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠐⡀⠀⠀⠁⠀⣸⣾⣿⣿⣿⣿⣾⣿⣿⠗⣴⣄⡀⠀⠀⠰⣾⡇⠄⠀⠀⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠐⣀⠠⠀⢠⡿⣿⣿⣿⣿⣿⣿⣿⣣⣾⢿⣿⡧⠄⠠⣄⣙⣿⡆⠀⢠⣶⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠓⠀⢸⢠⡀⠈⢻⣂⠀⠈⠹⢻⢻⣿⣿⣿⣿⣿⣿⣯⣽⡺⡇⢀⠀⠸⢾⣘⠀⠀⢸⣿⠀⠙⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠉⠁⠀⠈⠍⠀⠀⠀⠘⣎⢿⣦⡬⢋⡀⠀⠀⠈⠘⣿⣿⣿⣿⣿⣿⣿⣼⣿⡄⣿⠇⡄⡜⠃⠂⢰⣬⡏⠀⠀⠀⠹⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⣿⣿⣿⡿⠿⠿⠟⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⢀⣷⠀⡀⠀⠀⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⢹⢻⣿⣿⣿⣿⣿⢿⡅⢃⣾⡀⢡⠉⢐⣤⣺⣿⠗⠃⠀⠀⠀⠀⡌⠉⠙⠛⠛⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠠⢈⡆⡄⢈⠁⣸⡯⠀⡅⠀⢠⢻⣿⣿⣿⣿⣿⣾⡔⣀⠀⠈⠙⢛⢹⣿⣿⣧⡌⠸⡤⣼⡧⣸⣡⣾⣿⣿⡟⠁⠀⠀⠀⠀⠀⡌⠁⠀⠀⢀⠀⠀⠀⠈⠉⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿\n⠀⠀⢀⠀⠀⠀⠁⠘⠀⠀⠇⠲⣼⣦⣭⠈⠞⢴⣿⠀⠋⠀⢨⣾⡿⣿⣿⣿⣿⣿⣿⣿⣴⠴⣀⠀⠀⠀⠸⠇⣇⣀⢱⣿⣷⣿⣿⣿⣿⣟⠃⠀⠀⠀⠀⠀⣴⡿⢠⠃⠐⠈⠀⠀⡀⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣿⣿⣿\n⢸⠄⢲⣾⣧⢶⡇⣗⣀⠀⢇⢴⣿⣿⡧⠀⣣⣼⣿⢄⢨⠰⣾⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣥⣜⢐⣴⣴⣬⣿⣿⣿⣿⣿⣿⣿⣿⡏⠁⠀⠀⠀⠀⠀⢸⣿⠃⡴⠀⡆⠀⡇⠐⠁⠁⠶⠀⠀⠀⠀⠠⠀⠀⠉⢻⣿⣿⣿⣿\n⣤⣶⣿⣿⣿⣿⣧⣧⣴⣼⣿⣿⣿⣿⣦⡜⣿⢻⣿⡆⣼⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣠⡃⠀⠀⠀⠀⢀⣾⣿⢐⠃⢀⠇⡸⢠⠆⣀⠂⣶⢰⢢⠃⠀⠂⠆⠀⠀⠀⢻⣿⣿⣿\n⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣣⣿⣸⣿⣇⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⣡⠋⠀⠀⠀⠀⠀⣸⡿⣹⢸⠀⠈⠠⠃⡬⢰⣾⣺⣧⠂⡞⡰⠀⢰⠁⣰⢀⠄⠈⢿⣿⣿\n-------------------------------------------------------------------------------------------\n _ _ ______ _ _ ____ _______ _ _ ______ _____ ______\n | | | | ____| | | | / __ \\\\ |__ __| | | | ____| __ \\\\| ____|\n | |__| | |__ | | | | | | | | | | | |__| | |__ | |__) | |__\n | __ | __| | | | | | | | | | | | __ | __| | _ /| __|\n | | | | |____| |____| |___| |__| | | | | | | | |____| | \\\\ \\\\| |____\n |_| |_|______|______|______\\\\____/ |_| |_| |_|______|_| \\\\_\\\\______|\n\n-------------------------------------------------------------------------------------------`,\n 'font-family:monospace; color: white; background-color: black;'\n )\n // eslint-disable-next-line no-console\n console.log(\n `%cIf you are a bold one like Obi-Wan, drop us a mail at work@teamgeek.io`,\n 'font-family:monospace; color: white; background-color: black; font-size: 16pt;'\n )\n }\n\n onImageLoaded() {\n this.setState({ navigateIn: true }, () => {\n document.body.style.overflowY = 'scroll'\n\n window.setTimeout(() => {\n this.setState(\n {\n navigateInDone: true,\n },\n () => {\n if (window.location.hash) {\n try {\n const element = document.getElementById(\n window.location.hash.replace('#', '')\n )\n element.scrollIntoView(false)\n } catch (err) {\n console.error(err)\n }\n }\n }\n )\n }, ANIMATE_IN_TIMING)\n })\n }\n\n toggleMenu() {\n if (this.state.menuActive) {\n document.body.style.overflowY = 'scroll'\n } else {\n document.body.style.overflowY = 'hidden'\n }\n this.props.onMenuActive(!this.state.menuActive)\n this.setState({ menuActive: !this.state.menuActive })\n }\n\n navigateTo(page) {\n if (window.location.pathname !== page) {\n this.setState({ navigateOut: true }, () => {\n window.setTimeout(() => {\n navigate(page)\n }, ANIMATE_OUT_TIMING)\n })\n }\n }\n\n renderContent() {\n const {\n headerTitle,\n headerLink,\n children,\n hideFooter,\n smoothScroll,\n } = this.props\n const { menuActive, navigateInDone, isSafari, showCursor } = this.state\n\n return (\n <>\n <>\n {showCursor && (this.cursor = cursor)} />}\n \n \n \n \n
\n {children}\n {hideFooter !== true && (\n
\n
\n
\n )}\n \n \n \n )\n }\n\n render() {\n return (\n \n )\n }\n}\n\nLayout.propTypes = {\n hideFooter: PropTypes.bool,\n children: PropTypes.node.isRequired,\n headerTitle: PropTypes.string,\n headerLink: PropTypes.string,\n initialImage: PropTypes.string,\n smoothScroll: PropTypes.bool,\n onMenuActive: PropTypes.func,\n}\n\nLayout.defaultProps = {\n smoothScroll: false,\n onMenuActive: () => {},\n}\n\nexport default Layout\n\nexport const query = graphql`\n fragment GatsbyImage on File {\n childImageSharp {\n fluid(maxWidth: 1400, quality: 100) {\n ...GatsbyImageSharpFluid\n }\n }\n }\n`\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\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};","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iOTNweCIgaGVpZ2h0PSIzMnB4IiB2aWV3Qm94PSIwIDAgOTMgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8dGl0bGU+VEcgbG9nbzwvdGl0bGU+CiAgICA8ZyBpZD0iU3ltYm9scyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IlRHLWxvZ28iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03Ni4wMDAwMDAsIC0zOS4wMDAwMDApIiBmaWxsPSIjMWQxZDFkIj4KICAgICAgICAgICAgPHBhdGggZD0iTTEwMS4wNDM1MjUsMzkuMjY5NzYzNSBMMTAxLjA0MzUyNSw0Ni4yODExMTA4IEw5Mi42MjE0NDYzLDQ2LjI4MTExMDggTDkyLjYyMTQ0NjMsNzAuNzMwMzgyOCBMODQuNDIyMDc4OCw3MC43MzAzODI4IEw4NC40MjIwNzg4LDQ2LjI4MTExMDggTDc2LDQ2LjI4MTExMDggTDc2LDM5LjI2OTc2MzUgTDEwMS4wNDM1MjUsMzkuMjY5NzYzNSBaIE0xMTYuMjQ3NjUzLDM5LjI2OTcyNyBMMTA2LjA3NTIsNzAuNjc2NzcyNyBMOTguODUwNjMxMiw3MC42NzY3NzI3IEwxMDguOTg4Mjc0LDM5LjI2OTcyNyBMMTE2LjI0NzY1MywzOS4yNjk3MjcgWiBNMTU4LjczNjk2OSw0Ny42NTM2MDQ5IEwxNjAuMDUwNzEzLDQ3LjY1MzYwNDkgQzE2MC40ODgwNjYsNDcuNjUzNjA0OSAxNjAuODM3MDA4LDQ3LjUzNjczOSAxNjEuMDk3NDIsNDcuMzAxNzkyNCBDMTYxLjM1Njk4OSw0Ny4wNjc1NzQ2IDE2MS40ODc0MzYsNDYuNzU3MTg3NSAxNjEuNDg3NDM2LDQ2LjM3MDE0NTEgQzE2MS40ODc0MzYsNDUuOTU2MTMzNiAxNjEuMzY0MDk2LDQ1LjYzOTA2NSAxNjEuMTE3Nzc2LDQ1LjQxNzg0NTggQzE2MC44NzE0NTcsNDUuMTk3MTEyNiAxNjAuNTE1NTI4LDQ1LjA4NjU2MzggMTYwLjA1MDcxMyw0NS4wODY1NjM4IEwxNTguNzM2OTY5LDQ1LjA4NjU2MzggTDE1OC43MzY5NjksNDcuNjUzNjA0OSBaIE0xNjAuMTczNjkyLDQzLjE4MjA4NjcgQzE2MS4yOTU1Niw0My4xODIwODY3IDE2Mi4xOTg0NSw0My40NzIwNjQ4IDE2Mi44ODMwODYsNDQuMDUxNDEzNiBDMTYzLjU2NzEyLDQ0LjYzMTEyNjkgMTYzLjkwOTMxNyw0NS40MDQ0ODI4IDE2My45MDkzMTcsNDYuMzcwMTQ1MSBDMTYzLjkwOTMxNyw0Ni45Nzc1NTYzIDE2My43NTg1MTQsNDcuNTE1ODQ0MSAxNjMuNDU3ODcyLDQ3Ljk4NTAwODUgQzE2My4xNTYyNjYsNDguNDU0NTM3MyAxNjIuNzE5MDM0LDQ4LjgyNzQ4NzggMTYyLjE0NDEyOCw0OS4xMDI2NDUgTDE2NC4wMzI3NzgsNTIuNjIyMzQ5OSBMMTYxLjQ0NjI0Myw1Mi42MjIzNDk5IEwxNTkuODQ1MTA2LDQ5LjY0MDkzMjggTDE1OC43MzY5NjksNDkuNjQwOTMyOCBMMTU4LjczNjk2OSw1Mi42MjIzNDk5IEwxNTYuMzk2NzUzLDUyLjYyMjM0OTkgTDE1Ni4zOTY3NTMsNDMuMTgyMDg2NyBMMTYwLjE3MzY5Miw0My4xODIwODY3IFogTTE2NS43OTc5NjcsNDQuNDQ0NjUxNiBDMTY1LjE5NTcxOSw0My4zODI3NzU0IDE2NC4zNjc1MDcsNDIuNTQ3NDYzNSAxNjMuMzE0MTc1LDQxLjk0MDA1MjQgQzE2Mi4yNjAzNjIsNDEuMzMzMDA1NiAxNjEuMTAzNTYzLDQxLjAyODkzNTYgMTU5Ljg0NTEwNiw0MS4wMjg5MzU2IEMxNTguNTg2MTY2LDQxLjAyODkzNTYgMTU3LjQ0MzU4MSw0MS4zMzMwMDU2IDE1Ni40MTc1OTEsNDEuOTQwMDUyNCBDMTU1LjM5MTM2LDQyLjU0NzQ2MzUgMTU0LjU3NjI3OCw0My4zODI3NzU0IDE1My45NzQ4NzMsNDQuNDQ0NjUxNiBDMTUzLjM3MjYyNSw0NS41MDc4NjQyIDE1My4wNzE1LDQ2LjY4ODA2NDEgMTUzLjA3MTUsNDcuOTg1MDA4NSBDMTUzLjA3MTUsNDkuMjU0NzQwOCAxNTMuMzcyNjI1LDUwLjQwNzI0MjggMTUzLjk3NDg3Myw1MS40NDIyNzE0IEMxNTQuNTc2Mjc4LDUyLjQ3NzQyMTYgMTU1LjM5MTM2LDUzLjI5OTAwNiAxNTYuNDE3NTkxLDUzLjkwNTkzMTIgQzE1Ny40NDM1ODEsNTQuNTEzMzQyNCAxNTguNTg2MTY2LDU0LjgxNjY4MzUgMTU5Ljg0NTEwNiw1NC44MTY2ODM1IEMxNjEuMTAzNTYzLDU0LjgxNjY4MzUgMTYyLjI2MDM2Miw1NC41MTMzNDI0IDE2My4zMTQxNzUsNTMuOTA1OTMxMiBDMTY0LjM2NzUwNyw1My4yOTkwMDYgMTY1LjE5NTcxOSw1Mi40NzA3NDAxIDE2NS43OTc5NjcsNTEuNDIxMzc2NSBDMTY2LjM5OTM3Miw1MC4zNzI4NjMzIDE2Ni43MDA5NzgsNDkuMjEzNjc5OCAxNjYuNzAwOTc4LDQ3Ljk0MzQ2MTUgQzE2Ni43MDA5NzgsNDYuNjc0MjE1MSAxNjYuMzk5MzcyLDQ1LjUwNzg2NDIgMTY1Ljc5Nzk2Nyw0NC40NDQ2NTE2IEwxNjUuNzk3OTY3LDQ0LjQ0NDY1MTYgWiBNMTUxLjk2MzM2NCw0My40MDk2MjMgQzE1Mi43ODQxMDgsNDIuMDQzNTU1MiAxNTMuODkyNjA2LDQwLjk2Njg1ODIgMTU1LjI4ODI1NSw0MC4xODAxMzkyIEMxNTYuNjg0MjY3LDM5LjM5MzQyMDIgMTU4LjIwMzEzNiwzOS4wMDAwNjA3IDE1OS44NDUxMDYsMzkuMDAwMDYwNyBDMTYxLjUxNDUzNywzOS4wMDAwNjA3IDE2My4wNDc1LDM5LjM5MzQyMDIgMTY0LjQ0MzE1LDQwLjE4MDEzOTIgQzE2NS44MzkxNjEsNDAuOTY2ODU4MiAxNjYuOTQ3Mjk3LDQyLjA0MzU1NTIgMTY3Ljc2ODQwMyw0My40MDk2MjMgQzE2OC41ODk2MjgsNDQuNzc2MDU1MiAxNjksNDYuMjczNjg4MiAxNjksNDcuOTAyMDM2MSBDMTY5LDQ5LjU1ODQ0NjQgMTY4LjU4OTYyOCw1MS4wNjk0NDI1IDE2Ny43Njg0MDMsNTIuNDM1OTk2MSBDMTY2Ljk0NzI5Nyw1My44MDIwNjM5IDE2NS44MzkxNjEsNTQuODc4NjM5NSAxNjQuNDQzMTUsNTUuNjY1MzU4NSBDMTYzLjA0NzUsNTYuNDUyMDc3NCAxNjEuNTE0NTM3LDU2Ljg0NTU1ODQgMTU5Ljg0NTEwNiw1Ni44NDU1NTg0IEMxNTguMjAzMTM2LDU2Ljg0NTU1ODQgMTU2LjY4NDI2Nyw1Ni40NTIwNzc0IDE1NS4yODgyNTUsNTUuNjY1MzU4NSBDMTUzLjg5MjYwNiw1NC44Nzg2Mzk1IDE1Mi43ODQxMDgsNTMuODAyMDYzOSAxNTEuOTYzMzY0LDUyLjQzNTk5NjEgQzE1MS4xNDIxMzgsNTEuMDY5NDQyNSAxNTAuNzMxNzY2LDQ5LjU3MjY1OTggMTUwLjczMTc2Niw0Ny45NDM0NjE1IEMxNTAuNzMxNzY2LDQ2LjI4NzUzNzIgMTUxLjE0MjEzOCw0NC43NzYwNTUyIDE1MS45NjMzNjQsNDMuNDA5NjIzIEwxNTEuOTYzMzY0LDQzLjQwOTYyMyBaIE0xNDMuOTgxMyw0NC43NzU1MDg1IEMxNDIuNzc4MzY5LDQyLjk2Mjk5MzUgMTQxLjE1ODgwNCw0MS41NDc0ODI1IDEzOS4xMjQxNjgsNDAuNTI4MzY4IEMxMzcuMDg4OTMxLDM5LjUxMDIyNTQgMTM0Ljc3OTE4OSwzOSAxMzIuMTk0OTQyLDM5IEMxMjguOTU2NDEzLDM5IDEyNi4xNDkyMTQsMzkuNjU5NDA1NiAxMjMuNzcyODYzLDQwLjk3NzYwOTMgQzEyMS4zOTUzMDgsNDIuMjk2NDIwNSAxMTkuNTc2MTU4LDQ0LjE1Mzg4MzkgMTE4LjMxMzcyNSw0Ni41NTA3Mjg0IEMxMTcuMDUwOTMxLDQ4Ljk0ODA1ODkgMTE2LjQyMDI1Nyw1MS43NjQyNjAxIDExNi40MjAyNTcsNTUuMDAwMDYxIEMxMTYuNDIwMjU3LDU4LjIwNjgyNzYgMTE3LjAzNTk5NSw2MS4wMTU2MTg0IDExOC4yNjkxNTksNjMuNDI3MDQwOCBDMTE5LjUwMTg0LDY1LjgzOTMxMzYgMTIxLjI0NzUxNyw2Ny43MDQ2NzMzIDEyMy41MDU0NjUsNjkuMDIyMzkxMSBDMTI1Ljc2MjQ1LDcwLjM0MTA4MDggMTI4LjM3NjkzLDcxIDEzMS4zNDgxODEsNzEgQzEzMy4yNDg4NzcsNzEgMTM0LjkxOTg3NCw3MC42ODUzNjE1IDEzNi4zNjExNzQsNzAuMDU2MDgzNSBDMTM3LjgwMTc1Miw2OS40MjcxNyAxMzguOTgzMDAxLDY4LjU0MzYyOTYgMTM5LjkwNDA4LDY3LjQwNDQ5MDcgTDE0MC43OTUwNDYsNzAuNzMwMzA5OSBMMTQ2LjIzMTU0LDcwLjczMDMwOTkgTDE0Ni4yMzE1NCw1My4wMjI0NTE2IEwxMzEuNzkzNjA0LDUzLjAyMjQ1MTYgTDEzMS43OTM2MDQsNTkuMzE0NTAyNiBMMTM4LjcwMDc4OCw1OS4zMTQ1MDI2IEwxMzguNzAwNzg4LDU5LjM1OTQ1MTEgQzEzOC4yNTUzNjUsNjEuMDY3NDkxMyAxMzcuNDAwODk2LDYyLjI5NjY0ODYgMTM2LjEzODU4NCw2My4wNDUxMDA2IEMxMzQuODc1NjY5LDYzLjc5NDQwMzEgMTMzLjUxNjI3NSw2NC4xNjg2ODk4IDEzMi4wNjA4ODIsNjQuMTY4Njg5OCBDMTI5Ljc0NDAzMyw2NC4xNjg2ODk4IDEyNy45NTM2Nyw2My4zMzcwMjI1IDEyNi42OTE1OTksNjEuNjc0MDUyMSBDMTI1LjQyODMyMyw2MC4wMTEwODE4IDEyNC43OTc1MjgsNTcuNzg2NjIwNSAxMjQuNzk3NTI4LDU1LjAwMDA2MSBDMTI0Ljc5NzUyOCw1Mi4yNzM5OTk2IDEyNS40MzYwMzIsNTAuMDYzOTk0NyAxMjYuNzEzNzYyLDQ4LjM3MTAxODMgQzEyNy45OTA1MjgsNDYuNjc4NjQ5MiAxMjkuNzQ0MDMzLDQ1LjgzMTc5NjYgMTMxLjk3MjExLDQ1LjgzMTc5NjYgQzEzMy42MDU1MjgsNDUuODMxNzk2NiAxMzQuOTQyMzk4LDQ2LjMwMzM5MDYgMTM1Ljk4MjYwMSw0Ny4yNDc0MjkxIEMxMzYuODMzMDk2LDQ4LjAxOTQ0ODcgMTM3LjQ0MDg4NSw0OS4wMDExNDY2IDEzNy44MTQ2NCw1MC4xODQ2MjY2IEwxNDYuMDAyMjAzLDUwLjE4NDYyNjYgQzE0NS43MTUwNTIsNDguMTc3NzQgMTQ1LjA0MjU4MSw0Ni4zNzQ3MDA3IDE0My45ODEzLDQ0Ljc3NTUwODUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==\"","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0M2OEY3NDkxQ0MwMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0M2OEY3NEExQ0MwMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQzY4Rjc0NzFDQzAxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQzY4Rjc0ODFDQzAxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsAkWwYAAALfSURBVHja7JpNSBVRFMffhGFSaUULIxSyoLAoi0rLyjatahHyiCTcFEmIblqGURASBLWKcFNBRJTw3BS4qU2RSoXBW7yK0EVZQV/SxzPFcPofOgOnYeY5wryJmXsO/JiZM9fxnf+795x77zzLtu2UyTYvZbipACqACqACqAAqgAqgAqgAKoAKoALEySxwCNwFHwEtaSfAIDgFlgR+UAyXw6vBLbC9QJtxcBxkkibAKvAELA/Y/hi4lhQBqNsPgAbhe8MB5kAlSIM94v40aARPfZ9KAsSEffa/1gfKPNqdcLUbBpbfc+MkwGUR1Aef4B3Ou0Ro8GsbpypQI877wa8Cbc9xInQsnYQyOCPO58/SlkriPXG9xa9hyRw+QCm4CbYVOdApcBr0uvyvwH4+p+My8FXcb+ReMczXOXGvKowkmLajszGP/7/D1WYI7AJ14Ibwp7n9GeHLhpEDRlzdsJiW8/AN8szPsXrwCDwHrcK/k4+bhe99WPOAeq7DVhGDz4M74LvHPer2D8F6n7/9wvMASoCjYAH7u0B33OcBDou5JOZFF58GGVDDNb/PNVxq/Z5nxfjVGH276/j4AnzjpH6F1wGOZQqVQSsh7wZpSO4FF8BW4f8M6sC7MMpgUGsGGyMKfBFYAZrAStc9yiEHCgVfDAGagyxBI7DX3O2zUW+IVP3nwCkPnOVunw00dkLOAeWgB9RGGPQPnjc84OnvxJySh/5AQjdFzTaqAtWgBZQlPNZxXik+lmsaygEvcVxr0JdOJbId3HcE+InjQsN6PvWAI+A2CXA49fdlQnnCg17qinESbDCpDNI2Wge4JHw9Js4DroKjfP7WxDLYL6fuJgogX6tNmjYEKsAzsIavB0oMCJo2S2ifcBPoFMGTXTehB1wEJz389KK1yYQcsNvDR1vsB8FvEwSgup/nic8QaOMh8Un3A3Q5rAKoACqACqACqAAqgAqgAqgAKoAKYKj9EWAAjOjQQEbFbFIAAAAASUVORK5CYII=\"","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {\n un$Sort(new Uint16Array(2), null);\n}) && fails(function () {\n un$Sort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!un$Sort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n un$Sort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return un$Sort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","export default function _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 * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _three = require('three');\n\nvar THREE = _interopRequireWildcard(_three);\n\nvar _RenderingPass2 = require('./RenderingPass');\n\nvar _RenderingPass3 = _interopRequireDefault(_RenderingPass2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar ShaderPass = function (_RenderingPass) {\n _inherits(ShaderPass, _RenderingPass);\n\n function ShaderPass(shader, textureID) {\n _classCallCheck(this, ShaderPass);\n\n var _this = _possibleConstructorReturn(this, (ShaderPass.__proto__ || Object.getPrototypeOf(ShaderPass)).call(this));\n\n _this.textureID = textureID !== undefined ? textureID : 'tDiffuse';\n\n if (shader instanceof THREE.ShaderMaterial) {\n _this.uniforms = shader.uniforms;\n _this.material = shader;\n } else if (shader) {\n _this.uniforms = THREE.UniformsUtils.clone(shader.uniforms);\n _this.material = new THREE.ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: _this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader\n });\n }\n\n return _this;\n }\n\n _createClass(ShaderPass, [{\n key: 'render',\n value: function render(renderer, writeBuffer, readBuffer) {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture;\n }\n\n this.quad.material = this.material;\n\n if (this.renderToScreen) {\n renderer.render(this.scene, this.camera);\n } else {\n renderer.render(this.scene, this.camera, writeBuffer, this.clear);\n }\n }\n }]);\n\n return ShaderPass;\n}(_RenderingPass3.default);\n\nexports.default = ShaderPass;","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _three = require('three');\n\nvar THREE = _interopRequireWildcard(_three);\n\nvar _Pass2 = require('./Pass');\n\nvar _Pass3 = _interopRequireDefault(_Pass2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar RenderingPass = function (_Pass) {\n _inherits(RenderingPass, _Pass);\n\n function RenderingPass() {\n _classCallCheck(this, RenderingPass);\n\n var _this = _possibleConstructorReturn(this, (RenderingPass.__proto__ || Object.getPrototypeOf(RenderingPass)).call(this));\n\n _this.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);\n _this.scene = new THREE.Scene();\n _this.quad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2), null);\n _this.quad.frustumCulled = false;\n\n _this.scene.add(_this.quad);\n\n return _this;\n }\n\n return RenderingPass;\n}(_Pass3.default);\n\nexports.default = RenderingPass;","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _Pass2 = require('./Pass');\n\nvar _Pass3 = _interopRequireDefault(_Pass2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar ClearMaskPass = function (_Pass) {\n _inherits(ClearMaskPass, _Pass);\n\n function ClearMaskPass() {\n _classCallCheck(this, ClearMaskPass);\n\n var _this = _possibleConstructorReturn(this, (ClearMaskPass.__proto__ || Object.getPrototypeOf(ClearMaskPass)).call(this));\n\n _this.needsSwap = false;\n return _this;\n }\n\n _createClass(ClearMaskPass, [{\n key: 'render',\n value: function render(renderer) {\n renderer.state.buffers.stencil.setTest(false);\n }\n }]);\n\n return ClearMaskPass;\n}(_Pass3.default);\n\nexports.default = ClearMaskPass;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTcwMTQ1MkExQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTcwMTQ1MkIxQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NzAxNDUyODFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NzAxNDUyOTFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgkUpawAAAbESURBVHja7JtpbFVFFMffg4IWFGsLCEQ2EauATUWFSgMiYm1tjRC1gkoAqyFAQrAxJiB8QCMUIwQ+oCZqDCR80CoWjVg1YYkL1hpIBAQCobaURVDEWqhh6fM/4VxzOJm57+7vUZ3klzfvzn5muTNzzo0nEolYwG4+WA7qQDE4G0tjFw9BAAfBEPIXga/SWQCdQsgzg/m7x9LcdYr9x93/ArAJ6wz6RyyknqBHOghAPd8MmkAt6OYizyb6VavrfhfpZoFj4CgYFZkE1FtAQ5/E5W4z6GaIK+kPloAyh/EVs0V5C12k9YVd4Ic+hBDz0fg/wdB0EEBX8Imo3FbQySZNb1AISsF91JDONvGnaRo/OqrGJxOASQiydwaAKnAwoXctoBqUgLhIu43FOwnyo2y8EwFYQrCmQx3oQs+7g5XgfMK52y4aORe0g2Pg9qgb71QAFn3ZcB4M9hgaeREcB22G8HNgOsu3J7gqFY13KwCLQaBZNOo0WAruEnNeCe1Z8KNGEOWparQfAWSCXaIha0FOknRxWvBaSFhzQEY6CMDtaXApWMD+vwoWuUg/HJwGRwyHqDyQC3Lo/0nQAHaCtig3QqbNEZ/X7wfUCw9QXq02i6daN2rBo0GPHDeRF7AKtdI730/hd4BvE+7dHhJa5AKoY5V4y2fBlYbXp3olHqL9gdp07QMXDIJYkWSTFagAuoiKlPgodJWmMfVgBsjWxL8GPAa+1KSroX2KLwG8DM5oMt8PhlHEm0RYP48FLhL5nAJTXa4XTSKP9/wKwG4n9xpFzBfPvSxE42mTZLmDJFi3+eSI6ajcTD8C2GhovBJMkWEE5LgsqCuNKMsdpzOE1567Duxm+f1BO0pPAlCnu+HUy5w+LOLVYg0Y77KgGUKAxQGs4MPo9Wi5ZWG/BXawwla6LKiepd0Y4Ht8lThNdglTAIvFkMtycXZI+Bg9dgykV6flJrjNw82F51pwnvxZ4HWH6cYy/29gW4Ab2UZQz/7fG+a1uLrsfJP9rwCVDtLdxvx1dFkapPue+WeCLcR68CIYEdRZwNqUyJuf1XRKNKV5l8VdE8KJrtLhRcxEv1NAuVZQBk6xZ/PAnCT6hTBdu4M4BaSjfAdkmvR4Tt0+mmubSHGyGKwQcbLBbDAZjGTPe4UoiB3gG1oXuoLBoITqyKetUtyW/qu1dnESbBRD+HowS3PxoZ79ZRiKO0KYAkPo5skUPgkcEPX42LqgdVJAlUh8syGeOpmtSzIX/07RTZBauz7TbZ/dNv4XmwVPnvLaaIEcQ6PFqkg8RddfmeJuUt1EZ9oleEU0qNmm94tE3F02cVPJnaKeT9qduJw2Xl6WqFHSK6QGDKA57SePTayu1XantyMU6XCSxkuplobYgxuoXtf6yGMW76xkipBywy0NZ6G4RAmr8cXiOsxrPuP4FZzdRkjp6j8Qmx6dy2X+LSG949V7fbXYfN3qMa9WbiQWhPVHNvMfD0kAaqd5i9jArfCYV2/mbwtCAC3MnxVC43sYlC8PgXEe8uOn071BCOAQ8xeGIIAXSFMUo+N4Iwur8mDCN+WyKRvA4jRevAVGBrjw9RQaozfAZFGeG1OcebKuQVQyQxyR61yqu+22xkvEzrIv7ST5vuM7h+XcQ1txy33uVT2uY7qQ7Ke07U2WTvXeS4YwJcQThruESaK8u5OUo3SKZ1l85c8NUgBxscNSrgFU0BW2aW/eQD07WBP+hDC6GCjK28fC3zbkX0ZKVemm+jGQsLur364p7AJpcybaDO8aTX7VYkTJ8Pks/HehJ3xcKGG4lrnCr4WIHd1oqLaLgncL67JBGhOaIpHXERY2TVNWP5F+OAsbZdAqjw7CRMYJylRmPZt3D4vw9ZoK/iSExBessYZpx4VYyMLy2NT5GjxtWmzDPn5maEzf8jUjRNfTe9nzKk3e94u0N4rpOMbJoSkVZ3K+WDaRBSo/Slvq7uVCT1nBRkiBMNTaGaWVmB8KRK89Q9OFO+ue8QbSQCWERuqoZuSUXikC2CDU49a8rBHPrZ6ekMR2KEEqu9iVIICB4tX0nM2qzXt0hME6RN09PJIKQ0mvcOXqCY1py1YW/pHhguZBEs6wVFqKeqVeY3nCeYqFn/Fr+xOGdtjvlyl57P8Xmji1zK++UBnakT6aUvq7OPt/XhPngtTbdrSvxn5m/rmacP6sjUxkQ3cZEQpgHbvHK6ffNaSknCJsDapDsw0WLoxPZ01OqaV/SGqwcOkWOh8c7mhToI3U1bts4vwau/TB9eGoKhX1l6PN9E3g82QCfw5cBAfAMjKnr4+yQlFOgbR0/wgwAP0djuKSa8jcAAAAAElFTkSuQmCC\"","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _Pass2 = require('./Pass');\n\nvar _Pass3 = _interopRequireDefault(_Pass2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar MaskPass = function (_Pass) {\n _inherits(MaskPass, _Pass);\n\n function MaskPass(scene, camera) {\n _classCallCheck(this, MaskPass);\n\n var _this = _possibleConstructorReturn(this, (MaskPass.__proto__ || Object.getPrototypeOf(MaskPass)).call(this));\n\n _this.scene = scene;\n _this.camera = camera;\n _this.clear = true;\n _this.needsSwap = false;\n _this.inverse = false;\n return _this;\n }\n\n _createClass(MaskPass, [{\n key: 'render',\n value: function render(renderer, writeBuffer, readBuffer) {\n var context = renderer.context,\n 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 = void 0;\n var clearValue = void 0;\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); // draw into the stencil buffer\n\n renderer.render(this.scene, this.camera, readBuffer, this.clear);\n renderer.render(this.scene, this.camera, writeBuffer, this.clear); // 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.setFunc(context.EQUAL, 1, 0xffffffff); // draw if == 1\n\n state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\n }\n }]);\n\n return MaskPass;\n}(_Pass3.default);\n\nexports.default = MaskPass;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QURGRTUwRkQxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QURGRTUwRkUxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBREZFNTBGQjFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBREZFNTBGQzFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhBlWsQAAAVOSURBVHja7JprbBVFFMf7oC0FWtBCAIEA8ggWeQoBlQ+WgGKgUCBAiJgYE8VqUKJ8MPrJD4hBRAgJGIxgUBCIkYQADYQCBQwYk4pGgx+Q+ETARy1SWsrj+j/mbHI83rvP2bt70z3JL9m9d3Zm578zc86c3fxUKpXXka0gr4NbIkAiQCJAIkAigGFbDq6DBtA57gLkhxAHnAND+HgaqO9oI6CTOC5L1oBEgNwWoGuW76dETaHIBMgH+8BVsAsUe6jzsloQ3dpi0AR+BZVZU4C8QBr6pP5re0FxhrKaEWAjWOKyPPEYuCXae9nDtYHI9Ae5x+MBRMgL0PlrYEzUAhDdwWdKhI8dKiwE/cFYMAx0cyg/J03np2ar804CZBLhblWGOvksOApaU/+3b8EaUJmm/uNRdt6NAJYIp/kmz4NS8bSfB00p97aD1xer7lX8e0sUnXcrAFECHgDlfN4D1Kf82e/gIVH3BNAvis4TfvYC3cFJcK/47RbYAz4BjezKKAweBmaCJaCPKH8DzAKHIo+EPCpWAA6pJ3qSXZ/ddTRtXucFj9gAekb11P1MAYvnVOc/8ugaq8FkhzJlYBBTEacp0A18Dyr4/FMwFbQHHISlYC7zIOir/qfo8DTYy1FpU1RTYKl48jddDHsnisAKXhTd2lWwmj1T1qfAYXEjuwM2TOJ9lfJvPytPEroABRyoWLYoQKN0482qQ7dBHY+y8aA36AVG8Z5iF2hT19zwuN/IKACFowfBMcVWsQgNUI0P8tngRCUk2X6X06kveDfNaFgYVIC/bYbaa1xwrPq9xEdjPXnoWkbu8AUf9cxWIlL4PdKvAJQP+MVmjbT+a7XJ+7m1taCfOH8SrPdRD3mDR0Abn1PmeYvf7Ba5wbvYBRWp/37iyI785B3gT/HfOHDGQzvjOEK07G3wYkAH9hTYrBIqO8N0g+fFsHvJ41DbJq79EXQxsILTwzsh6v08bDf4jmjsLHsGN9d1Zv9t2TKDkdx0tTYN97MGuLUPxPEI8LTL66aI5OptsN1gHFev1rDpYabFKfQ9Js7fAhNcXDdGHH+h1pKgRoIeFeczQA1zP4fvRneD94Dram9f5XDNOlF+ewgbmlds3DiF7Ec4cCsIOgXIzoJnxDltjA6DZTbX9BDHv4Wwo7fbHBWCKvYONPrGm3gztFW5MJoa2zJ0fIFqtFcIArSqxMylDKKMBqfAIj9TYCTn76pURrchzc6M9vNvqpXfsvoQpsBMsB5MA11VLnOxyGfKCHS2Fzc4SWxe2hySFPeB72zm5KUIsj4ULzyhwudmaz/jFNJO4rxduZhThTbR3hFRluwmr9LfgGYOoYsNJFE8xXrgfY5s6zjiLefQfJ7bJ2/Z0gxl6d3AOVX2PZUCjwOvqnustEuDX1SFa20qXqXKLo9Zx2Vy9oK4z5WZClZwksJN52nR+0uU3RLTzlusFfd6yq5gLSdGHneosEZU2M6JizgLUC3u94rdIriJcRPrW9bAL0XibPL+ykx8IiOTHF/mwFcxRaa/ESoVx+05IMBQORpMCPCHOB6YAwI8Ko4bTQjQqLajxTHuPD2g+eK8zoQAB8TxnR4SJdk2+vBrnXhALf/uEg25ln3CtbRwGj1u7u+NdCl/U5VXqkRJE/vbOHR8INijOn+Gc5VGP5auBRvVbyc4GfE1uJLF4U6bncG84NXwB5jyXQe9hf7Bei9gsuEVYDXPtzgaPYhqfs1vLA6QtgY87PEL0WwYLXgrwUTZ+TBGgHx1Np9TYpNVtJgtu8x5QMoBfKjildAFyBlLPpdPBEgESARIBOjI9o8AAwC6Q64TDSxk6gAAAABJRU5ErkJggg==\"","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNFNjI3ODIxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNFNjI3ODMxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGM0U2Mjc4MDFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGM0U2Mjc4MTFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiJQsJsAAAQXSURBVHja7JtbSBRRGMfXVUTN2EUoo4LM7kFXUcvsImJtFJFYkEHRDYSIniICX6Si8Dl6swIh8yEzgzTIS2FRGZQWhYlF94upaFLmkm3/Lz5hOJ7Zi87MjrPzwe9hzu6O5/zPnMv/m2OUz+dzRHI4HREetgC2ALYAtgC2ALYAERwxOt8/FWwC68EiMAu4+DMv+Ao6QAtoAHfBsJECROmwE4wGO8FRsDrE334HF8A58NkQBUgADfGADt/4YxCcBQka128UWj0Bk7jX9mvcP51gN3hs5iEwHdSBpSqf/+Lx3Qxe8WM+BJJ4TkgHG8Fsld/Tdw+ACjMOgZngjcpj3AmKQGKQ98oC1X6GRZEeQ2A8P3aBl5KKekExiB3jfbNBu+S+w2C7WQSgoXNNUslvIEODitFTUyW5/wCYawYB9kgq90XjykWDcsnfuc8dEDYBqHe6JMvWSh3GKInQIBFhbzgFOCGp0BEd1+qpoFcywcaEQwAn+CRU5gmX67lhOSwRfZsW9w7VDOXyuq+MU+CvzhvWMvBRKNsXDje4Rbim/foNA3bsXvYIysgDsUYLsFa4rjHQvVUL14lgmZF2mMRaLJQ1G+hcn4F+hZ2mOAQyuR302VvQBnr18AIzJONwOf9Bo+IRyAi0uwetoBJcBN1aDYHJkrIegxM4XcF0KlgBSvmJOA0StBAgTmVyMjJCnW/IpheD5yBtrHMAjfsCtqxiuIPsFb2im4clWeYpIEWlU1N5virkiTsoO7wGNAbI3GzWO2MjcBlcBwdBiopDLQC3VOrr5ayV351gHDgfZOrquMECaGGr+8EcNQFc7LaCjQoTCzBi3Gr9OUrlMhgPmnhdFeMnqOXU1nswyOV9vOSYOWi3eBusE8oL/y+VCrXKVLIwpcBt8p4OxDTQI7TthXII5KqMlZwJ3vBAjnLVyBBo4eyscr3N4yFhlYhn8+ZWlJ1x8tYyXfhyqcUa7+B5q0Y0dyTADqFwgAWwYjwQruc7JRb3JvhhUQFeC9fJJMBCobDRwm/D/8jMkFso+2BhAVyimYu0AxJLhOt3Ts6kiIkPq4boaNtIgHahMMeijZ8HsoWyBhLgnlC4lROOVouTnC1STohVJMBVyURxzGKNzwe7hLIrDjqrwPvkp5LEQZZFPEAmv1VWxhBYoDRDHolR6LWACPmSxlOUyBIi5SoppJIQTnmYBXpNX6mSxGnit86jDknRxHdHJXvax0ainpOQfSYb45TcTeZ13sPJjyjJ9yh5s0G59IsvRiizWqeWQp7gUc/Gr9/fewE6wUWnOi9ZqOFD/G7AI9n0+U2LUzbooW/ixhCn+VLHe1AyjR8dss103jfJpD39m+1uKydvq4OZq/Q4Kzyhwv5/AVsAWwBbAFsAWwBbAFuAiI1/AgwAwYFK6smHyW0AAAAASUVORK5CYII=\"","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","module.exports = __webpack_public_path__ + \"static/work_with_us-6043ada9e47d498bc6aae5fef76a43f1.gif\";","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","module.exports = __webpack_public_path__ + \"static/drag_1-67f27d371cf2c3303777b2954dad3ec0.svg\";","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _Pass2 = require('./Pass');\n\nvar _Pass3 = _interopRequireDefault(_Pass2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar RenderPass = function (_Pass) {\n _inherits(RenderPass, _Pass);\n\n function RenderPass(scene, camera, overrideMaterial, clearColor, clearAlpha) {\n _classCallCheck(this, RenderPass);\n\n var _this = _possibleConstructorReturn(this, (RenderPass.__proto__ || Object.getPrototypeOf(RenderPass)).call(this));\n\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 return _this;\n }\n\n _createClass(RenderPass, [{\n key: 'render',\n value: function render(_renderer, writeBuffer, readBuffer) {\n var renderer = _renderer;\n var oldAutoClear = renderer.autoClear;\n renderer.autoClear = false;\n this.scene.overrideMaterial = this.overrideMaterial;\n var oldClearColor = void 0;\n var oldClearAlpha = void 0;\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.render(this.scene, this.camera, this.renderToScreen ? null : readBuffer, this.clear);\n\n if (this.clearColor) {\n renderer.setClearColor(oldClearColor, oldClearAlpha);\n }\n\n this.scene.overrideMaterial = null;\n renderer.autoClear = oldAutoClear;\n }\n }]);\n\n return RenderPass;\n}(_Pass3.default);\n\nexports.default = RenderPass;","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _three = require('three');\n\nvar THREE = _interopRequireWildcard(_three);\n\nvar _ShaderPass = require('./ShaderPass');\n\nvar _ShaderPass2 = _interopRequireDefault(_ShaderPass);\n\nvar _CopyShader = require('./CopyShader');\n\nvar _CopyShader2 = _interopRequireDefault(_CopyShader);\n\nvar _MaskPass = require('./MaskPass');\n\nvar _MaskPass2 = _interopRequireDefault(_MaskPass);\n\nvar _ClearMaskPass = require('./ClearMaskPass');\n\nvar _ClearMaskPass2 = _interopRequireDefault(_ClearMaskPass);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar EffectComposer = function () {\n function EffectComposer(renderer, _renderTarget) {\n _classCallCheck(this, EffectComposer);\n\n var renderTarget = _renderTarget;\n this.renderer = renderer;\n\n if (renderTarget === undefined) {\n var parameters = {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n format: THREE.RGBAFormat,\n stencilBuffer: false\n };\n var size = renderer.getDrawingBufferSize();\n renderTarget = new THREE.WebGLRenderTarget(size.width, size.height, parameters);\n renderTarget.texture.name = 'EffectComposer.rt1';\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.passes = [];\n this.copyPass = new _ShaderPass2.default(_CopyShader2.default);\n }\n\n _createClass(EffectComposer, [{\n key: 'swapBuffers',\n value: function swapBuffers() {\n var tmp = this.readBuffer;\n this.readBuffer = this.writeBuffer;\n this.writeBuffer = tmp;\n }\n }, {\n key: 'addPass',\n value: function addPass(pass) {\n this.passes.push(pass);\n var size = this.renderer.getDrawingBufferSize();\n pass.setSize(size.width, size.height);\n }\n }, {\n key: 'insertPass',\n value: function insertPass(pass, index) {\n this.passes.splice(index, 0, pass);\n }\n }, {\n key: 'render',\n value: function render(delta) {\n var maskActive = false;\n var pass = void 0;\n var i = void 0;\n\n for (i = 0; i < this.passes.length; i += 1) {\n pass = this.passes[i];\n\n if (pass.enabled !== false) {\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, delta, maskActive);\n\n if (pass.needsSwap) {\n if (maskActive) {\n var context = this.renderer.context;\n context.stencilFunc(context.NOTEQUAL, 1, 0xffffffff);\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, delta);\n context.stencilFunc(context.EQUAL, 1, 0xffffffff);\n }\n\n this.swapBuffers();\n }\n\n if (pass instanceof _MaskPass2.default) {\n maskActive = true;\n } else if (pass instanceof _ClearMaskPass2.default) {\n maskActive = false;\n }\n }\n }\n }\n }, {\n key: 'reset',\n value: function reset(_renderTarget) {\n var renderTarget = _renderTarget;\n\n if (renderTarget === undefined) {\n var size = this.renderer.getDrawingBufferSize();\n renderTarget = this.renderTarget1.clone();\n renderTarget.setSize(size.width, size.height);\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 }, {\n key: 'setSize',\n value: function setSize(width, height) {\n this.renderTarget1.setSize(width, height);\n this.renderTarget2.setSize(width, height);\n\n for (var i = 0; i < this.passes.length; i += 1) {\n this.passes[i].setSize(width, height);\n }\n }\n }]);\n\n return EffectComposer;\n}();\n\nexports.default = EffectComposer;","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","import React from 'react'\nimport { Link } from 'gatsby'\nimport styled, { css } from 'styled-components'\nimport { screenSizes } from '../theme'\nimport PropTypes from 'prop-types'\n\nconst Gif = styled.div`\n opacity: ${({ alwaysShowGifOnMobile }) =>\n alwaysShowGifOnMobile ? '1' : '0'};\n transition: all ease 500ms;\n top: 0;\n left: calc(50% - 50px);\n width: 100%;\n height: 300px;\n background-repeat: no-repeat;\n background-size: cover;\n\n @media (min-width: ${screenSizes.tablet}px) {\n opacity: 0;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n font-size: 70pt;\n position: absolute;\n height: 500px;\n background-size: contain;\n }\n`\n\nconst Container = styled.div`\n ${props =>\n props.hasGif\n ? css`\n position: relative;\n\n @media (min-width: ${screenSizes.desktop}px) {\n padding-top: 200px;\n min-height: 500px;\n }\n `\n : css`\n ${Gif} {\n display: none;\n }\n `}\n`\n\nconst Bar = styled.div`\n position: absolute;\n width: 100%;\n height: 4%;\n left: 0;\n bottom: 0;\n transition: 500ms height;\n background-color: white;\n z-index: 1;\n`\n\nconst BigTextContainer = styled.div`\n position: relative;\n display: inline-block;\n vertical-align: bottom;\n &:hover {\n ${Bar} {\n height: 100%;\n }\n\n + ${Gif} {\n opacity: 1;\n background-image: url(${props => props.gifurl});\n }\n }\n\n ${props =>\n props.alwaysShowGifOnMobile &&\n css`\n @media (max-width: ${screenSizes.tablet + 1}px) {\n + ${Gif} {\n opacity: 1;\n background-image: url(${props => props.gifurl});\n }\n }\n `}\n`\n\nconst Text = styled.h3`\n z-index: 2;\n position: relative;\n color: white;\n font-size: 60pt;\n mix-blend-mode: difference;\n @media (min-width: ${screenSizes.tablet}px) {\n font-size: 70pt;\n }\n @media (min-width: ${screenSizes.desktopLarge}px) {\n font-size: 100pt;\n }\n`\n\nexport default class BigLink extends React.PureComponent {\n static propTypes = {\n to: PropTypes.string,\n href: PropTypes.string,\n children: PropTypes.any,\n gifurl: PropTypes.string,\n className: PropTypes.string,\n alwaysShowGifOnMobile: PropTypes.bool,\n }\n\n constructor(props) {\n super(props)\n this.renderLinkContents = this.renderLinkContents.bind(this)\n }\n\n renderLinkContents() {\n return (\n <>\n \n \n {this.props.children}\n \n {this.props.gifurl && }\n \n )\n }\n\n render() {\n return (\n \n {this.props.href ? (\n {this.renderLinkContents()}\n ) : (\n \n {this.renderLinkContents()}\n \n )}\n \n )\n }\n}\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkIyOEJBMzUxQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkIyOEJBMzYxQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyQjI4QkEzMzFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyQjI4QkEzNDFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp3twjoAAAaiSURBVHja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\"","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\nimport styled from 'styled-components'\n\nimport SunnyIcon from '../static/images/weather/01d.png'\nimport PartlyCloudyIcon from '../static/images/weather/02d.png'\nimport CloudyIcon from '../static/images/weather/03d.png'\nimport BrokenCloudsIcon from '../static/images/weather/04d.png'\nimport RainIcon from '../static/images/weather/09d.png'\nimport LightRainIcon from '../static/images/weather/10d.png'\nimport ThunderStormIcon from '../static/images/weather/11d.png'\nimport SnowIcon from '../static/images/weather/13d.png'\nimport FogIcon from '../static/images/weather/50d.png'\n\nconst Container = styled.div`\n display: inline-block;\n padding-left: ${({ plain }) => (plain ? 0 : 26)}px;\n opacity: ${props => (props.visible ? 1 : 0)};\n transition: opacity 300ms;\n span {\n font-size: ${({ plain }) => (plain ? 15 : 21)}px;\n }\n img {\n margin: 0 8px -2px;\n }\n`\n\nconst ICONS = {\n '01d': SunnyIcon,\n '02d': PartlyCloudyIcon,\n '03d': CloudyIcon,\n '04d': BrokenCloudsIcon,\n '09d': RainIcon,\n '10d': LightRainIcon,\n '11d': ThunderStormIcon,\n '13d': SnowIcon,\n '50d': FogIcon,\n}\n\nconst Icon = styled.img`\n width: 24px;\n`\n\nconst mapWeather = weather => {\n const icon = ICONS[weather.icon.replace('n', 'd')]\n const alt = weather.description\n return \n}\n\nexport default class WeatherWidget extends React.Component {\n static propTypes = {\n city: PropTypes.string,\n weather: PropTypes.array,\n plain: PropTypes.bool,\n }\n\n static defaultProps = {\n city: null,\n weather: null,\n }\n\n constructor(props) {\n super(props)\n }\n\n render() {\n const { weather = {}, plain } = this.props\n const localWeather = _.find(weather, { name: this.props.city })\n return (\n \n \n {!!localWeather && !plain && mapWeather(localWeather.weather[0])}\n {!!localWeather && Math.round(localWeather.main.temp)}°\n \n \n )\n }\n}\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar Pass = function () {\n function Pass() {\n _classCallCheck(this, Pass);\n\n this.enabled = true;\n this.needsSwap = false;\n this.clear = false;\n this.renderToScreen = false;\n }\n\n _createClass(Pass, [{\n key: 'setSize',\n value: function setSize(width, height) {}\n }, {\n key: 'render',\n value: function render(renderer, writeBuffer, readBuffer, delta, maskActive) {\n console.error('THREE.Pass: .render() must be implemented in derived pass.');\n }\n }]);\n\n return Pass;\n}();\n\nexports.default = Pass;","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\nimport { screenSizes } from '../theme'\n\nconst Text = styled.span`\n font-size: 7pt;\n text-transform: uppercase;\n\n @media (min-width: ${screenSizes.tablet}px) {\n font-size: 7pt;\n }\n`\n\nconst SectionIndicator = ({ children, className }) => (\n /  {children}\n)\n\nSectionIndicator.propTypes = {\n children: PropTypes.any,\n className: PropTypes.string,\n}\n\nexport default SectionIndicator\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","// eslint-disable-next-line es-x/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\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\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _three = require('three');\n\nvar THREE = _interopRequireWildcard(_three);\n\nvar _RenderingPass2 = require('./RenderingPass');\n\nvar _RenderingPass3 = _interopRequireDefault(_RenderingPass2);\n\nvar _CopyShader = require('./CopyShader');\n\nvar _CopyShader2 = _interopRequireDefault(_CopyShader);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar TexturePass = function (_RenderingPass) {\n _inherits(TexturePass, _RenderingPass);\n\n function TexturePass(map, opacity) {\n _classCallCheck(this, TexturePass);\n\n var _this = _possibleConstructorReturn(this, (TexturePass.__proto__ || Object.getPrototypeOf(TexturePass)).call(this));\n\n var shader = _CopyShader2.default;\n _this.map = map;\n _this.opacity = opacity !== undefined ? opacity : 1.0;\n _this.uniforms = THREE.UniformsUtils.clone(shader.uniforms);\n _this.material = new THREE.ShaderMaterial({\n uniforms: _this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n depthTest: false,\n depthWrite: false\n });\n _this.needsSwap = false;\n return _this;\n }\n\n _createClass(TexturePass, [{\n key: 'render',\n value: function render(_renderer, writeBuffer, readBuffer) {\n var renderer = _renderer;\n var oldAutoClear = renderer.autoClear;\n renderer.autoClear = false;\n this.quad.material = this.material;\n this.uniforms.opacity.value = this.opacity;\n this.uniforms.tDiffuse.value = this.map;\n this.material.transparent = this.opacity < 1.0;\n renderer.render(this.scene, this.camera, this.renderToScreen ? null : readBuffer, this.clear);\n renderer.autoClear = oldAutoClear;\n }\n }]);\n\n return TexturePass;\n}(_RenderingPass3.default);\n\nexports.default = TexturePass;","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CopyShader = require('./lib/CopyShader');\n\nObject.defineProperty(exports, 'CopyShader', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_CopyShader).default;\n }\n});\n\nvar _Pass = require('./lib/Pass');\n\nObject.defineProperty(exports, 'Pass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Pass).default;\n }\n});\n\nvar _ShaderPass = require('./lib/ShaderPass');\n\nObject.defineProperty(exports, 'ShaderPass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ShaderPass).default;\n }\n});\n\nvar _RenderingPass = require('./lib/RenderingPass');\n\nObject.defineProperty(exports, 'RenderingPass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_RenderingPass).default;\n }\n});\n\nvar _TexturePass = require('./lib/TexturePass');\n\nObject.defineProperty(exports, 'TexturePass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_TexturePass).default;\n }\n});\n\nvar _RenderPass = require('./lib/RenderPass');\n\nObject.defineProperty(exports, 'RenderPass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_RenderPass).default;\n }\n});\n\nvar _MaskPass = require('./lib/MaskPass');\n\nObject.defineProperty(exports, 'MaskPass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_MaskPass).default;\n }\n});\n\nvar _ClearMaskPass = require('./lib/ClearMaskPass');\n\nObject.defineProperty(exports, 'ClearMaskPass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ClearMaskPass).default;\n }\n});\n\nvar _ClearPass = require('./lib/ClearPass');\n\nObject.defineProperty(exports, 'ClearPass', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ClearPass).default;\n }\n});\n\nvar _EffectComposer = require('./lib/EffectComposer');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_EffectComposer).default;\n }\n});\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QURGRTUwRjkxQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QURGRTUwRkExQ0JFMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBREZFNTBGNzFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBREZFNTBGODFDQkUxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuTmSPwAAATjSURBVHja7FvpSxVRFJ9nz1DaoIhof5YPKiv70m7RpyLJCFTC6kMrZdFfUFGRBn72gy1U+KWMCoUo8YmVYrZDpVjZagsRUah96JHWdA4daZjunXdn7p2lpz/4uZyZOefcM3c9946m67rmE4uBX4jFfvkRwh8+YA7wsUmWzZC5jhTNH8zlBEUbKAH4KShL2gD8EpQlbQACg8EA+GQ3JCgLVADyiCoQZshSFeleQxSDwGRhKLBG/4taYJrkBGSB/i8WSupMI9/6UU2+Wz4nojiP4WyjgiCUGPSVKih8I8PPPLcCgLgOTJV0fAZwpqSOVPKFhbUqAoAG6jkGYj6uJfoZ4/hWr6oJWFUxxFVgyIeCh8i2zmmi6aoXQ2nAOuByxrXjwF0COsYAZ9FaYCJwJMl7gB9oMdQO/CKg6xhwJ0PeBFwFjKsaBUSaQ7dFf4BB3gS8QPclQg/du8miZqGtLk61t9Uvqap6DRxnNwPbdefAZ7dwfLimoinKtMEKYCewDhgxXcuy6DidAHXNNtnIoA6wk3zxJSEyAvjNJMsHngUOFXj+m0FPIvQCi4CXBHwQn5MrzghtBp6xuP4IeAMYA74DdpN8FHAycCVwBWWHeNiawIY9KByWci2q8ANggQ1d+cD7FvpyVfmtqvBTgHGOszjlTXGgE585wtEZZ/Q7vgbgBsfR9Qp0r7eY7AQiAAUcBzcobF5FHBuFQQjAM4ZjZS5MfcsYdjr8DsBqhlPPXJz/P1XdIcqmxDYyZAddzGCxdG+Qys1JzAMwhdUJHG+QvQdOo0mLG8BU2mvgJIPsI3CqU5syNWCGqfCIWhcLj+gjG0aMJ1+kkpPzSIlONGZqU+hNt5iencXQ1+JBIvcmcIdJlgVsNcmWUM34xSgT8inwYZjW8RUChkuB+w3/T2Dc0+FBAFg2zL6UAPcJ6CrGt1suaBgVRk2LEDO6PQhAD0M23PB3VLDwiHKZPkD3aXNDqQ0MwF7Be7EJPE/wtsd4EIDRDFmX4W/08aigrr1hyq3ddtAJvmUoxM6o0eUAZDFk7xjN9YpIJygzK8tkzMrOe5ANrmLYzfQrI9Rh6hi/AiMyGRqBDNQbUzN4YfLB093hekb73O5i9d/G6ANifk2FEQuAd0wyrAUZnOFK9dtHLGL44FkNuAu8xagFp114+6cYhb8lU3hVOcGlnGTFAYUd3wGOjZygpMQqOQ4eVqD7EEd3ZZBygsOArziOVlHS1Emi9RxH52uyGZgAaLRz853jMO7jHQRGBfRE6d4uji60MSeoR2VzaFhK51z/Thsj92j5+pnkY7U/J0Xn08aI1fO4edKsbGHhwtbYTOBFTr5ABrhtXki/lW2NyQyDmENoozMDEYP8CXAx8ITCwp8kncbCR8h2m2A+Q9kwaGd7fBmd1nKKatLB8qHBj+1xJwckkNl0EqzZYgutf8urme7NTuCHkgMSXh+RQYwDTqelqvGIDC65XwI/Cerx9IhMerIekhI9KTqgj8mtTeaDkk6HQWxnqyU3QUpoyGynfKNT9JIvTYKJW9t9wP96WLpGpAmEBSL8A7hO+3tU/rKCiU2UI5NZ28epJtjyM2zDwGWFM7s+TlVWAVt++vXFiO6ovbqAwW+GBgMQHLspAykAQwRlSRsA1kfSrQMpAFjY3bSJgtyj+fDlOOK3AAMABg6XN2Xnsl0AAAAASUVORK5CYII=\"","require(\"core-js/modules/es.typed-array.set.js\");\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\n/**\n * @author Rich Tibbett / https://github.com/richtr\n * @author mrdoob / http://mrdoob.com/\n * @author Tony Parisi / http://www.tonyparisi.com/\n * @author Takahiro / https://github.com/takahirox\n * @author Don McCurdy / https://www.donmccurdy.com\n */\nvar THREE = require('three');\n\nvar _GLTFLoader = function () {\n function GLTFLoader(manager) {\n this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;\n this.dracoLoader = null;\n }\n\n GLTFLoader.prototype = {\n constructor: GLTFLoader,\n crossOrigin: 'anonymous',\n load: function load(url, onLoad, onProgress, onError) {\n var scope = this;\n var resourcePath;\n\n if (this.resourcePath !== undefined) {\n resourcePath = this.resourcePath;\n } else if (this.path !== undefined) {\n resourcePath = this.path;\n } else {\n resourcePath = THREE.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 THREE.FileLoader(scope.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\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 setCrossOrigin: function setCrossOrigin(value) {\n this.crossOrigin = value;\n return this;\n },\n setPath: function setPath(value) {\n this.path = value;\n return this;\n },\n setResourcePath: function setResourcePath(value) {\n this.resourcePath = value;\n return this;\n },\n setDRACOLoader: function setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n },\n parse: function parse(data, path, onLoad, onError) {\n var content;\n var extensions = {};\n\n if (typeof data === 'string') {\n content = data;\n } else {\n var magic = THREE.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 = THREE.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. Use LegacyGLTFLoader instead.'));\n return;\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(json);\n break;\n\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension(json);\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[EXTENSIONS.MSFT_TEXTURE_DDS] = new GLTFTextureDDSExtension(json);\n break;\n\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] = new GLTFTextureTransformExtension(json);\n break;\n\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0) {\n console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n\n }\n }\n }\n\n var parser = new GLTFParser(json, extensions, {\n path: path || this.resourcePath || '',\n crossOrigin: this.crossOrigin,\n manager: this.manager\n });\n parser.parse(function (scene, scenes, cameras, animations, json) {\n var glTF = {\n scene: scene,\n scenes: scenes,\n cameras: cameras,\n animations: animations,\n asset: json.asset,\n parser: parser,\n userData: {}\n };\n addUnknownExtensionsToUserData(extensions, glTF, json);\n onLoad(glTF);\n }, 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_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n MSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n };\n /**\n * DDS Texture Extension\n *\n * Specification:\n * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n *\n */\n\n function GLTFTextureDDSExtension() {\n if (!THREE.DDSLoader) {\n throw new Error('THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader');\n }\n\n this.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n this.ddsLoader = new THREE.DDSLoader();\n }\n /**\n * Lights Extension\n *\n * Specification: PENDING\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 THREE.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 THREE.DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n case 'point':\n lightNode = new THREE.PointLight(color);\n lightNode.distance = range;\n break;\n\n case 'spot':\n lightNode = new THREE.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 }\n\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 (pending)\n *\n * PR: https://github.com/KhronosGroup/glTF/pull/1163\n */\n\n\n function GLTFMaterialsUnlitExtension(json) {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n\n GLTFMaterialsUnlitExtension.prototype.getMaterialType = function (material) {\n return THREE.MeshBasicMaterial;\n };\n\n GLTFMaterialsUnlitExtension.prototype.extendParams = function (materialParams, material, parser) {\n var pending = [];\n materialParams.color = new THREE.Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n var metallicRoughness = material.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 /* BINARY EXTENSION */\n\n\n var BINARY_EXTENSION_BUFFER_NAME = 'binary_glTF';\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: THREE.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. Use LegacyGLTFLoader instead.');\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 = THREE.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/pull/874\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 THREE.DRACOLoader.getDecoderModule();\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 if (!(attributeName in ATTRIBUTES)) continue;\n threeAttributeMap[ATTRIBUTES[attributeName]] = gltfAttributeMap[attributeName];\n }\n\n for (attributeName in primitive.attributes) {\n if (ATTRIBUTES[attributeName] !== undefined && gltfAttributeMap[attributeName] !== undefined) {\n var accessorDef = json.accessors[primitive.attributes[attributeName]];\n var componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[ATTRIBUTES[attributeName]] = componentType;\n attributeNormalizedMap[ATTRIBUTES[attributeName]] = 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:\n */\n\n\n function GLTFTextureTransformExtension(json) {\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 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', 'displacementMap', 'displacementScale', 'displacementBias', 'specularMap', 'specular', 'glossinessMap', 'glossiness', 'alphaMap', 'envMap', 'envMapIntensity', 'refractionRatio'],\n getMaterialType: function getMaterialType() {\n return THREE.ShaderMaterial;\n },\n extendParams: function extendParams(params, material, parser) {\n var pbrSpecularGlossiness = material.extensions[this.name];\n var shader = THREE.ShaderLib['standard'];\n var uniforms = THREE.UniformsUtils.clone(shader.uniforms);\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;', 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', 'material.specularColor = specularFactor.rgb;'].join('\\n');\n var fragmentShader = shader.fragmentShader.replace('uniform float roughness;', 'uniform vec3 specular;').replace('uniform float metalness;', 'uniform float glossiness;').replace('#include ', specularMapParsFragmentChunk).replace('#include ', glossinessMapParsFragmentChunk).replace('#include ', specularMapFragmentChunk).replace('#include ', glossinessMapFragmentChunk).replace('#include ', lightPhysicalFragmentChunk);\n delete uniforms.roughness;\n delete uniforms.metalness;\n delete uniforms.roughnessMap;\n delete uniforms.metalnessMap;\n uniforms.specular = {\n value: new THREE.Color().setHex(0x111111)\n };\n uniforms.glossiness = {\n value: 0.5\n };\n uniforms.specularMap = {\n value: null\n };\n uniforms.glossinessMap = {\n value: null\n };\n params.vertexShader = shader.vertexShader;\n params.fragmentShader = fragmentShader;\n params.uniforms = uniforms;\n params.defines = {\n 'STANDARD': ''\n };\n params.color = new THREE.Color(1.0, 1.0, 1.0);\n params.opacity = 1.0;\n var pending = [];\n\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n var array = pbrSpecularGlossiness.diffuseFactor;\n params.color.fromArray(array);\n params.opacity = array[3];\n }\n\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\n pending.push(parser.assignTexture(params, 'map', pbrSpecularGlossiness.diffuseTexture));\n }\n\n params.emissive = new THREE.Color(0.0, 0.0, 0.0);\n params.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n params.specular = new THREE.Color(1.0, 1.0, 1.0);\n\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n params.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\n var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(params, 'glossinessMap', specGlossMapDef));\n pending.push(parser.assignTexture(params, 'specularMap', specGlossMapDef));\n }\n\n return Promise.all(pending);\n },\n createMaterial: function createMaterial(params) {\n // setup material properties based on MeshStandardMaterial for Specular-Glossiness\n var material = new THREE.ShaderMaterial({\n defines: params.defines,\n vertexShader: params.vertexShader,\n fragmentShader: params.fragmentShader,\n uniforms: params.uniforms,\n fog: true,\n lights: true,\n opacity: params.opacity,\n transparent: params.transparent\n });\n material.isGLTFSpecularGlossinessMaterial = true;\n material.color = params.color;\n material.map = params.map === undefined ? null : params.map;\n material.lightMap = null;\n material.lightMapIntensity = 1.0;\n material.aoMap = params.aoMap === undefined ? null : params.aoMap;\n material.aoMapIntensity = 1.0;\n material.emissive = params.emissive;\n material.emissiveIntensity = 1.0;\n material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap;\n material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap;\n material.bumpScale = 1;\n material.normalMap = params.normalMap === undefined ? null : params.normalMap;\n if (params.normalScale) material.normalScale = params.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap = params.specularMap === undefined ? null : params.specularMap;\n material.specular = params.specular;\n material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap;\n material.glossiness = params.glossiness;\n material.alphaMap = null;\n material.envMap = params.envMap === undefined ? null : params.envMap;\n material.envMapIntensity = 1.0;\n material.refractionRatio = 0.98;\n material.extensions.derivatives = true;\n return material;\n },\n\n /**\n * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can\n * copy only properties it knows about or inherits, and misses many properties that would\n * normally be defined by MeshStandardMaterial.\n *\n * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of\n * loading a glTF model, but cloning later (e.g. by the user) would require these changes\n * AND also updating `.onBeforeRender` on the parent mesh.\n *\n * @param {THREE.ShaderMaterial} source\n * @return {THREE.ShaderMaterial}\n */\n cloneMaterial: function cloneMaterial(source) {\n var target = source.clone();\n target.isGLTFSpecularGlossinessMaterial = true;\n var params = this.specularGlossinessParams;\n\n for (var i = 0, il = params.length; i < il; i++) {\n target[params[i]] = source[params[i]];\n }\n\n return target;\n },\n // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer.\n refreshUniforms: function refreshUniforms(renderer, scene, camera, geometry, material, group) {\n if (material.isGLTFSpecularGlossinessMaterial !== true) {\n return;\n }\n\n var uniforms = material.uniforms;\n var defines = material.defines;\n uniforms.opacity.value = material.opacity;\n uniforms.diffuse.value.copy(material.color);\n uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n uniforms.map.value = material.map;\n uniforms.specularMap.value = material.specularMap;\n uniforms.alphaMap.value = material.alphaMap;\n uniforms.lightMap.value = material.lightMap;\n uniforms.lightMapIntensity.value = material.lightMapIntensity;\n uniforms.aoMap.value = material.aoMap;\n uniforms.aoMapIntensity.value = material.aoMapIntensity; // uv repeat and offset setting priorities\n // 1. color map\n // 2. specular map\n // 3. normal map\n // 4. bump map\n // 5. alpha map\n // 6. emissive map\n\n var uvScaleMap;\n\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.specularMap) {\n uvScaleMap = material.specularMap;\n } else if (material.displacementMap) {\n uvScaleMap = material.displacementMap;\n } else if (material.normalMap) {\n uvScaleMap = material.normalMap;\n } else if (material.bumpMap) {\n uvScaleMap = material.bumpMap;\n } else if (material.glossinessMap) {\n uvScaleMap = material.glossinessMap;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n } else if (material.emissiveMap) {\n uvScaleMap = material.emissiveMap;\n }\n\n if (uvScaleMap !== undefined) {\n // backwards compatibility\n if (uvScaleMap.isWebGLRenderTarget) {\n uvScaleMap = uvScaleMap.texture;\n }\n\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n\n if (material.envMap) {\n uniforms.envMap.value = material.envMap;\n uniforms.envMapIntensity.value = material.envMapIntensity; // don't flip CubeTexture envMaps, flip everything else:\n // WebGLRenderTargetCube will be flipped for backwards compatibility\n // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\n uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? -1 : 1;\n uniforms.reflectivity.value = material.reflectivity;\n uniforms.refractionRatio.value = material.refractionRatio;\n uniforms.maxMipLevel.value = renderer.properties.get(material.envMap).__maxMipLevel;\n }\n\n uniforms.specular.value.copy(material.specular);\n uniforms.glossiness.value = material.glossiness;\n uniforms.glossinessMap.value = material.glossinessMap;\n uniforms.emissiveMap.value = material.emissiveMap;\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.normalMap.value = material.normalMap;\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n\n if (uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined) {\n defines.USE_GLOSSINESSMAP = ''; // set USE_ROUGHNESSMAP to enable vUv\n\n defines.USE_ROUGHNESSMAP = '';\n }\n\n if (uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined) {\n delete defines.USE_GLOSSINESSMAP;\n delete defines.USE_ROUGHNESSMAP;\n }\n }\n };\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 THREE.Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n\n GLTFCubicSplineInterpolant.prototype = Object.create(THREE.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_TYPE = {\n 5126: Number,\n //35674: THREE.Matrix2,\n 35675: THREE.Matrix3,\n 35676: THREE.Matrix4,\n 35664: THREE.Vector2,\n 35665: THREE.Vector3,\n 35666: THREE.Vector4,\n 35678: THREE.Texture\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: THREE.NearestFilter,\n 9729: THREE.LinearFilter,\n 9984: THREE.NearestMipMapNearestFilter,\n 9985: THREE.LinearMipMapNearestFilter,\n 9986: THREE.NearestMipMapLinearFilter,\n 9987: THREE.LinearMipMapLinearFilter\n };\n var WEBGL_WRAPPINGS = {\n 33071: THREE.ClampToEdgeWrapping,\n 33648: THREE.MirroredRepeatWrapping,\n 10497: THREE.RepeatWrapping\n };\n var WEBGL_SIDES = {\n 1028: THREE.BackSide,\n // Culling front\n 1029: THREE.FrontSide // Culling back\n //1032: THREE.NoSide // Culling front and back, what to do?\n\n };\n var WEBGL_DEPTH_FUNCS = {\n 512: THREE.NeverDepth,\n 513: THREE.LessDepth,\n 514: THREE.EqualDepth,\n 515: THREE.LessEqualDepth,\n 516: THREE.GreaterEqualDepth,\n 517: THREE.NotEqualDepth,\n 518: THREE.GreaterEqualDepth,\n 519: THREE.AlwaysDepth\n };\n var WEBGL_BLEND_EQUATIONS = {\n 32774: THREE.AddEquation,\n 32778: THREE.SubtractEquation,\n 32779: THREE.ReverseSubtractEquation\n };\n var WEBGL_BLEND_FUNCS = {\n 0: THREE.ZeroFactor,\n 1: THREE.OneFactor,\n 768: THREE.SrcColorFactor,\n 769: THREE.OneMinusSrcColorFactor,\n 770: THREE.SrcAlphaFactor,\n 771: THREE.OneMinusSrcAlphaFactor,\n 772: THREE.DstAlphaFactor,\n 773: THREE.OneMinusDstAlphaFactor,\n 774: THREE.DstColorFactor,\n 775: THREE.OneMinusDstColorFactor,\n 776: THREE.SrcAlphaSaturateFactor // The followings are not supported by Three.js yet\n //32769: CONSTANT_COLOR,\n //32770: ONE_MINUS_CONSTANT_COLOR,\n //32771: CONSTANT_ALPHA,\n //32772: ONE_MINUS_CONSTANT_COLOR\n\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 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: THREE.InterpolateSmooth,\n // We use custom interpolation GLTFCubicSplineInterpolation for CUBICSPLINE.\n // KeyframeTrack.optimize() can't handle glTF Cubic Spline output values layout,\n // using THREE.InterpolateSmooth for KeyframeTrack instantiation to prevent optimization.\n // See KeyframeTrack.optimize() for the detail.\n LINEAR: THREE.InterpolateLinear,\n STEP: THREE.InterpolateDiscrete\n };\n var STATES_ENABLES = {\n 2884: 'CULL_FACE',\n 2929: 'DEPTH_TEST',\n 3042: 'BLEND',\n 3089: 'SCISSOR_TEST',\n 32823: 'POLYGON_OFFSET_FILL',\n 32926: 'SAMPLE_ALPHA_TO_COVERAGE'\n };\n var ALPHA_MODES = {\n OPAQUE: 'OPAQUE',\n MASK: 'MASK',\n BLEND: 'BLEND'\n };\n var MIME_TYPE_FORMATS = {\n 'image/png': THREE.RGBAFormat,\n 'image/jpeg': THREE.RGBFormat\n };\n /* UTILITY FUNCTIONS */\n\n function resolveURL(url, path) {\n // Invalid URL\n if (typeof url !== 'string' || url === '') return ''; // Absolute URL http://,https://,//\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() {\n return new THREE.MeshStandardMaterial({\n color: 0xFFFFFF,\n emissive: 0x000000,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: THREE.FrontSide\n });\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 {THREE.Object3D|THREE.Material|THREE.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.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 {THREE.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 // TODO: Error-prone use of a callback inside a loop.\n var accessor = target.POSITION !== undefined ? parser.getDependency('accessor', target.POSITION).then(function (accessor) {\n // Cloning not to pollute original accessor below\n return cloneBufferAttribute(accessor);\n }) : geometry.attributes.position;\n pendingPositionAccessors.push(accessor);\n }\n\n if (hasMorphNormal) {\n // TODO: Error-prone use of a callback inside a loop.\n var accessor = target.NORMAL !== undefined ? parser.getDependency('accessor', target.NORMAL).then(function (accessor) {\n return cloneBufferAttribute(accessor);\n }) : geometry.attributes.normal;\n pendingNormalAccessors.push(accessor);\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\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n var attributeName = 'morphTarget' + i;\n\n if (hasMorphPosition) {\n // Three.js morph position is absolute value. The formula is\n // basePosition\n // + weight0 * ( morphPosition0 - basePosition )\n // + weight1 * ( morphPosition1 - basePosition )\n // ...\n // while the glTF one is relative\n // basePosition\n // + weight0 * glTFmorphPosition0\n // + weight1 * glTFmorphPosition1\n // ...\n // then we need to convert from relative to absolute here.\n if (target.POSITION !== undefined) {\n var positionAttribute = morphPositions[i];\n positionAttribute.name = attributeName;\n var position = geometry.attributes.position;\n\n for (var j = 0, jl = positionAttribute.count; j < jl; j++) {\n positionAttribute.setXYZ(j, positionAttribute.getX(j) + position.getX(j), positionAttribute.getY(j) + position.getY(j), positionAttribute.getZ(j) + position.getZ(j));\n }\n }\n }\n\n if (hasMorphNormal) {\n // see target.POSITION's comment\n if (target.NORMAL !== undefined) {\n var normalAttribute = morphNormals[i];\n normalAttribute.name = attributeName;\n var normal = geometry.attributes.normal;\n\n for (var j = 0, jl = normalAttribute.count; j < jl; j++) {\n normalAttribute.setXYZ(j, normalAttribute.getX(j) + normal.getX(j), normalAttribute.getY(j) + normal.getY(j), normalAttribute.getZ(j) + normal.getZ(j));\n }\n }\n }\n }\n\n if (hasMorphPosition) geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals;\n return geometry;\n });\n }\n /**\n * @param {THREE.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 isPrimitiveEqual(a, b) {\n var dracoExtA = a.extensions ? a.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION] : undefined;\n var dracoExtB = b.extensions ? b.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION] : undefined;\n\n if (dracoExtA && dracoExtB) {\n if (dracoExtA.bufferView !== dracoExtB.bufferView) return false;\n return isObjectEqual(dracoExtA.attributes, dracoExtB.attributes);\n }\n\n if (a.indices !== b.indices) {\n return false;\n }\n\n return isObjectEqual(a.attributes, b.attributes);\n }\n\n function isObjectEqual(a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) return false;\n\n for (var key in a) {\n if (a[key] !== b[key]) return false;\n }\n\n return true;\n }\n\n function isArrayEqual(a, b) {\n if (a.length !== b.length) return false;\n\n for (var i = 0, il = a.length; i < il; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n function getCachedGeometry(cache, newPrimitive) {\n for (var i = 0, il = cache.length; i < il; i++) {\n var cached = cache[i];\n if (isPrimitiveEqual(cached.primitive, newPrimitive)) return cached.promise;\n }\n\n return null;\n }\n\n function getCachedCombinedGeometry(cache, geometries) {\n for (var i = 0, il = cache.length; i < il; i++) {\n var cached = cache[i];\n if (isArrayEqual(geometries, cached.baseGeometries)) return cached.geometry;\n }\n\n return null;\n }\n\n function getCachedMultiPassGeometry(cache, geometry, primitives) {\n for (var i = 0, il = cache.length; i < il; i++) {\n var cached = cache[i];\n if (geometry === cached.baseGeometry && isArrayEqual(primitives, cached.primitives)) return cached.geometry;\n }\n\n return null;\n }\n\n function cloneBufferAttribute(attribute) {\n if (attribute.isInterleavedBufferAttribute) {\n var count = attribute.count;\n var itemSize = attribute.itemSize;\n var array = attribute.array.slice(0, count * itemSize);\n\n for (var i = 0, j = 0; i < count; ++i) {\n array[j++] = attribute.getX(i);\n if (itemSize >= 2) array[j++] = attribute.getY(i);\n if (itemSize >= 3) array[j++] = attribute.getZ(i);\n if (itemSize >= 4) array[j++] = attribute.getW(i);\n }\n\n return new THREE.BufferAttribute(array, itemSize, attribute.normalized);\n }\n\n return attribute.clone();\n }\n /**\n * Checks if we can build a single Mesh with MultiMaterial from multiple primitives.\n * Returns true if all primitives use the same attributes/morphAttributes/mode\n * and also have index. Otherwise returns false.\n *\n * @param {Array} primitives\n * @return {Boolean}\n */\n\n\n function isMultiPassGeometry(primitives) {\n if (primitives.length < 2) return false;\n var primitive0 = primitives[0];\n var targets0 = primitive0.targets || [];\n if (primitive0.indices === undefined) return false;\n\n for (var i = 1, il = primitives.length; i < il; i++) {\n var primitive = primitives[i];\n if (primitive0.mode !== primitive.mode) return false;\n if (primitive.indices === undefined) return false;\n if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) return false;\n if (!isObjectEqual(primitive0.attributes, primitive.attributes)) return false;\n var targets = primitive.targets || [];\n if (targets0.length !== targets.length) return false;\n\n for (var j = 0, jl = targets0.length; j < jl; j++) {\n if (!isObjectEqual(targets0[j], targets[j])) return false;\n }\n }\n\n return true;\n }\n /* GLTF PARSER */\n\n\n function GLTFParser(json, extensions, options) {\n this.json = json || {};\n this.extensions = extensions || {};\n this.options = options || {}; // loader object cache\n\n this.cache = new GLTFRegistry(); // BufferGeometry caching\n\n this.primitiveCache = [];\n this.multiplePrimitivesCache = [];\n this.multiPassGeometryCache = [];\n this.textureLoader = new THREE.TextureLoader(this.options.manager);\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.fileLoader = new THREE.FileLoader(this.options.manager);\n this.fileLoader.setResponseType('arraybuffer');\n }\n\n GLTFParser.prototype.parse = function (onLoad, onError) {\n var json = this.json; // Clear the loader cache\n\n this.cache.removeAll(); // Mark the special nodes/meshes in json for efficient parse\n\n this.markDefs(); // Fire the callback on complete\n\n this.getMultiDependencies(['scene', 'animation', 'camera']).then(function (dependencies) {\n var scenes = dependencies.scenes || [];\n var scene = scenes[json.scene || 0];\n var animations = dependencies.animations || [];\n var cameras = dependencies.cameras || [];\n onLoad(scene, scenes, cameras, animations, json);\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 || [];\n var meshReferences = {};\n var meshUses = {}; // 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 } // Meshes can (and should) be reused by multiple nodes in a glTF asset. To\n // avoid having more than one THREE.Mesh with the same name, count\n // references and rename instances below.\n //\n // Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\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 if (meshReferences[nodeDef.mesh] === undefined) {\n meshReferences[nodeDef.mesh] = meshUses[nodeDef.mesh] = 0;\n }\n\n meshReferences[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 if (nodeDef.skin !== undefined) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n }\n\n this.json.meshReferences = meshReferences;\n this.json.meshUses = meshUses;\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.loadMesh(index);\n break;\n\n case 'accessor':\n dependency = this.loadAccessor(index);\n break;\n\n case 'bufferView':\n dependency = this.loadBufferView(index);\n break;\n\n case 'buffer':\n dependency = this.loadBuffer(index);\n break;\n\n case 'material':\n dependency = this.loadMaterial(index);\n break;\n\n case 'texture':\n dependency = this.loadTexture(index);\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 * Requests all multiple dependencies of the specified types asynchronously, with caching.\n * @param {Array} types\n * @return {Promise>>}\n */\n\n\n GLTFParser.prototype.getMultiDependencies = function (types) {\n var results = {};\n var pending = [];\n\n for (var i = 0, il = types.length; i < il; i++) {\n var type = types[i];\n var value = this.getDependencies(type); // TODO: Error-prone use of a callback inside a loop.\n\n value = value.then(function (key, value) {\n results[key] = value;\n }.bind(this, type + (type === 'mesh' ? 'es' : 's')));\n pending.push(value);\n }\n\n return Promise.all(pending).then(function () {\n return results;\n });\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 var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType;\n var ib = parser.cache.get(ibCacheKey);\n\n if (!ib) {\n // Use the full buffer if it's interleaved.\n array = new TypedArray(bufferView); // Integer parameters to IB/IBA are in array elements, not bytes.\n\n ib = new THREE.InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n\n bufferAttribute = new THREE.InterleavedBufferAttribute(ib, itemSize, byteOffset / 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 THREE.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.setArray(bufferAttribute.array.slice());\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 textureLoader = this.textureLoader;\n var URL = window.URL || window.webkitURL;\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 sourceURI = source.uri;\n var isObjectURL = 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 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 // Load Texture resource.\n var loader = THREE.Loader.Handlers.get(sourceURI);\n\n if (!loader) {\n loader = textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS] ? parser.extensions[EXTENSIONS.MSFT_TEXTURE_DDS].ddsLoader : textureLoader;\n }\n\n return new Promise(function (resolve, reject) {\n loader.load(resolveURL(sourceURI, options.path), resolve, 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 !== undefined) texture.name = textureDef.name; // Ignore unknown mime types, like DDS files.\n\n if (source.mimeType in MIME_TYPE_FORMATS) {\n texture.format = MIME_TYPE_FORMATS[source.mimeType];\n }\n\n var samplers = json.samplers || {};\n var sampler = samplers[textureDef.sampler] || {};\n texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || THREE.LinearFilter;\n texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || THREE.LinearMipMapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || THREE.RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || THREE.RepeatWrapping;\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 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 texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n }\n }\n\n materialParams[mapName] = texture;\n });\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(materialDef);\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(materialDef);\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 materialType = THREE.MeshStandardMaterial;\n var metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new THREE.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\n if (materialDef.doubleSided === true) {\n materialParams.side = THREE.DoubleSide;\n }\n\n var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true;\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 !== THREE.MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'normalMap', materialDef.normalTexture));\n materialParams.normalScale = new THREE.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 !== THREE.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 !== THREE.MeshBasicMaterial) {\n materialParams.emissive = new THREE.Color().fromArray(materialDef.emissiveFactor);\n }\n\n if (materialDef.emissiveTexture !== undefined && materialType !== THREE.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 === THREE.ShaderMaterial) {\n material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n } else {\n material = new materialType(materialParams);\n }\n\n if (materialDef.name !== undefined) material.name = materialDef.name; // Normal map textures use OpenGL conventions:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture\n\n if (material.normalScale) {\n material.normalScale.y = -material.normalScale.y;\n } // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\n\n if (material.map) material.map.encoding = THREE.sRGBEncoding;\n if (material.emissiveMap) material.emissiveMap.encoding = THREE.sRGBEncoding;\n if (material.specularMap) material.specularMap.encoding = THREE.sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n };\n /**\n * @param {THREE.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.addAttribute(attributeName, accessor);\n });\n }\n\n for (var gltfAttributeName in attributes) {\n var threeAttributeName = ATTRIBUTES[gltfAttributeName];\n if (!threeAttributeName) continue; // 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 return Promise.all(pending).then(function () {\n return primitiveDef.targets !== undefined ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n * If we can build a single BufferGeometry with .groups from multiple primitives, returns one BufferGeometry.\n * Otherwise, returns BufferGeometries without .groups as many as 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 var isMultiPass = isMultiPassGeometry(primitives);\n var originalPrimitives;\n\n if (isMultiPass) {\n originalPrimitives = primitives; // save original primitives and use later\n // We build a single BufferGeometry with .groups from multiple primitives\n // because all primitives share the same attributes/morph/mode and have indices.\n\n primitives = [primitives[0]]; // Sets .groups and combined indices to a geometry later in this method.\n }\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]; // See if we've already created this geometry\n\n var cached = getCachedGeometry(cache, primitive);\n\n if (cached) {\n // Use the cached geometry if it exists\n pending.push(cached);\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 THREE.BufferGeometry(), primitive, parser);\n } // Cache this geometry\n\n\n cache.push({\n primitive: primitive,\n promise: geometryPromise\n });\n pending.push(geometryPromise);\n }\n }\n\n return Promise.all(pending).then(function (geometries) {\n if (isMultiPass) {\n var baseGeometry = geometries[0]; // See if we've already created this combined geometry\n\n var cache = parser.multiPassGeometryCache;\n var cached = getCachedMultiPassGeometry(cache, baseGeometry, originalPrimitives);\n if (cached !== null) return [cached.geometry]; // Cloning geometry because of index override.\n // Attributes can be reused so cloning by myself here.\n\n var geometry = new THREE.BufferGeometry();\n geometry.name = baseGeometry.name;\n geometry.userData = baseGeometry.userData;\n\n for (var key in baseGeometry.attributes) {\n geometry.addAttribute(key, baseGeometry.attributes[key]);\n }\n\n for (var key in baseGeometry.morphAttributes) {\n geometry.morphAttributes[key] = baseGeometry.morphAttributes[key];\n }\n\n var pendingIndices = [];\n\n for (var i = 0, il = originalPrimitives.length; i < il; i++) {\n pendingIndices.push(parser.getDependency('accessor', originalPrimitives[i].indices));\n }\n\n return Promise.all(pendingIndices).then(function (accessors) {\n var indices = [];\n var offset = 0;\n\n for (var i = 0, il = originalPrimitives.length; i < il; i++) {\n var accessor = accessors[i];\n\n for (var j = 0, jl = accessor.count; j < jl; j++) {\n indices.push(accessor.array[j]);\n }\n\n geometry.addGroup(offset, accessor.count, i);\n offset += accessor.count;\n }\n\n geometry.setIndex(indices);\n cache.push({\n geometry: geometry,\n baseGeometry: baseGeometry,\n primitives: originalPrimitives\n });\n return [geometry];\n });\n } else if (geometries.length > 1 && THREE.BufferGeometryUtils !== undefined) {\n // Tries to merge geometries with BufferGeometryUtils if possible\n for (var i = 1, il = primitives.length; i < il; i++) {\n // can't merge if draw mode is different\n if (primitives[0].mode !== primitives[i].mode) return geometries;\n } // See if we've already created this combined geometry\n\n\n var cache = parser.multiplePrimitivesCache;\n var cached = getCachedCombinedGeometry(cache, geometries);\n\n if (cached) {\n if (cached.geometry !== null) return [cached.geometry];\n } else {\n var geometry = THREE.BufferGeometryUtils.mergeBufferGeometries(geometries, true);\n cache.push({\n geometry: geometry,\n baseGeometries: geometries\n });\n if (geometry !== null) return [geometry];\n }\n }\n\n return geometries;\n });\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 extensions = this.extensions;\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.getDependency('material', primitives[i].material);\n pending.push(material);\n }\n\n return Promise.all(pending).then(function (originalMaterials) {\n return parser.loadGeometries(primitives).then(function (geometries) {\n var isMultiMaterial = geometries.length === 1 && geometries[0].groups.length > 0;\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 = isMultiMaterial ? originalMaterials : originalMaterials[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 THREE.SkinnedMesh(geometry, material) : new THREE.Mesh(geometry, material);\n if (mesh.isSkinnedMesh === true) mesh.normalizeSkinWeights(); // #15319\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.drawMode = THREE.TriangleStripDrawMode;\n } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.drawMode = THREE.TriangleFanDrawMode;\n }\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new THREE.LineSegments(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new THREE.Line(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new THREE.LineLoop(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new THREE.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 meshes.push(mesh); // 2. update Material depending on Mesh and BufferGeometry\n\n var materials = isMultiMaterial ? mesh.material : [mesh.material];\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 for (var j = 0, jl = materials.length; j < jl; j++) {\n var material = materials[j];\n\n if (mesh.isPoints) {\n var cacheKey = 'PointsMaterial:' + material.uuid;\n var pointsMaterial = parser.cache.get(cacheKey);\n\n if (!pointsMaterial) {\n pointsMaterial = new THREE.PointsMaterial();\n THREE.Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.lights = false; // PointsMaterial doesn't support lights yet\n\n parser.cache.add(cacheKey, pointsMaterial);\n }\n\n material = pointsMaterial;\n } else if (mesh.isLine) {\n var cacheKey = 'LineBasicMaterial:' + material.uuid;\n var lineMaterial = parser.cache.get(cacheKey);\n\n if (!lineMaterial) {\n lineMaterial = new THREE.LineBasicMaterial();\n THREE.Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n lineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet\n\n parser.cache.add(cacheKey, lineMaterial);\n }\n\n material = lineMaterial;\n } // Clone the material if it will be modified\n\n\n if (useVertexColors || useFlatShading || useSkinning || useMorphTargets) {\n var cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n if (material.isGLTFSpecularGlossinessMaterial) cacheKey += 'specular-glossiness:';\n if (useSkinning) cacheKey += 'skinning:';\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 = parser.cache.get(cacheKey);\n\n if (!cachedMaterial) {\n cachedMaterial = material.isGLTFSpecularGlossinessMaterial ? extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].cloneMaterial(material) : material.clone();\n if (useSkinning) cachedMaterial.skinning = true;\n if (useVertexColors) cachedMaterial.vertexColors = THREE.VertexColors;\n if (useFlatShading) cachedMaterial.flatShading = true;\n if (useMorphTargets) cachedMaterial.morphTargets = true;\n if (useMorphNormals) cachedMaterial.morphNormals = true;\n parser.cache.add(cacheKey, cachedMaterial);\n }\n\n material = cachedMaterial;\n }\n\n materials[j] = material; // workarounds for mesh and geometry\n\n if (material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined) {\n console.log('THREE.GLTFLoader: Duplicating UVs to support aoMap.');\n geometry.addAttribute('uv2', new THREE.BufferAttribute(geometry.attributes.uv.array, 2));\n }\n\n if (material.isGLTFSpecularGlossinessMaterial) {\n // for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update\n mesh.onBeforeRender = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].refreshUniforms;\n }\n }\n\n mesh.material = isMultiMaterial ? materials : materials[0];\n }\n\n if (meshes.length === 1) {\n return meshes[0];\n }\n\n var group = new THREE.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 /**\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 THREE.PerspectiveCamera(THREE.Math.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n } else if (cameraDef.type === 'orthographic') {\n camera = new THREE.OrthographicCamera(params.xmag / -2, params.xmag / 2, params.ymag / 2, params.ymag / -2, params.znear, params.zfar);\n }\n\n if (cameraDef.name !== undefined) 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 = THREE.NumberKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = THREE.QuaternionKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = THREE.VectorKeyframeTrack;\n break;\n }\n\n var targetName = node.name ? node.name : node.uuid;\n var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : THREE.InterpolateLinear;\n var targetNames = [];\n\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n // node can be THREE.Group here but\n // PATH_PROPERTIES.weights(morphTargetInfluences) should be\n // the property of a mesh object under group.\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 } // KeyframeTrack.optimize() will modify given 'times' and 'values'\n // buffers before creating a truncated copy to keep. Because buffers may\n // be reused by other tracks, make copies here.\n\n\n for (var j = 0, jl = targetNames.length; j < jl; j++) {\n var track = new TypedKeyframeTrack(targetNames[j] + '.' + PATH_PROPERTIES[target.path], THREE.AnimationUtils.arraySlice(inputAccessor.array, 0), THREE.AnimationUtils.arraySlice(outputAccessor.array, 0), interpolation); // Here is the trick to enable custom interpolation.\n // Overrides .createInterpolant in a factory method which creates custom interpolation.\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 }; // Workaround, provide an alternate way to know if the interpolant type is cubis spline to track.\n // track.getInterpolation() doesn't return valid value for custom interpolant.\n\n\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n }\n\n tracks.push(track);\n }\n }\n\n var name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex;\n return new THREE.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 meshReferences = json.meshReferences;\n var meshUses = json.meshUses;\n var nodeDef = json.nodes[nodeIndex];\n return function () {\n // .isBone isn't in glTF spec. See .markDefs\n if (nodeDef.isBone === true) {\n return Promise.resolve(new THREE.Bone());\n } else if (nodeDef.mesh !== undefined) {\n return parser.getDependency('mesh', nodeDef.mesh).then(function (mesh) {\n var node;\n\n if (meshReferences[nodeDef.mesh] > 1) {\n var instanceNum = meshUses[nodeDef.mesh]++;\n node = mesh.clone();\n node.name += '_instance_' + instanceNum; // onBeforeRender copy for Specular-Glossiness\n\n node.onBeforeRender = mesh.onBeforeRender;\n\n for (var i = 0, il = node.children.length; i < il; i++) {\n node.children[i].name += '_instance_' + instanceNum;\n node.children[i].onBeforeRender = mesh.children[i].onBeforeRender;\n }\n } else {\n node = mesh;\n } // 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 } else if (nodeDef.camera !== undefined) {\n return parser.getDependency('camera', nodeDef.camera);\n } else if (nodeDef.extensions && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL] && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light !== undefined) {\n return parser.getDependency('light', nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light);\n } else {\n return Promise.resolve(new THREE.Object3D());\n }\n }().then(function (node) {\n if (nodeDef.name !== undefined) {\n node.name = THREE.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 THREE.Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix(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 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 var meshes = node.isGroup === true ? node.children : [node];\n\n for (var i = 0, il = meshes.length; i < il; i++) {\n var mesh = meshes[i];\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 THREE.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 THREE.Skeleton(bones, boneInverses), mesh.matrixWorld);\n }\n\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;\n var scene = new THREE.Scene();\n if (sceneDef.name !== undefined) 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\nmodule.exports = _GLTFLoader;","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import React from 'react'\nimport PropTypes from 'prop-types'\nimport * as THREE from 'three'\nimport GLTFLoader from 'three-gltf-loader'\nimport styled from 'styled-components'\n// import FXAAShader from 'three-shader-fxaa'\n\nimport EffectComposer, {\n RenderPass,\n // ShaderPass,\n} from '@johh/three-effectcomposer'\nimport GlitchPass from '../passes/GlitchPass'\n\nconst Container = styled.div`\n canvas {\n width: 100% !important;\n height: auto !important;\n position: absolute;\n bottom: 0;\n }\n`\n\nexport default class ThreeModelView extends React.PureComponent {\n static propTypes = {\n localOnly: PropTypes.bool,\n src: PropTypes.string.isRequired,\n lightPos: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n z: PropTypes.number.isRequired,\n }),\n cameraPos: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n z: PropTypes.number.isRequired,\n }),\n cameraPosResponsive: PropTypes.object,\n rotationOffset: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n }),\n rotationSpeed: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n }),\n meshIndex: PropTypes.number,\n partyModeEnabled: PropTypes.bool,\n onPartyModeEngaged: PropTypes.func,\n renderSize: PropTypes.shape({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n }),\n applyGlitch: PropTypes.bool,\n }\n\n static defaultProps = {\n cameraPos: {\n x: -5,\n y: 2.3,\n z: 10,\n },\n lightPos: {\n x: 0,\n y: 0,\n z: 30,\n },\n rotationOffset: {\n x: 0,\n y: -0.3,\n },\n rotationSpeed: {\n x: 0.3,\n y: 0.5,\n },\n meshIndex: 2,\n partyModeEnabled: false,\n onPartyModeEngaged: () => {},\n cameraPosResponsive: {},\n applyGlitch: true,\n }\n\n constructor(props) {\n super(props)\n this.animate = this.animate.bind(this)\n this.onMouseMove = this.onMouseMove.bind(this)\n this.onWidowResize = this.onWidowResize.bind(this)\n this.disablePartyMode = this.disablePartyMode.bind(this)\n this.onDeviceOrientation = this.onDeviceOrientation.bind(this)\n\n this.xRotation = 0\n this.yRotation = 0\n this.prevMeshXRotation = 0\n this.prevMeshYRotation = 0\n\n this.partyCount = 0\n this.isUp = false\n this.partyModeUp = false\n }\n\n get mouseListener() {\n if (this.props.localOnly) {\n return this.root\n } else {\n return window\n }\n }\n\n componentDidMount() {\n /* needed for FXAA shader */\n window.THREE = THREE\n\n const { src, lightPos, meshIndex, renderSize } = this.props\n\n let width = this.root.clientWidth\n let height = this.root.clientHeight\n if (renderSize) {\n width = renderSize.width\n height = renderSize.height\n }\n\n const clock = new THREE.Clock()\n this.clock = clock\n\n this.scene = new THREE.Scene()\n this.camera = new THREE.PerspectiveCamera(50, width / height, 0.1, 1000)\n\n const light = new THREE.PointLight('#b6c9c0', 1, 100)\n light.position.set(lightPos.x, lightPos.y, lightPos.z)\n this.scene.add(light)\n\n const ambientLight = new THREE.AmbientLight(0x404040)\n this.scene.add(ambientLight)\n\n const rockLight1 = new THREE.SpotLight(0xf441df, 0, 1000, Math.PI / 40, 0.5)\n rockLight1.position.set(50, 50, 30)\n\n const rockLight2 = new THREE.SpotLight(0x419df4, 0, 1000, Math.PI / 40, 0.5)\n rockLight2.position.set(-50, 50, 30)\n\n const rockLight3 = new THREE.SpotLight(0xff352b, 0, 1000, Math.PI / 40, 0.5)\n rockLight3.position.set(0, -50, 0)\n\n this.rockLight1 = rockLight1\n this.rockLight2 = rockLight2\n this.rockLight3 = rockLight3\n\n this.scene.add(rockLight1)\n this.scene.add(rockLight2)\n this.scene.add(rockLight3)\n\n // this.scene.fog = new THREE.Fog('#333333', 8, 12)\n\n const loader = new GLTFLoader()\n loader.load(\n src,\n gltf => {\n this.mesh = gltf.scene.children[meshIndex]\n\n this.mesh.material = new THREE.MeshLambertMaterial({\n color: '#5e5e5e',\n })\n\n this.scene.add(this.mesh)\n },\n undefined,\n error => {\n console.error(error)\n }\n )\n\n this.setCameraPos()\n\n this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true })\n this.renderer.setClearColor(0x000000, 0)\n this.renderer.setSize(width, height)\n\n this.composer = new EffectComposer(this.renderer)\n\n const renderPass = new RenderPass(this.scene, this.camera)\n this.composer.addPass(renderPass)\n\n this.glitchPass = new GlitchPass({\n applyGlitch: this.props.applyGlitch,\n showNoise: false,\n frequencyDivider: 10,\n })\n this.glitchPass.renderToScreen = true\n this.composer.addPass(this.glitchPass)\n\n // const resolution = new THREE.Vector2(height, width)\n // const fxaaShader = new ShaderPass(FXAAShader({ resolution }))\n // fxaaShader.renderToScreen = true\n // this.composer.addPass(fxaaShader)\n\n this.root.appendChild(this.renderer.domElement)\n\n this.mouseListener.addEventListener('mousemove', this.onMouseMove)\n window.addEventListener('resize', this.onWidowResize, false)\n window.addEventListener(\n 'deviceorientation',\n this.onDeviceOrientation,\n false\n )\n\n this.start()\n }\n\n setCameraPos() {\n const { cameraPos, cameraPosResponsive } = this.props\n const width = this.root.clientWidth\n let currCameraPos = cameraPos\n for (const breakPoint in cameraPosResponsive) {\n if (width >= parseFloat(breakPoint)) {\n currCameraPos = cameraPosResponsive[breakPoint]\n }\n }\n this.camera.position.x = currCameraPos.x\n this.camera.position.y = currCameraPos.y\n this.camera.position.z = currCameraPos.z\n }\n\n enablePartyMode() {\n this.rockLight1.intensity = 0\n this.rockLight2.intensity = 0\n this.rockLight3.intensity = 0\n }\n\n disablePartyMode() {\n this.rockLight1.intensity = 0\n this.rockLight2.intensity = 0\n this.rockLight3.intensity = 0\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.partyModeEnabled && this.props.partyModeEnabled) {\n this.enablePartyMode()\n this.mouseListener.removeEventListener('mousemove', this.onMouseMove)\n window.removeEventListener('deviceorientation', this.onDeviceOrientation)\n } else {\n this.disablePartyMode()\n }\n }\n\n componentWillUnmount() {\n this.stop()\n this.root.removeChild(this.renderer.domElement)\n this.mouseListener.removeEventListener('mousemove', this.onMouseMove)\n window.removeEventListener('resize', this.onWidowResize)\n window.removeEventListener('deviceorientation', this.onDeviceOrientation)\n }\n\n renderScene() {\n const dimensions = this.root.getBoundingClientRect()\n const yOffset = dimensions.y + dimensions.height\n if (yOffset > 0 && this.root.offsetParent !== null) {\n this.composer.render()\n }\n }\n\n animate() {\n const { rotationOffset, rotationSpeed } = this.props\n if (this.mesh) {\n if (this.deviceRotationX && !this.props.partyModeEnabled) {\n this.mesh.rotation.y =\n (this.deviceRotationY * 3.3 - 1.6) * rotationSpeed.y +\n rotationOffset.y\n this.mesh.rotation.x =\n (this.deviceRotationX * 3.6 - 1.6) * rotationSpeed.x +\n rotationOffset.x\n } else {\n this.mesh.rotation.y =\n this.yRotation * rotationSpeed.y + rotationOffset.y\n this.mesh.rotation.x =\n this.xRotation * rotationSpeed.x + rotationOffset.x\n }\n\n if (\n this.prevMeshXRotation !== this.mesh.rotation.x ||\n this.prevMeshYRotation !== this.mesh.rotation.y\n ) {\n this.partyCount += 0.04\n }\n\n this.prevMeshXRotation = this.mesh.rotation.x\n this.prevMeshYRotation = this.mesh.rotation.y\n\n if (this.partyCount > 5) {\n if (!this.props.partyModeEnabled) {\n this.partyCount = 0\n this.props.onPartyModeEngaged()\n }\n }\n }\n\n this.partyCount -= 0.0001 * this.clock.getDelta()\n if (this.partyCount < 0) {\n this.partyCount = 0\n }\n\n if (this.props.partyModeEnabled) {\n // const intensityChange = 0.7\n // if (this.rockLight1) {\n // if (this.goingUp) {\n // this.rockLight1.intensity += intensityChange\n // this.rockLight2.intensity += intensityChange\n // this.rockLight3.intensity += intensityChange\n // } else {\n // this.rockLight1.intensity -= intensityChange\n // this.rockLight2.intensity -= intensityChange\n // this.rockLight3.intensity -= intensityChange\n // }\n // }\n\n if (this.rockLight1.intensity > 7) {\n this.goingUp = false\n } else if (this.rockLight1.intensity < 2) {\n this.goingUp = true\n }\n\n if (this.xRotation < 0) {\n this.partyModeUp = false\n } else if (this.xRotation > 0.9) {\n this.partyModeUp = true\n }\n\n if (this.partyModeUp) {\n this.xRotation -= 0.01\n } else {\n this.xRotation += 0.01\n }\n }\n this.renderScene()\n this.frameId = window.requestAnimationFrame(this.animate)\n }\n\n start() {\n if (!this.frameId) {\n this.frameId = window.requestAnimationFrame(this.animate)\n }\n }\n\n stop() {\n window.cancelAnimationFrame(this.frameId)\n this.frameId = null\n }\n\n onMouseMove(e) {\n this.yRotation = e.clientX / this.root.clientWidth\n this.xRotation = e.clientY / this.root.clientHeight\n }\n\n onDeviceOrientation(e) {\n this.deviceRotationZ = e.alpha / 360\n this.deviceRotationX = (e.beta + 180) / 360\n this.deviceRotationY = (e.gamma + 90) / 180\n }\n\n onWidowResize() {\n if (!this.props.renderSize) {\n const width = this.root.clientWidth\n const height = this.root.clientHeight\n\n this.setCameraPos()\n\n this.camera.aspect = width / height\n this.camera.updateProjectionMatrix()\n this.renderer.setSize(width, height)\n }\n }\n\n render() {\n return (\n (this.root = ref)}\n />\n )\n }\n}\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTcwMTQ1MzIxQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0M2OEY3NDYxQ0MwMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NzAxNDUzMDFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NzAxNDUzMTFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgkMruoAAAZQSURBVHja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\"","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTcwMTQ1MkUxQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTcwMTQ1MkYxQ0JGMTFFOTk4MjQ5RDVBMUMzRTJDNDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NzAxNDUyQzFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NzAxNDUyRDFDQkYxMUU5OTgyNDlENUExQzNFMkM0MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PocaSk0AAAWiSURBVHja5JtrbFVFEMdPLy0WFQlIhSIVER+orRGM9RGDUSGWGohixIioRIuixmpK5BEfgGBiMCGmH0SIGBPU4BcTEkBNK2iMEkJpfIGCBFFqQVAEWtMWcr3+J3eabCZ7zz3n3N09x3aS34fd9OzdmTO7Z2Z2W5TJZDyLUgzuAFNANbgMXABSgH74MNgHdoAm8DlIew6lyJIBhoN68AQrHFTawWrQCE45sQAZwCApUA9OZgqTY2CO4blpMekB9NY/YHfPJT2gDXSCwaAClPj8/UbwsFVvMGTJS8DPOd7m92A+qGQPUZ8bAK4Fi8Fen+fLbHmAiUFGgv2aie8DtaAoxPKZCX7VjLUbDEmiAUrAds2E14LSiGMOBhs0Y34awpjODPCKZqIvGJgYKbpKM/ZzSTLAONAjJthocHJkhPVi/A5QnhQDvCsmt4uXhMk3dI5mc30jCZ/BMg5aipW+GzmiMy21YLPS7gDl4B8Tg6ciPjdTKN9kSXmSLaBFaVP8MN3U4FENUCPab1sOWN8R7alx5wLHOPIj+RcMAyctGmAMOKi0KYG6Ii4DkLJ/Ke2fwJUO0pajvPf0Gn03OI/DatqPvgVbQTM4YzMUHi925S0ukhawI2AidRQs4YAq77hR9oBS0T7tKHXvCvGFWsqeWWtyExwAbgWPiv4SLz7xc/VR/Pl8qdAlQDH9AtCWw+X2OFoCTWAbZ5bVYBD3DwTXgAbOHHWyLGokWO2T5vbKGXCWAwMMDBg+PwiOa+Z5f1gDzACnA248Ex15QVDGaFL0v8GIoKHwZI7A5Po+AN7nz007b4AUmf1mOQ6IIlRt2glGKH1rwLx8e0AZ1+RU6QLPWkh2bDNN6EHZ6/n5lsA68VAnuNngpGi/uNChEb4Q+szziwNGg0dE32Pga0NuWcUhbRt/ooocLIW3RHuK3xJYJKy11eCbKAatYvwJDjxgmPjNA34eMFm0Gw2+iYVggghiDjvwgOPgiNK+yM8D1M0vrQQbhXKVpny21OE+IGOZnJ9BtXGEKy+FCoXQX4EblD7K5K7jgxIX0q7oklaLOamIcXYYaRDK0wTmOFR+qHiRh/ySIfUIaqQoe0UROg1eJvpWiRKXbZFHdd/4GWCPyPImFVhuo1LWIKVvL3jZcUT4uGh/5meAbaJdV8APPwVuEfsLxRTdDpWv4fsJ6rL+0O8rUKlJdG6KsOuO5QjSWj0/AKNAu5jDmiDZ4Gbx0CFQEfJEp1kTfJztUPkKTW3glO5UKVfNr1s8TJa8PeCPz9V40W0OlZ/BdUEps8PUA+py5P3kHfdxeKl7bjRbWpXVlhWmY/VLwZOgJce8V0apCC3KUwRp5QsO6jObMoVLi88BKOUTO8EJhZ48463wO1bPZ91ZmjfaK3JJVGXMyfIc82kIMQYtg3tNnA5X8EmwWh57L8dxuSl5XjN+uc/LkKWv18BQ06fDFBnezd/2+eAPzd/UcckpTARZJeIRClWv5lNgVd4EszTheic/8x0HOR+HiTVs3RMMKveAj0TfXVyPdCJxGmAI+FEkKhvAAy4nkYrx7a8UylPhot71JOIywCRNktLAx+5OJY4lUMpH2Zcrfc2e/w3TPuUBLwrluzTe0GcNUMXFUVXo9PaXuAzgcglQbXA7uF7p28XlsnR/8IB6oXyaA6fYlHdpgIvBctH3uqzP9eUl8Am4U2nv5/2gO24DuPCAh4TyJHOToLwLDyjjSvNwpW9dgcXW/5UB1oPZSpsyyPHgRFIMYHMJ1AjlSZ5OkvI2PeBcL3v+p57EbuR6QqLElgesEMp38Nv3+oMB6D9EnxF9C8DvSTSA6SVA54mtoFLp+9LL3jDN9AcPWCiU7+FML5HKmzYAbXyLRd+rXvbScmLF9L/O0p3+3ptfP4CJnrmLFon3gD/BEi97e/Sgly1hJ1p5kv8EGADvGbJcbCiGBAAAAABJRU5ErkJggg==\"","import React, { useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nconst Section = ({ children, bodyBackgroundColor }) => {\n const containerRef = useRef()\n\n useEffect(() => {\n const handleScroll = () => {\n const elementRect = containerRef.current.getBoundingClientRect()\n // Magic number 100\n const elementTop = elementRect.top - window.innerHeight + 200\n\n if (\n elementTop < 0 &&\n elementTop < 0 + elementRect.height &&\n document.body.style.backgroundColor !== bodyBackgroundColor\n ) {\n document.body.style.backgroundColor = bodyBackgroundColor\n } else if (elementTop > 0) {\n document.body.style.backgroundColor = null\n }\n }\n\n window.addEventListener('scroll', handleScroll)\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n return
{children}
\n}\n\nSection.propTypes = {\n bodyBackgroundColor: PropTypes.string,\n children: PropTypes.any,\n entered: PropTypes.bool,\n}\n\nexport default Section\n"],"sourceRoot":""}